Troubleshooting EPS Image Upload Errors

When uploading additional product images to eBay Picture Services (EPS), you may encounter validation errors that prevent your gallery images from appearing on your listings. This guide will help you resolve these issues quickly.

Update (October 2026): eBay has retired the underlying upload API (UploadSiteHostedPictures) that EPS depends on. Measured 2026-10-28 against a live eBay account: UploadSiteHostedPictures now returns HTTP 404 (confirmed via a control call on the same connection returning a normal 200, so this isn't a network or account problem on our end). Our previous check on 2026-10-06 still showed it working normally, so the actual cutover happened sometime between those two dates — later than eBay's original September 30, 2026 announcement, but it has now happened. Existing listings with images already cached by WP-Lister are not affected — WP-Lister reuses the cached eBay image URL and does not re-upload it. The problem only shows up on new listings or images you've just changed. Do not clear your EPS cache as a troubleshooting step right now (see Step 3 below) — since uploads are confirmed failing, clearing the cache forces a re-upload that is guaranteed to fail, which can turn a working listing into a broken one.

Update (October 30, 2026) — revising an existing listing can delete its gallery, not just fail to add new photos: Since the October 28 retirement, any revise (the "Revise items" bulk action, a profile re-apply followed by Revise, or any WooCommerce edit that triggers WP-Lister to resend the listing) rebuilds the entire picture list and sends it to eBay again — and depending on your "Upload to EPS" mode, that rebuilt list can hold far fewer photos than your real gallery, in some cases just one. eBay replaces your existing gallery with whatever WP-Lister sends, so a revise can shrink a multi-photo gallery down to a single picture, or in modes "No" / "Upload only main image" down to one picture on every revise regardless of this issue. If a listing's photos were added directly on eBay (not through WooCommerce), or the WooCommerce product has no images at all, a revise can remove them with no fix available — WP-Lister has nothing to send in their place. Until our fix ships: avoid the "Revise items" bulk action and avoid switching "Upload to EPS" to "No" on any listing with more than one photo. One kind of update remains completely safe: a plain stock/quantity change — the kind that happens automatically after a sale — goes out through a separate, narrower API call that cannot carry picture data at all. Those never touch your gallery, with or without this issue, so you do not need to pause normal order processing while this is open.

Two different settings share the letters "EPS". They do different things, and only one of them can cost you photos:

EPS transfer mode (Settings → Developer) — Active or Passive. This chooses how an image is handed to eBay. Changing it is harmless, and right now it changes nothing, because both modes use the same upload call.

Upload to EPS (listing profile → Images) — No / Upload all images / Upload first 24 images / Upload only main image. This chooses whether images are uploaded at all. Setting it to "No" without the filter described below will reduce an existing gallery to its main picture on the next revise.

When support asks which setting you changed, it is this distinction they need.

Common Error Messages

You may see error messages like these during listing validation or revision:

English

  • "Error: Copying 'ExternalPictureURL' failed"
  • "Retrieving the file from the server specified in 'ExternalPictureURL' failed"
  • "You need to add at least one image to your product"
  • "ExternalPictureURL server not available"

German (eBay.de)

  • "Error: Kopieren von 'ExternalPictureURL' fehlgeschlagen (#21916545)"
  • "Das Abrufen der Datei von dem unter 'ExternalPictureURL' angegebenen Server ist fehlgeschlagen"
  • "You need to add at least one image to your product"

Other Languages

Error messages will appear in the language of your eBay site (eBay.de shows German, eBay.fr shows French, etc.). These are returned directly from eBay's API.

Also seen as a malformed-XML / parsing error

  • "(#90001) XML error on line 1 col 1 byte 0 Not well-formed (invalid token)"

Added 2026-11-03: Two customers hit this instead of a plain "resource not found" error. Since the EPS upload endpoint retirement (see update at top), the dead endpoint returns a plain-text response instead of valid XML, so WP-Lister's XML parser reports it as malformed XML (#90001) rather than a clean upload error. It's the same underlying cause as the other EPS symptoms on this page, not a separate issue.

Common error codes: #21916545, #21916543, #21916587, #90001

What's Happening

When you enable "Upload to EPS" in your listing profile, WP-Lister uploads your product gallery images to eBay's servers. During this process, eBay attempts to download the images from your website using FTP (File Transfer Protocol).

Sometimes this upload fails because:

  • eBay cannot connect to your server using the default FTP transfer mode
  • Your hosting environment doesn't support passive FTP mode
  • Your SSL/HTTPS configuration isn't compatible with eBay's requirements
  • eBay's EPS upload API itself is currently retired (see the update at the top of this article)

Important: Usually the main product image uploads successfully - it's the additional gallery images that fail.

Quick Solution: Change EPS Transfer Mode

Suspended while the upload outage lasts. The steps below ask you to re-apply a listing profile and revise your listings. Do not do that right now. As explained at the top of this article, a revise rebuilds the entire picture list, so on a listing that currently shows several photos it can come back with a single one. Re-applying a profile triggers a revise across every listing that uses it. Both steps are safe again once the replacement upload path has shipped; this notice will be removed at that point.

The most common fix is to switch from Passive to Active FTP mode:

Step-by-Step Instructions

  1. In WordPress admin, go to WP-Lister → Settings
  2. Click the Developer tab (not Advanced - that's a different tab)
  3. Scroll down to Debug Options section
  4. Find the EPS Transfer Mode setting
  5. Change from "Passive (default)" to "Active"
  6. Click Save Changes
  7. Return to your listings and Revise them to upload images again

Note (added 2026-10-28): With EPS currently retired (see update at top), switching transfer mode will not help a brand-new upload succeed — both modes go through the same now-dead API call. This step still applies to the classic FTP-connectivity causes below; it just isn't the fix for the current retirement.

Why This Works

FTP (File Transfer Protocol) has two modes:

Passive mode (default): The client (your server) initiates both the command and data connections. Works in most cases but can fail on certain hosting configurations.

Active mode: The server (eBay) initiates the data connection back to the client. Often works when passive mode fails due to firewall or hosting restrictions.

By switching to Active mode, you're telling eBay to use a different connection method that's compatible with your hosting environment.

Additional Troubleshooting Steps

If changing the EPS Transfer Mode doesn't resolve the issue, try these steps in order:

1. Verify Your Images Are Accessible

Make sure your product images are:

  • Publicly accessible (not behind authentication)
  • Using HTTPS (secure URLs)
  • Not blocked by security plugins or firewall rules
  • Properly sized (eBay recommends at least 500px on the longest side)

Test: Open your product image URLs directly in a browser from a different device to confirm they load.

2. Check Your SSL/HTTPS Configuration

eBay requires secure HTTPS connections for image uploads. Verify:

  • Your site has a valid SSL certificate installed
  • All image URLs use https:// not http://
  • Your SSL certificate is not self-signed (use a trusted CA like Let's Encrypt)
  • Your SSL configuration passes basic security checks

3. Clear EPS Cache

⚠ Do not use this step right now. Measured 2026-10-28: eBay's UploadSiteHostedPictures API is returning HTTP 404 — EPS image uploads are currently failing across the board, not just for isolated accounts. Clearing the EPS cache forces a fresh re-upload on the next revise, and that re-upload is now guaranteed to fail. If your galleries already display correctly on eBay today, clearing the cache will make the images disappear instead of fixing anything. Skip this step until this article says otherwise.

Cached data can occasionally cause issues:

  1. Go to WP-Lister → Tools
  2. Click Inventory tab
  3. Select Clear EPS cache
  4. Perform a Deep image scan
  5. Try revising your listings again

4. Verify Gallery Images Exist in WooCommerce

Confirm your WooCommerce products actually have gallery images assigned:

  1. Edit your product in WooCommerce
  2. Scroll to Product Gallery section
  3. Ensure multiple images are added
  4. The first image is your main product image
  5. Additional images should appear as thumbnails

Note: WP-Lister uploads the product gallery images - not just any images attached to the product post.

Suspended while the upload outage lasts. The steps below ask you to re-apply a listing profile and revise your listings. Do not do that right now. As explained at the top of this article, a revise rebuilds the entire picture list, so on a listing that currently shows several photos it can come back with a single one. Re-applying a profile triggers a revise across every listing that uses it. Both steps are safe again once the replacement upload path has shipped; this notice will be removed at that point.

5. Test with a Single Product

To isolate the issue:

  1. Choose one simple product with 2-3 gallery images
  2. Apply your listing profile with "Upload to EPS" enabled
  3. Try to revise/verify the listing
  4. Check for specific error messages

This helps determine if it's a configuration issue (affects all products) or a product-specific problem.

When Main Images Also Fail

If even your main product image isn't uploading, this usually indicates a more serious connectivity issue:

  1. Check your hosting firewall: Some hosts block eBay's servers by default
  2. Contact your hosting provider: They may need to whitelist eBay's IP ranges
  3. Temporarily disable security plugins: Some security plugins block external connections
  4. Check if your site is behind Cloudflare: May require specific configuration

eBay's EPS upload API retirement — current status

eBay has retired the Trading API call (UploadSiteHostedPictures) that EPS image uploads rely on. Measured 2026-10-28 against a live eBay account: UploadSiteHostedPictures now returns HTTP 404, confirmed via a control call on the same connection that returned a normal 200 (ruling out a network or account-side issue on our end). This follows eBay's original September 30, 2026 retirement announcement; our last check on 2026-10-06 still showed it working normally with HTTP 200 and a retrievable image URL, so the actual cutover happened sometime between 2026-10-06 and 2026-10-28.

What this means for you:

  • Existing listings with images already cached by WP-Lister are not affected by simply existing. WP-Lister reuses the cached eBay image URL and does not re-upload it on a normal sync. Your current live listings keep their images — unless they get revised; see the October 30 update at the top of this article for what a revise can do.
  • New listings, or any image you change or add, cannot be uploaded to EPS anymore. The main product image falls back to your own site's image URL directly, so the listing itself should still go through — but additional gallery images beyond the main one will usually be missing on a new listing. This also applies to revising an existing listing — see the October 30 update at the top of this article for what that can do to a gallery you already have live.
  • Do not clear your EPS cache and do not switch "Upload to EPS" to "No" on a listing with more than one photo. Both make things worse right now: clearing the cache forces a re-upload that's guaranteed to fail, and switching the setting to "No" drops existing galleries down to a single picture on the next revise.
  • Plain stock/quantity updates (e.g. automatic syncs after a sale) are not affected and do not need to be paused — they use a different, narrower API call that never includes pictures.

What you can do now — new listings only

There is a workaround that puts your additional photos onto new listings while the proper fix is still in development. It sends your gallery images as URLs on your own shop instead of uploading them to eBay.

Add this to a small site-specific plugin (or your theme's functions.php):

add_filter( 'wple_filter_listing_item', function( $item, $listing, $profile, $product_id, $reviseItem ) {
    // Revise: send no picture data, so eBay keeps the photos already there.
    if ( $reviseItem ) {
        $item->setPictureDetails( null );
        return $item;
    }
    // New listing: append your own shop's gallery URLs.
    $pic = $item->getPictureDetails();
    if ( ! is_object( $pic ) ) { return $item; }
    $existing = (array) $pic->getPictureURL();
    foreach ( (array) $listing->getImages( true ) as $url ) {
        if ( count( $existing ) >= 24 ) { break; }
        $url = wple_encode_url( $url );
        if ( in_array( $url, $existing, true ) ) { continue; }
        $pic->addPictureURL( $url );
        $existing[] = $url;
    }
    return $item;
}, 10, 5 );

Four conditions, and the order of the first one matters:

  1. Add the filter first, and only then set "Upload to EPS" to "No". That order matters: with the filter already in place, a new listing goes out with its full gallery straight away. The other way round, listings created in between go out with a single photo. The two belong together — "No" on its own also produces eBay error 20004, because eBay refuses a mixture of self-hosted and eBay-hosted pictures in one listing.
  2. This is for new listings. The snippet deliberately sends no picture data at all on a revise, so a revise you did not ask for — the kind a price or stock change triggers by itself — cannot rebuild an existing gallery. Deliberately converting your pre-outage listings over to self-hosted images is a separate question and has not been measured: do not do that yet.
  3. eBay allows 24 pictures per listing; the snippet stops there. Going over returns error 10115.
  4. Test one new listing, not a batch — and judge it by the live listing on eBay a couple of minutes later, not by WP-Lister reporting success. The API response is not proof the gallery arrived.

One limit, so it is not a surprise: these photos are served from your own site, not from eBay's. In one case we measured, a listing whose pictures were self-hosted did not receive a thumbnail in eBay's own search results. Whether that is a reliable consequence or something narrower is still being checked.

The filter has to be removed again once the proper fix ships, or listings would carry duplicate pictures. This is not a supported feature — it is verified against the plugin source and is running at a number of sellers, but use it at your own discretion.

We are working on a fix that removes the dependency on EPS for new images, and a separate fix to stop revises from shrinking existing galleries. This article will be updated again once either ships.

Status (October 30, 2026): a replacement upload path has been tested successfully against a live account, and the revise-safety fix is in progress. Neither has shipped yet, and we don't have a release date to share. If you're seeing missing gallery images and want us to double check your specific case, contact support and reference this article.

Error Codes Reference

Error Code Description Typical Solution
21916545 EPS transfer failed (file retrieval) Switch to Active mode
21916543 EPS upload failed Switch to Active mode, check SSL
21916587 Invalid picture URL Verify HTTPS, check SSL certificate
90001 XML parsing error (malformed response) Same root cause as EPS retirement above, not a separate bug — see update at top
10019 Inconsistent shipping parameters Unrelated to images - shipping config issue

Still Having Issues?

If you've tried all the steps above and are still experiencing problems:

1. Gather Diagnostic Information

  • Exact error message (including error code)
  • Your hosting provider
  • Whether SSL/HTTPS is properly configured
  • Screenshots of the error in WP-Lister

2. Contact WP Lab Support

  • Email: support@wplab.com
  • Include your diagnostic information
  • Mention you've already tried changing EPS Transfer Mode
  • Reference this documentation article

We're here to help! Most EPS upload issues can be resolved quickly once we understand your specific hosting configuration.


Pro Tip: If you're just starting with WP-Lister Pro and planning to use EPS, be aware that EPS uploads for new images are currently not working (see update at top) until our fix ships.

Still need help? Contact Us Contact Us