Integrate iPaaS.com with ShipStation API v2 to enable seamless data synchronization for orders (sent to ShipStation as shipments, with their addresses and lines), shipment tracking (labels and LTL freight shipments), and shipping methods.
This document is the ongoing reference for the ShipStation API v2 connection: what each setting does, how authentication works, and how to rotate the API key. For the first-time setup journey, see the ShipStation API v2 Installation Instructions.
How to Connect
Prerequisites
Before configuring the subscription in iPaaS.com, make sure you have the following in ShipStation:
A ShipStation plan that includes API v2. The integration uses the ShipStation API v2 only. It does not use the v1 API Key and API Secret pair.
A ShipStation login that can create API keys, under Settings → Account → API Settings.
At least one warehouse (ship-from location) and the carriers you ship with, connected in ShipStation.
An LTL freight provider account (optional, LTL freight only). A Unishippers or Worldwide Express account connected in ShipStation. Skip this if you do not ship LTL freight.
ShipStation documents its API keys and limits in the ShipStation API v2 documentation.
One subscription per ShipStation account (recommended). We recommend one iPaaS.com subscription per ShipStation account, so one subscription's updates, cancels and label polls can't reach another subscription's orders.
Configuration Details
API Key: The ShipStation API v2 key. Create it in ShipStation under Settings → Account → API Settings, choosing the API v2 key. Copy it when it is shown and keep it somewhere safe. Example:
aBcD1eFgH2iJkL3mNoP4qRsT5uVwX6yZ.API Url: The base address of the ShipStation API v2. Example:
https://api.shipstation.com/v2(the default).Freight Provider Account (LTL only): The id of the freight provider account connected in ShipStation. It starts with
se-. Example:se-1234567.
Configure Subscription Settings
Open the ShipStation API v2 subscription in iPaaS.com and fill in the settings below. They are listed in the order the subscription page shows them.
Field | Description | Required | Example |
API Url | The base address of the ShipStation API v2. Every call the integration makes is relative to it. If the value is ever blank, the integration uses | Yes |
|
API Key | Your ShipStation API v2 key, sent with every call. A v1 API Key and API Secret pair does not work. | Yes |
|
Enable Multi Address Shipment | False (default): one ShipStation order per iPaaS.com order, shipped to the primary shipping address, with every line on it. True: one ShipStation order per destination address; each line goes to the address named in its ShipToAddressExternalId custom field, and a line with no destination goes to the primary shipping address. A line that names an address not on the order is reported as an error for that line and is not sent to another address. The orders are numbered "{order number} (1 of N)", "(2 of N)" and so on. Only the value | No |
|
Freight Provider Account | The freight provider account ( | Conditional: required for LTL freight unless the order maps its own account |
|
Freight Offer Selection | Which LTL offer is picked from a freight quote. | No |
|
Freight Pickup Window | The pickup ready and close times for LTL freight the integration books, in the format | No |
|
Days of Label History | How far back the first label poll looks, in whole days, for new and voided labels. After the first poll, each poll starts where the previous one ended. A blank, zero, negative or non-numeric value uses | No |
|
Every iPaaS.com subscription also has the platform throttle presets API Throttle Limit, API Throttle Seconds, API Throttle Limit (To iPaaS), API Throttle Seconds (To iPaaS), Concurrent Connections and Concurrent Batch Executions. They arrive pre-populated (for example 500, 500, 60, 60, 2 and 10), and all except Concurrent Batch Executions are required, so do not clear them. See Throttling.
Setting changes take a few minutes. A change to a subscription setting can take several minutes to apply. Orders sent in the minutes after a change use the old setting, so wait a few minutes before sending orders that depend on it.
Authentication Methods
The integration authenticates with a static ShipStation API v2 key. It sends the API Key in the API-Key request header on every call to ShipStation. There is no OAuth flow and no token to obtain or refresh: the key stays valid until you regenerate or delete it in ShipStation.
In ShipStation, go to Settings → Account → API Settings and create a ShipStation API v2 key.
In iPaaS.com, open the ShipStation API v2 subscription settings.
Enter the key in API Key, and enter
https://api.shipstation.com/v2in API Url.Save the settings.
Run a first transfer, for example the Shipping Method initialization, to check the connection.
How the connection is checked. Saving the subscription does not test the key. At the start of each transfer, the integration checks that API Key is filled in and API Url is a web address, then makes one read-only call to ShipStation that lists your warehouses:
ShipStation's answer | Result |
Success | The connection is made and the transfer continues. |
Unauthorized | The connection fails with |
Forbidden | The connection fails with |
No response | The connection fails with |
Any other answer | The connection fails with |
A blank API Key fails with SSV2-AUTH-1001, and an API Url that is not a web address fails with SSV2-AUTH-1004. A failed connection shows on the transfer only as Unable to connect to subscription with id N; the coded reason is written to the company's Logs at the same time. See the ShipStation API v2 Error Messages article for each code.
Rotating the key. Create the new API v2 key in ShipStation, paste it into API Key, save the subscription, and only then remove the old key in ShipStation. Allow a few minutes for the change to apply before relying on it.
Scopes and the Tracking Webhook
Data TO iPaaS.com comes through these scopes. Turn on the ones you need in the subscription's inbound data flows; the ShipStation API v2 Installation Instructions explain which to turn on and how to schedule the polls.
Scope | Brings TO iPaaS.com | How it runs |
| Delivery status changes on a label (in transit, delivered, exception) | ShipStation webhook |
| New and voided labels | Poll |
| LTL freight shipments (status, BOL, PRO) | Poll |
| Carrier services | Poll |
| One carrier service, by its carrier code and service code | Manual transfer |
| Every carrier service | Initialization |
Orders FROM iPaaS.com use iPaaS.com's own transaction events, not a ShipStation scope. Turn on transaction/created and transaction/updated in the subscription's outbound data flows; without them, no order reaches ShipStation.
The tracking webhook. Turning the track_event_v2 scope on registers one webhook named iPaaS.com in your ShipStation account for this subscription; turning it off deletes it. Without it, only new and voided labels arrive, by polling, and later delivery status changes do not. Each subscription's webhook has its own address, so two subscriptions on one ShipStation account do not replace each other's webhook, and webhooks on the account that the integration did not create are left alone.
Deletes are opt-in. The default Order collection is Add/Update only, so deleting an iPaaS.com order does nothing in ShipStation. To have deletes cancel the order's ShipStation orders, subscribers or their MiSP add a second Order FROM iPaaS.com collection with the sync type Delete. Otherwise, set the order's status to Cancelled, which cancels its ShipStation orders with the default collections. See the ShipStation API v2 Known Limitations.
Values Stored on the Subscription
The polls record their progress on the subscription as persistent data, each value a UTC date and time:
Last Label Created Poll and Last Label Voided Poll, written by
label/poll. If you delete either value, the next label poll starts again from Days of Label History.Last Freight Shipment Poll, written by
freight_shipment/poll.
Initialization Support
Initialization is supported for shipping methods only.
Add/Update ShipStation Shipping Method TO iPaaS.com: On the Subscription Settings screen, in the Initialize Data section, click Shipping Method. This runs
shipping_method/initialize, which loads every carrier service connected in ShipStation as a Shipping Method in iPaaS.com. Run it after setup and before the first label comes in, because a tracking record needs its Shipping Method, and again after connecting a new carrier in ShipStation.
Initialization is not supported for orders or shipment tracking. Orders are sent through iPaaS.com's transaction events, and labels come in through label/poll, whose first run looks back Days of Label History.
Throttling
Throttling keeps the integration from sending ShipStation more requests than its API allows, preserving performance during heavy data transfers. The platform presets API Throttle Limit and API Throttle Seconds pace calls to ShipStation, API Throttle Limit (To iPaaS) and API Throttle Seconds (To iPaaS) pace calls to iPaaS.com, and Concurrent Connections and Concurrent Batch Executions limit how much runs at once. They control how iPaaS.com dispatches work to this subscription; they do not change ShipStation's own rate limit. For more details, refer to Subscription Configuration – Edit.
The integration follows the rate limit ShipStation reports on each response, so iPaaS.com can pace transfers. When ShipStation answers that the limit is reached, the transfer is logged as SSV2-RATE-1001, held until the limit resets, and retried. If you see SSV2-RATE-1001 often, stagger large jobs, and consider lowering Concurrent Batch Executions; validate the effect in a staging environment before relying on it in production. For the request limit that applies to your ShipStation account, see the ShipStation API v2 documentation.

