Skip to main content

ShipStation API v2 Connections and Settings

Connect iPaaS.com to ShipStation API v2: the API v2 key, every subscription setting and its default, how authentication and the connection check work, the scopes and tracking webhook, initialization, and throttling.

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.

The ShipStation API v2 Subscription Settings page in iPaaS.com

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 https://api.shipstation.com/v2, and a trailing slash is ignored. The field starts blank on a new subscription and is required, so enter https://api.shipstation.com/v2 unless ShipStation tells you otherwise.

Yes

https://api.shipstation.com/v2

API Key

Your ShipStation API v2 key, sent with every call. A v1 API Key and API Secret pair does not work.

Yes

aBcD1eFgH2iJkL3mNoP4qRsT5uVwX6yZ

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 true (any case) turns this on.

No

false

Freight Provider Account

The freight provider account (se- id) used for LTL freight quotes and bookings when the order does not map its own. It matters only for orders whose Freight Mode is Quote or Book. An LTL order with no account from either place fails with SSV2-FRGT-1001.

Conditional: required for LTL freight unless the order maps its own account

se-1234567

Freight Offer Selection

Which LTL offer is picked from a freight quote. Cheapest (default): lowest total charges, a tie going to the fewest transit days. Fastest: fewest transit days, a tie going to the lowest total charges. A blank value uses Cheapest. For a booking (Freight Mode = Book), a filled-in value other than Cheapest or Fastest stops the booking with SSV2-FRGT-1005 and nothing is booked; for a quote it is treated as Cheapest.

No

Cheapest

Freight Pickup Window

The pickup ready and close times for LTL freight the integration books, in the format HH:mm-HH:mm. It applies only to Freight Mode = Book. A blank value uses 09:00-17:00. A filled-in value that is not in this format stops the booking with SSV2-FRGT-1005 and nothing is booked.

No

09:00-17:00

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 7. Shipment Tracking has no initial load, so raise this value before the first label/poll if you want older labels brought TO iPaaS.com.

No

7

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.

  1. In ShipStation, go to Settings → Account → API Settings and create a ShipStation API v2 key.

  2. In iPaaS.com, open the ShipStation API v2 subscription settings.

  3. Enter the key in API Key, and enter https://api.shipstation.com/v2 in API Url.

  4. Save the settings.

  5. 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 SSV2-AUTH-1002. The key is wrong, revoked, or not an API v2 key.

Forbidden

The connection fails with SSV2-AUTH-1003. The key works, but the ShipStation plan or user may not use API v2.

No response

The connection fails with SSV2-EXTN-1002. Check the API Url setting.

Any other answer

The connection fails with SSV2-EXTN-1001 and ShipStation's message.

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

track_event_v2

Delivery status changes on a label (in transit, delivered, exception)

ShipStation webhook

label/poll

New and voided labels

Poll

freight_shipment/poll

LTL freight shipments (status, BOL, PRO)

Poll

shipping_method/poll

Carrier services

Poll

shipping_method/updated

One carrier service, by its carrier code and service code

Manual transfer

shipping_method/initialize

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.

Related Documents

Did this answer your question?