*Extensions › ShipStation*

# ShipStation Extension

Paid orders go to ShipStation on their own, and every shipment comes back to the order with its tracking number. Add an API key to buy labels from the order screen, show ShipStation rates at checkout and keep stock in step. 17 parts.

Quick links

- [Before you start](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#setup)
- [Connect ShipStation](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#connect)
- [Moving from the classic connection](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#classic)
- [Orders](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#orders)
- [When ShipStation ships](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#shipping)
- [Following an order](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#following)
- [Subscriptions](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#subscriptions)
- [International orders and customs](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#customs)
- [Labels, rates and stock ( API v2 key )](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#api)
- [Buying a label from an order](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#buying)
- [Rates at checkout](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#rates)
- [Stock from ShipStation](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#stock)
- [Import right away ( API v1 key )](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#import)
- [Activity](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#activity)
- [Troubleshooting: connecting](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#troubleshooting)
- [Troubleshooting: orders, keys and labels](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#troubleshooting-orders)
- [Good to know](https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/#faq)

**Where to find it:** WP Admin › EasyCart › Extensions › ShipStation

*Quick start*

## Set up in four steps

The short version. Each step is covered in detail below.

1. **Install**: On EasyCart › Extensions, install ShipStation. It comes with your Premium license and installs WP EasyCart Premium with it.

2. **Add the Custom Store**: Make a password on the ShipStation page, then add your store to ShipStation as a Custom Store with the URL, username, password and five status words.

3. **Add the API v2 key**: Recommended, for labels from the order screen, rates at checkout, stock and delivery updates. ShipStation › Settings › Account › API Settings.

4. **Check it works**: The store feed turns Connected after ShipStation’s first import, and Activity lists it. Place a test order and watch it arrive.

### Three ways to connect, one needed

- 🔗 **The store feed**: Required. ShipStation reads paid orders from your store and posts every shipment back. No API key, nothing expires.

- 🏷️ **API v2 key**: Recommended. Labels from the order screen, live rates at checkout, stock from ShipStation Inventory and delivery updates. Does not expire.

- ⚡ **API v1 key**: Optional. ShipStation imports each paid order straight away instead of every couple of hours. Expires after 3, 6 or 12 months.

*Getting started*

## Connect ShipStation

What you need, the store feed ShipStation reads, and which orders it gets.

### Before you start

What the extension needs, your ShipStation plan, and where to find it

**What you need**

**A WP EasyCart Premium license.** ShipStation is a Premium extension. Install it from EasyCart › Extensions › ShipStation; that also installs WP EasyCart Premium, which keeps your API keys and delivers the extension’s updates.

**WP EasyCart 6.0.2 or newer** and **WP EasyCart Premium 1.1.0 or newer.** Rates at checkout also need **WP EasyCart PRO 6.0.2 or newer**.

**A ShipStation account** on a plan that can connect a Custom Store. The API keys ( optional ) need a plan that includes ShipStation’s API: the Standard plan or higher on ShipStation’s current plans, or Accelerate or higher on older ones. If yours does not, the key’s status says **Plan without API**.

**Where to find it**

WP Admin › EasyCart › Extensions › ShipStation. The top of the page is a checklist: each part of the setup is marked done, or says what to do next. The same reminders show on other EasyCart screens until the setup is finished.

**Which parts you need**

**The store feed** is all most stores need: paid orders go to ShipStation and every shipment comes back with its tracking number. It needs no API key and nothing expires. **The API v2 key** ( recommended ) adds labels from the order screen, rates at checkout, stock and delivery updates. **The API v1 key** ( optional ) only makes ShipStation import each order straight away instead of on its own schedule.

> **💡 Note:** Your API keys are kept, encrypted, by WP EasyCart Premium. If Premium is deactivated, everything that needs a key pauses until it is active again. The store feed keeps working without any key.

### Connect ShipStation

ShipStation reads your orders from this store as a Custom Store and posts each shipment back. No API key, and nothing that expires.

**Add your store to ShipStation.** Open **Custom Store details ( URL, username, password ) and help** at the top of the ShipStation page, then:

1. Press **Make a new password**. The password shows once, in the details. It is the store feed’s own password, not your ShipStation or WordPress password.
2. In ShipStation, open **Settings › Selling Channels › Store Setup**, press **Connect a Store or Marketplace** and choose **Custom Store**.
3. Fill in ShipStation’s **URL to Custom XML Page**, **Username** and **Password** with the Copy buttons. Paste the URL whole, including everything after the “?”. Leave ShipStation’s other boxes as they are.
4. Type the five status words into ShipStation’s matching boxes, exactly as shown below.
5. Press **Test Connection**, then **Connect**. Turn on automatic import for the store if ShipStation asks.
6. Back on the ShipStation page, the store feed turns **Connected** once ShipStation has read it, and Activity lists the import.

**The status words.** ShipStation matches them exactly, so type them as shown.

| ShipStation box | Type |
| --- | --- |
| Unpaid Status | unpaid |
| Paid Status | paid |
| Shipped Status | shipped |
| Cancelled Status | cancelled |
| On-Hold Status | on_hold |

**Status**

The checklist shows **Orders: the store feed** as **Not set up**, **Waiting for ShipStation** ( saved, not read yet ), **Connected** ( with when ShipStation last read the feed and the last shipment back ) or **Quiet** ( ShipStation has not read the feed for six hours ). Below it, **Labels, rates and stock: the API v2 key** shows **Recommended** until a key is added, then **Working**.

**Only answer over HTTPS** ( default: On; advanced setting )

The feed sends customer names and addresses, so it refuses plain http:// requests. Turn it off only on a site without HTTPS.

**Check the connection** ( a button )

**Check now** logs in to the feed the way ShipStation does and reads the answer ShipStation would get, so it finds a page cache, a security plugin, a redirect or another plugin that spoils the answer. It runs from your own site, so a firewall that blocks only ShipStation does not show here: look in Activity right after a Test Connection instead.

**New password** ( a button )

**Make a new password** makes the password ShipStation logs in with and shows it once. Only a scrambled copy is kept, so a lost password means making a new one. The old password stops working at once, so paste the new one into ShipStation straight away. It also ends the 15-minute wait after too many wrong passwords.

**Switch to the store feed now** ( a button )

Only on a store upgraded from version 1. **Switch now** stops sending orders the classic way; see Moving from the classic connection below.

![Connect ShipStation: the store feed connected and the API v2 key working.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-01-connect-status.png)

![Custom Store details: the three boxes to copy into ShipStation, the five status words, and what each Test Connection error means.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-02-custom-store-details.png)

> **💡 Note:** Test Connection failed? See **Troubleshooting** at the end of this guide: each ShipStation error, what causes it and the fix.

### Moving from the classic connection

For stores that used version 1 of the extension

**What happens after the update**

Version 1 sent each paid order to ShipStation with your API v1 key. After the update that **classic connection** keeps running, so no order is missed while you add the Custom Store, and the checklist shows a third line, **Classic connection ( API v1 key, from 1.x )**, with what to do next.

**When it switches**

Add the Custom Store as described above. The switch happens on its own once ShipStation has read the store feed twice, at least ten minutes apart, or when you press **Switch now**. If your API v1 key has already stopped working ( ShipStation’s v1 keys expire ), the switch happens as soon as ShipStation first reads the feed.

**No order lost, none twice**

Orders the classic connection already sent stay in the ShipStation store they went to. Orders it never got into ShipStation are sent through the store feed at the switch, so none are left behind, and no order arrives twice.

**After the switch**

The API v1 key becomes optional: it only makes ShipStation import right away. Keep it, or remove it with **Remove the key** in Import right away. Your other settings carry over.

### Orders

Which orders ShipStation sees, and what it gets. Orders with nothing to ship ( downloads, gift cards ) never go, and items a print-on-demand partner makes and ships itself are left out.

**Statuses that count as paid** ( default: Every paid status )

Orders in these statuses wait in ShipStation’s Awaiting Shipment. Pick none to use every paid status except the shipped ones and Ready for pickup.

**Statuses held in ShipStation** ( default: 2 statuses )

Orders in these statuses wait in ShipStation’s On Hold, so nobody ships them yet. By default: Order on Hold and Pending Approval.

**Statuses cancelled in ShipStation** ( default: 4 statuses )

An order moved to one of these is cancelled in ShipStation, so nobody ships it. An order deleted in EasyCart is cancelled there too. By default: Card Denied, Third Party Error, Refunded Order and Order Cancelled.

**Send unpaid orders** ( default: Off )

Unpaid orders ( bank transfer, pending payments ) show in ShipStation’s Awaiting Payment. Off: an order appears once it is paid.

**Leave out local pickup orders** ( default: On )

Orders the customer collects from the store stay out of ShipStation.

**Order number prefix** ( default: None )

Shown before the order number in ShipStation. WEB- shows order 1042 as WEB-1042.

**Order key prefix ( unique per store )** ( default: Made for you; advanced setting )

Keeps this store’s orders apart from other stores on the same ShipStation account. One is made for you. Changing it makes ShipStation see every order as new.

**ShipStation custom field 1** ( default: Coupon code )

What goes into ShipStation’s custom field 1: Nothing, Coupon code, PO number, Payment method, Payment terms, EasyCart order ID, Customer notes ( first 100 characters ), Gift recipient email, or Subscription and shipment number. Custom fields show in ShipStation’s order grid, and its automation rules can use them.

**ShipStation custom field 2** ( default: PO number; advanced setting )

The same choices, for custom field 2.

**ShipStation custom field 3** ( default: Payment method; advanced setting )

The same choices, for custom field 3. By default it shows how the order was paid, such as **visa** or **paypal**.

**Send product images** ( default: On )

Pickers see each item’s picture in ShipStation and on packing slips.

**Send discounts as a line** ( default: On )

The order’s discount shows as its own line, so ShipStation’s totals match the order.

**Send the order’s private notes** ( default: Off )

Your team’s private notes on the order go to ShipStation’s internal notes. The customer’s notes always go.

**Send the last 30 days again** ( a button )

**Send again** marks every order from the last 30 days as changed. ShipStation reads them again on its next import and updates what it has. Use it after changing the settings above.

**What ShipStation gets**

For each order: the order number and date, its status, the shipping method the customer chose, the payment method, the order total with tax and shipping, the customer’s email and phone, the billing and shipping addresses, the customer’s notes, a gift message, the three custom fields, and each item with its SKU, name, chosen options, quantity, price, weight and picture. Weights go in the store’s own weight unit. Edits, cancellations and refunds reach ShipStation on its next import.

![Orders: which orders ShipStation sees, and what it gets.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-03-orders.png)

> **⚠️ Careful:** Leave the order key prefix alone once ShipStation has your orders. A new prefix makes every order look new to ShipStation, and they arrive a second time.

*Everyday shipping*

## Shipments come back

What happens when ShipStation ships, how to follow an order, monthly boxes and customs.

### When ShipStation ships

Each shipment comes back to the order with its items, carrier and tracking number.

**Who emails the customer** ( default: EasyCart )

EasyCart sends your shipped email with the tracking link as each shipment comes back. Choose ShipStation to use ShipStation’s own shipping email instead. The extension never sends both.

**Mark the order shipped** ( default: On )

Moves the order to Shipped once everything in it has shipped. When only part of an order ships, the order screen and the email show what went, and the status waits for the rest.

**How shipments come back**

A label bought in ShipStation posts the shipment back to the order: carrier, service, tracking number and the items in the box. If you mark an order shipped by hand in ShipStation, keep **Notify Marketplace** ticked so the shipment comes back too. ShipStation packs its own way, so the items it shipped become one package on the order, and whatever is left keeps waiting.

![When ShipStation ships: who emails the customer.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-04-when-shipstation-ships.png)

> **💡 Note:** If you keep EasyCart as the sender, leave ShipStation’s own customer emails off for this store, so customers get one email, not two.

### Following an order

The ShipStation card, the orders list and Send to ShipStation again

**The ShipStation card**

Every order screen has a ShipStation card. It says whether the order is **In ShipStation** and when ShipStation last read it, **Waiting for the next import**, or **Not sent** and why: local pickup, nothing to ship, a print-on-demand partner ships it, not paid yet, a draft, or placed before the store feed took over. A monthly subscription order lists each box with its date.

**Send to ShipStation again**

**Send to ShipStation again**, on the card and in the order’s More menu, marks the order changed so ShipStation reads it again on its next import, or straight away with an API v1 key. Edits, cancellations and refunds reach ShipStation on their own; use it when an order looks out of date there. **Open ShipStation** opens your ShipStation orders.

**The orders list**

The Orders list has a ShipStation column and a filter for **In ShipStation**, **Not in ShipStation yet** and **Not sent**. Tick orders and choose Send to ShipStation again from the bulk actions to resend several at once.

![The ShipStation card on an order: in ShipStation, with a change waiting for the next import.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-05-order-card.png)

### Subscriptions

A subscription paid every 3 months or every year can ship a box every month. Each month becomes its own ShipStation order, held until its date.

**Ship subscriptions monthly** ( default: Off )

**Off**: each payment is one shipment. **Every subscription**: a plan paid every 3 months ships 3 monthly boxes, a yearly plan 12. **Chosen products**: only the products you pick below. Weekly and daily plans always ship with each payment.

**Products that ship monthly** ( default: None )

Shown when Ship subscriptions monthly is Chosen products. Search for the subscription products whose payments cover several months.

**Ship each month on** ( default: The same day as the order )

The same day of the month as the order, or a fixed day from 1 to 28. The first box always ships right away; later boxes wait in ShipStation’s On Hold until their date.

**Cancel the boxes still to come when the subscription ends** ( default: On )

When the customer cancels the subscription, the months not yet due are cancelled in ShipStation. Boxes already shipped are not touched.

![Subscriptions, with monthly shipping off.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-06-subscriptions.png)

### International orders and customs

Where HS codes come from, for labels bought in EasyCart and in ShipStation

**Set them on each product**

In the product editor, open **Shipping**, then **Customs**, and fill in the **HS code**, **country of origin** and **customs description**.

**Labels bought from the order screen**

A label bought from EasyCart’s order screen ( API v2 key ) for a package leaving the country carries a customs declaration built from each product’s HS code, country of origin and value. Nothing more to do.

**Labels made in ShipStation**

ShipStation’s Custom Store connection has no place for customs details, for every store platform that connects this way, so orders arrive in ShipStation without HS codes. ShipStation fills a declaration from its own product list instead: open the product in ShipStation’s **Products** and add its HS code ( harmonized code ) and country of origin once, under the same SKU as in EasyCart. Every later order with that SKU gets them.

*With an API key*

## Labels, rates and stock

Labels from the order screen, rates at checkout, stock, and importing right away.

### Labels, rates and stock ( API v2 key )

Recommended. Buy ShipStation labels from the order screen, show ShipStation rates at checkout, keep stock in step and get delivery updates. There is no test mode: every label is real.

**Status**

**Working** once ShipStation accepts the key, with when it was last used. **Not accepted** shows ShipStation’s own reason; **Plan without API** means your ShipStation plan does not include the API. While delivery updates are not set up, tracking is read back twice a day instead.

**API v2 key** ( default: Empty )

In ShipStation: **Settings › Account › API Settings**, choose **API v2**, press **Generate**, then copy the key. ShipStation shows it only once, and v2 keys do not expire. Saving checks it with ShipStation and keeps it encrypted; the box then shows dots. To replace the key, clear the box before pasting the new one.

**Ship from** ( default: ShipStation’s default )

The ShipStation ship-from location labels and rates at checkout start from. Leave it on ShipStation’s default unless you ship from several. Locations are made in ShipStation under Settings › Shipping › Ship From Locations.

**Label file** ( default: PDF )

The file your labels come as: PDF, PNG image, or ZPL for thermal printers.

**Label size** ( default: 4×6 )

4×6 suits label printers. Letter prints on office paper.

**Delivery updates** ( default: On )

ShipStation tells the order when a package is in transit, out for delivery, delivered or has a problem, and a delivered order can move to Delivered. The updates arrive through WP EasyCart Premium, and tracking is also read back twice a day in case one goes missing.

**Check the key** ( a button )

**Check now** reads your carriers and ship-from locations, and lists them.

**Set up delivery updates again** ( a button )

**Set up** tells ShipStation where to send delivery updates again. You need it after the site’s address changes.

![Labels, rates and stock with an API v2 key that works.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-07-api-v2-key.png)

> **⚠️ Careful:** ShipStation has no test mode. Every label bought from the order screen is real and charged to your ShipStation account, so void a test label straight away.

### Buying a label from an order

Compare your ShipStation carriers, buy and print on the order screen

**Open the label window**

With an API v2 key, ShipStation can buy the order’s label. When it is your only label service, **Buy label** is the main button where you ship the order. With more than one connected, **Buy a label** opens the **Fulfill order** window, which lists each. Each package waiting to ship also has a **ShipStation label** button.

**Choose a rate and buy**

The window shows where the package ships from and to, and what is in it. Check the weight and size, pick a delivery confirmation if you want one, and press **Get rates**: every carrier on your ShipStation account answers, ShipStation’s own discounted ones included, with the cheapest and fastest marked. Leave **Mark the order shipped when every package has a label** and **Email the customer the tracking link** ticked or not, then press **Buy label**. A package leaving the country gets a customs declaration from each product’s HS code and country of origin.

**After buying**

The package carries the tracking number and new buttons:

- **Print label**: opens the label file again.
- **Customs form**: when the carrier made one.
- **Void**: cancels a label you will not use. ShipStation asks the carrier for a refund; USPS refunds can take a few weeks.
- **Return label**: makes a prepaid return label. The carrier charges it when it is used, or however it bills returns.

**Without an API v2 key**

ShipStation’s row in the Fulfill order window opens your ShipStation orders instead. Labels bought in ShipStation still come back to the order through the feed; void those in ShipStation. Packages a print-on-demand partner ships are left to the partner.

![The label window: ship from and to, the package, and every rate with the cheapest and fastest marked.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-08-label-window.png)

### Rates at checkout

Live rates from your ShipStation carriers, including ShipStation’s own discounted ones, as shipping choices at checkout.

**Show ShipStation rates at checkout** ( default: Off )

Each service you choose becomes a live rate, next to the store’s other live rates. Needs the API v2 key, WP EasyCart PRO, and **Live shipping rates** as the store’s rate method under Settings › Shipping. If ShipStation does not answer within 8 seconds, checkout shows your other rates without it. Until the key is added, this section says what it needs instead.

**Services to offer** ( default: None )

The services from your ShipStation carriers to offer. Each one becomes its own live rate, and the status line counts how many are on.

**Markup** ( default: 0% )

Added to each rate, as a percent of it. Up to 500%.

**Handling fee** ( default: 0 )

A fixed amount added to each rate, once per order.

![Rates at checkout, with three ShipStation services offered.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-09-rates-at-checkout.png)

### Stock from ShipStation

Every hour, ShipStation Inventory’s stock is written to the products and option combinations with the same SKU. Only from ShipStation to EasyCart.

**Keep stock in step with ShipStation** ( default: Off )

Needs the API v2 key and ShipStation Inventory on your ShipStation plan. A product must track stock and have a SKU; option combinations match by their own SKU. Nothing is written back to ShipStation, and products a print-on-demand partner makes, or whose stock another service keeps ( such as Square ), are left alone.

**Stock to use** ( default: Available )

**Available** is on hand minus what ShipStation already set aside for orders. **On hand** is everything on the shelf.

**Only this inventory warehouse** ( default: Every warehouse; advanced setting )

A ShipStation inventory warehouse ID, to read only that warehouse. Leave it empty to add up every warehouse.

**Read stock now** ( a button )

**Read now** reads stock straight away instead of waiting for the hourly read. The status line then says how many SKUs ShipStation has, how many changed here, and how many match no product.

![Stock from ShipStation after a read: 4 SKUs, 2 changed here, 1 with no matching product.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-10-stock.png)

### Import right away ( API v1 key )

Optional. ShipStation imports the store feed on its own every couple of hours. An API v1 key makes it import each paid order straight away.

**Status**

**No key** ( optional; everything else works without it ), **Working**, or **Paused** when ShipStation stops accepting the key: v1 keys expire after 3, 6 or 12 months, and orders then still arrive on ShipStation’s own schedule. On a store upgraded from version 1, this section is called **Classic connection ( API v1 key )** until the store feed takes over.

**API v1 key** ( default: Empty )

From ShipStation › Settings › Account › API Settings › API v1 › Generate. Only the account owner can make keys. Kept encrypted; after saving the box shows dots.

**API v1 secret** ( default: Empty )

The secret made with the key. Saving checks both with ShipStation and says if ShipStation turns them down.

**Key expires on** ( default: Empty )

The date ShipStation shows next to the key. Enter it and EasyCart screens remind you two weeks before.

**Import right after each paid order** ( default: On )

After each paid or changed order, asks ShipStation to import the store feed straight away, at most every few minutes.

**ShipStation store** ( default: Find it for me )

The Custom Store you added for this site. Found for you when the account has only one.

**Check the key, Remove the key** ( buttons )

Once a key is saved, **Check now** asks ShipStation for your stores with it, and **Remove the key** stops importing right away; ShipStation keeps importing the store feed on its own schedule.

![Import right away, before an API v1 key is added.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-11-import-right-away.png)

*When something is off*

## Activity and troubleshooting

See every request ShipStation makes, and fix what stops it.

### Activity

Every request ShipStation makes to the store feed, the shipments that came back, and anything that went wrong

**What it lists**

The last section of the ShipStation page lists each request to the store feed: imports ( with how many orders and pages ), shipments that came back ( with the order number ), and refused requests with the reason, such as a wrong username or password, too many tries, or http instead of https. Each line says which program sent it and how its login came. Filter with **All**, **Needs attention** and **From ShipStation**; below, a table lists what changed on your orders and products.

**A browser visit is expected**

Opening the feed link in a web browser asks for a username and password and is refused. That is expected: ShipStation sends the login itself. Activity shows it as sent by a web browser, not as a problem.

**After a Test Connection**

Reload the ShipStation page right after pressing Test Connection in ShipStation. A new line shows what happened. No new line means ShipStation’s request never reached WordPress: a firewall or your host stopped it ( see Troubleshooting ).

**When ShipStation goes quiet**

If ShipStation has not read the feed for six hours, the store feed turns **Quiet**, and EasyCart screens show a notice when orders changed in that time. Check that automatic import is on for this store in ShipStation, then press Check now. The same notices warn you when an API v1 key is about to expire or ShipStation stops accepting a key.

![Activity: a browser opening the link ( expected ), a shipment that came back and an import, then the changes table.](https://docs.wpeasycart.com/wp-content/uploads/2026/10/shipstation-214-12-activity.png)

### Troubleshooting: connecting

What ShipStation’s Test Connection errors mean, and the fix for each

**“(401) Unauthorized”**

The username or password does not match. Press **Make a new password**, then paste the username and the new password into ShipStation again. It is the store feed’s own password, not your ShipStation or WordPress password.

**“Invalid data returned from API” or “Invalid XML”**

ShipStation got something other than the feed. Check that the URL was pasted whole, including everything after the “?”. Then press **Check now**: it names what got in the way, such as a page cache, a security plugin’s block page, a redirect ( http to https, or to www ) or another plugin printing into the answer. If Check now finds nothing wrong, the request is being stopped before it reaches WordPress: reload the page after a Test Connection and look in Activity.

**“(403) Forbidden”, “(503)” or a time-out**

A firewall, a security plugin or your host blocked ShipStation. Security plugins such as All-In-One Security, Wordfence or Sucuri, and host firewalls such as Imunify360 or ModSecurity, can block requests that come from a server instead of a browser. Allow requests to the feed URL in your security plugin, or ask your host to. ShipStation’s server addresses change, so allowing the URL works better than allowing addresses. If it worked before and stopped, check whether the firewall or a blocking rule was switched back on.

**“(429)”**

Too many wrong passwords. ShipStation waits 15 minutes; making a new password ends the wait at once.

**The feed link asks for a username and password in my browser**

That is expected. The feed only answers ShipStation, which sends the login itself.

**The store feed says Quiet**

ShipStation has not read the feed for six hours. In ShipStation, check that automatic import is on for this store, or press **Update All Stores** on the orders screen; then press Check now on the ShipStation page.

### Troubleshooting: orders, keys and labels

When an order, a shipment, a key, a rate or stock does not do what you expect

**An order is not in ShipStation**

Open the order: its ShipStation card says why, such as not paid yet, local pickup, nothing to ship, a partner ships it, or a draft. If it says Waiting for the next import, ShipStation has not imported since: press **Update All Stores** in ShipStation, or add an API v1 key to import right away.

**A shipment did not come back to the order**

Look in Activity for “Shipment for order”. A failed one says why, such as an order this store does not know ( check the order key prefix was not changed ). For an order marked shipped by hand in ShipStation, keep Notify Marketplace ticked.

**Customers get two shipped emails**

Pick one sender in **Who emails the customer**, and turn ShipStation’s own customer emails off for this store if EasyCart sends them.

**International orders have no HS codes in ShipStation**

Buy those labels from EasyCart’s order screen, or add the HS codes to ShipStation’s product list; see International orders and customs above.

**Weights look wrong in ShipStation**

Weights go in your store’s weight unit. Check it, and each product’s weight, in WP EasyCart.

**The API v2 key is Not accepted**

Copy it again from ShipStation: it shows the key only once, so generate a new one if needed. If ShipStation’s Copy button does not copy, select the key and copy it with Ctrl+C ( Cmd+C on a Mac ). Clear the box before pasting.

**The key says Plan without API**

Your ShipStation plan does not include the API. Labels, rates and stock need a plan with it; the store feed works without it.

**No ShipStation rates at checkout**

Check that the key is Working, that WP EasyCart PRO is active, that Live shipping rates is the store’s rate method, and that services are chosen in Rates at checkout. ShipStation must answer within 8 seconds.

**Stock did not change**

The product must track stock and have the same SKU as in ShipStation ( option combinations match by their own SKU ), and your ShipStation plan must include Inventory. The status line counts the SKUs that match no product.

### Good to know

Several stores, updates, and what happens to orders already in ShipStation

**Several stores on one ShipStation account**

Add each store as its own Custom Store. Each store has its own order key prefix, so their orders never mix.

**Updates**

ShipStation updates come through WP EasyCart Premium, on the Plugins screen and on EasyCart › Extensions.

**Edits, refunds and deleted orders**

Changes to an order reach ShipStation on its next import. A refunded or cancelled order is cancelled in ShipStation, and so is an order deleted in EasyCart.

**Stopping**

Orders already in ShipStation stay there. To stop new ones, remove the Custom Store in ShipStation, then deactivate the extension.

*Keep going*

## Related guides

- [Order Management](https://docs.wpeasycart.com/docs/administrative-console-guide/order-management/): Where each order’s packages, labels and tracking live.
- [Shipping settings](https://docs.wpeasycart.com/docs/administrative-console-guide/shipping-settings-and-setup/): Packages, the rate method and live rates.
- [Shipping rates](https://docs.wpeasycart.com/docs/administrative-console-guide/shipping-rates/): The rates your checkout offers.
- [Inventory and shipping](https://docs.wpeasycart.com/docs/administrative-console-guide/product-inventory-shipping/): Stock tracking, SKUs, weights and customs details.
- [Installing extensions](https://docs.wpeasycart.com/docs/extension-guides/installing-all-extensions/): How Premium extensions install and update.

## ShipStation comes with WP EasyCart Premium

Premium includes every WP EasyCart extension: ShipStation, Stamps.com, Shippo, QuickBooks, AvaTax and more, with updates and priority support.

[Get WP EasyCart Premium](https://www.wpeasycart.com/premium/) · [See what Premium includes](https://www.wpeasycart.com/premium/)

![The WP EasyCart admin: orders and offers](https://docs.wpeasycart.com/wp-content/uploads/2026/09/cta-wpeasycart-pro-v2.jpg)

---

Source: https://docs.wpeasycart.com/docs/extension-guides/shipstation-extension/ ( updated 2026-10-19 )
