ShipStation
The ShipStation integration sends fulfillment orders from Endless Commerce to ShipStation and receives shipment updates from ShipStation.
Setting up the integration
Before creating the integration, make sure you have:
- a ShipStation API key and API secret
- a ShipStation store that accepts manually created orders
- the carrier accounts and services you plan to use
- a ShipStation warehouse for each Endless building that needs its own ShipStation warehouse
In the ShipStation integration settings:
- Enter the API key and API secret.
- Fetch the available stores and select the default store that should receive orders.
- Enable the carrier account types that are connected in ShipStation.
- Fetch the available warehouses and map them to the corresponding Endless buildings.
- Subscribe to webhooks so ShipStation can send shipment updates back to Endless.
Carrier account settings
ShipStation can expose different carrier codes for an account you connected directly and a carrier provided through ShipStation. For example, FedEx and FedEx Walleted are separate carrier account types.
The carrier settings in Endless must match the accounts enabled in ShipStation:
- enable FedEx when your own FedEx account is connected
- enable FedEx Walleted when FedEx is available through ShipStation
- enable both when both account types are available
Follow the same rule for UPS and DHL. A service name can be valid while still failing if Endless sends it with the wrong carrier account type.
Default store and sales channel overrides
The store selected on the ShipStation integration is the default destination for orders. A sales channel can override that store through its integration mapping.
Use a store intended to receive manually created orders, such as Manual Orders. Do not route orders to utility stores such as Rate Browser. These stores can appear as active when you use Fetch Stores, but they may not accept orders through ShipStation's create-order API.
When troubleshooting, compare the store selected on the integration with any ShipStation mapping on the order's sales channel. Removing the sales channel mapping makes the integration fall back to its default store.
Troubleshooting rejected orders
“ShipStation rejected order: no orderId returned”
This message means Endless sent the request, but ShipStation's response did not contain the orderId that confirms an order was created. ShipStation also did not return a more specific error message.
The message does not prove that the address is invalid or that the API key is expired. Check the integration configuration before changing the order.
Work through these checks:
- Check how many orders are affected. If unrelated orders and addresses fail together, investigate shared integration settings before order data.
- Verify the connection. Confirm that Endless can fetch ShipStation stores, carriers, services, and warehouses. Successful responses are strong evidence that the API credentials are accepted.
- Check the destination store. Confirm that the order is going to the integration's default manual-order store. Remove any sales channel mapping that points to a utility or incompatible store.
- Check the carrier account type. Confirm that the owned and walleted settings in Endless match the carrier accounts available in ShipStation. If both account types are present, enable both.
- Check the service. Confirm that ShipStation lists the selected service for the carrier account Endless will use.
- Check for an existing order. Search ShipStation using the Endless fulfillment order number before retrying. A previous request may have created the order even if Endless did not save its ShipStation ID.
- Validate the address last. After the shared configuration is confirmed, check the country code, postal code, state or province, phone number, and international-service eligibility.
If fetching stores, carriers, and warehouses works but order creation fails across several addresses, the API key is unlikely to be the primary problem. Focus on store overrides and carrier account settings first.
A store appears under Fetch Stores but orders still fail
Fetch Stores lists stores visible to the ShipStation account. It does not verify that every returned store accepts API-created orders.
If a mapped store fails:
- Remove the ShipStation mapping from the affected sales channel.
- Confirm that the integration's default store is a manual-order store.
- Retry the order.
If the retry succeeds, leave the sales channel unmapped or map it to a compatible manual-order store.
International orders fail while domestic orders work
Confirm that:
- the selected service is marked as international in ShipStation
- the carrier account type matches the service
- the destination country uses a two-letter country code
- the postal code and state or province match the destination country's format
For FedEx services, also verify both FedEx and FedEx Walleted settings when both account types are available in ShipStation.