Skip to main content

Migrating from ShipStation

ShipStation moved API access to their $99/month Gold Plan. Package Retriever’s API is free — no subscription, no per-label markup, no surcharge for using your own carrier accounts. This guide maps every ShipStation API concept to its Package Retriever equivalent so you can migrate your existing integration.

What you’re getting

Authentication

ShipStation uses HTTP Basic Auth with an API Key and Secret. Package Retriever uses a single Bearer token.
One header, one key, no base64 encoding.

Endpoint mapping

Rate shopping

ShipStation:
Package Retriever:
Key differences:
  • All carriers returned in a single response (ShipStation requires separate calls per carrier)
  • Sorted cheapest-first by default
  • carbon_grams included on every rate
  • Full address required (not just postal codes) — enables residential surcharge detection

Label creation

ShipStation:
Package Retriever:
Key differences:
  • Two-step flow: get rates first, then purchase by rate_id
  • Payment is via prepaid wallet (not per-transaction card charge)
  • wallet_balance_after_cents returned on every purchase so you always know your balance

Sandbox / testing

ShipStation: Requires Gold Plan ($99/month) to access API at all. No separate test environment. Package Retriever:
No separate environment to configure. Same base URL, same endpoints. Just use a test key.

BYOA (Bring Your Own Account)

ShipStation: $20/month surcharge per carrier account. Package Retriever: Free. Connect via dashboard, use in API automatically.

Webhooks

ShipStation: Multiple webhook types, complex subscription management. Package Retriever: One event (label.created), one URL, simple HMAC verification.
Retry schedule (published — unlike ShipStation):
  • Attempt 1: Immediately
  • Attempt 2: 5 minutes
  • Attempt 3: 30 minutes
  • Attempt 4: 2 hours
  • Attempt 5: 24 hours

Batch label creation

ShipStation: Max 500 labels per batch. Package Retriever: Max 5,000 labels per batch with parallel processing.

Error handling

ShipStation returns carrier-native error strings. Package Retriever normalizes every error to a consistent format:
Every error includes:
  • A dot-notation code you can catch programmatically (error.code.startsWith('LABEL.'))
  • A suggestion telling you what to do next
  • A docs_url linking directly to the error documentation
  • A request_id for support lookups

Migration checklist

  • Create a Package Retriever account (free)
  • Generate a sandbox API key (pr_test_ prefix)
  • Replace ShipStation rate calls with POST /v1/rates
  • Replace label creation with POST /v1/labels (rate_id from step above)
  • Replace webhook subscriptions with single URL in dashboard settings
  • Fund your wallet (prepaid, minimum $5)
  • Generate a live API key (pr_live_ prefix)
  • Swap test key for live key in production
  • Cancel ShipStation subscription
Total migration time: 2-4 hours for a typical integration.

Questions?