GoatLabels GoatLabels
For developers evaluating shipping APIs.

A ShipStation API alternative with no plan gate


Every endpoint on every account.

GoatLabels exposes its full REST API — rates, labels, voids, webhooks — free and unlimited on every plan, unlike ShipStation where API access rides on subscription tier.

One call, four carrier quotes

USPS, UPS, FedEx, and DHL returned together as all-in prices — no per-carrier plumbing on your side.

UPSFedExDHLUSPS all quoted
REST + JSON One Bearer header.
Quote = debit No day-after invoice.
Unlimited calls On every plan.

Labels debit a wallet, not a plan

The API and the dashboard buy from one prepaid balance, and voids credit straight back to it.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
One balance API and dashboard.
No tier gate Free keys hit every route.
Void → credit Back to the balance.
Integration surface

What actually differs once you are writing the integration.

Both platforms will sell you a label over HTTP. The question a developer should be asking is narrower than that: what does my code have to assume about the account it runs against, and what breaks when someone downgrades the plan.

  GoatLabels ShipStation
What unlocks the API Nothing. An account and a key. The endpoints on Free are the endpoints on Pro. API access is a function of which subscription tier you are on — check their current plan matrix.
Call volume Unlimited calls on every plan, including Free. Plan-dependent, and the ceiling is part of what you are paying for.
Retry safety Idempotency keys on label purchase — a retried request cannot buy a second label. Documented API; confirm their current idempotency semantics before you build a retry loop.
Event delivery Signed webhooks for tracking and label events, verified against a shared secret. Webhooks available; scope varies with the plan you are on.
Carriers you can rate-shop programmatically USPS, UPS, FedEx, and DHL — one call returns all four as all-in prices. Broad carrier list — see their site for current coverage and account requirements.
What a void does to the money Credits the prepaid wallet the label was bought from, in the same balance your next call spends. Refund flows back through subscription billing.

ShipStation is a trademark of its owner and is not affiliated with GoatLabels. Their plans, API entitlements, and carrier list change — verify against their current documentation before you decide.

Three reasons developers build here instead.

A plan tier is a strange place to keep an endpoint

When API access rides on subscription tier, your integration's capabilities change when finance changes the plan. GoatLabels puts every endpoint — rates, labels, voids, tracking, webhooks — on every account, so the contract your code depends on is not a billing decision someone else can make.

You are prototyping, not committing

The expensive part of evaluating a shipping API is usually the plan you have to buy before you can send the first request. Here the first request costs nothing: create an account, take a key, and rate-shop USPS, UPS, FedEx, and DHL against a real parcel before you write the second file.

Prepaid balance instead of an invoice to reconcile

Labels bought by the API and labels bought in the dashboard debit the same prepaid wallet, and voids credit it back. There is no separate metering ledger to reconcile against a monthly statement — the balance is the ledger.

And when ShipStation is the right choice

  • You need a carrier GoatLabels does not rate-shop — we quote USPS, UPS, FedEx, and DHL, and that is the honest list.
  • Your team depends on ShipStation's warehouse and order-management surface, not just its endpoints; this page is about the API, not that.
  • You have a working integration and a plan you are happy with. A comparison page is not a reason to migrate.
Three calls, start to finish

Create, rate-shop, buy. The same three calls you already wrote once.

Migrating a shipping integration is mostly re-typing a shape you already know: a shipment goes in, a list of rates comes back, you pick one and buy it. GoatLabels keeps that shape. What changes is everything around it — the endpoints are not gated behind a plan tier, calls are unlimited on Free, label purchase takes an idempotency key so a retry cannot double-buy, and tracking arrives as a signed webhook rather than a poll loop you have to schedule. Orders can reach the same queue from store connectors, from your own API calls, or from a pasted message that Billy drafts into a label, and all of them debit one prepaid wallet.

1
Any order shape in
API call, store sync, DM, or screenshot
ops_inbox

POST /api/v1/shipments — 1x Hoodie (L), Brooklyn NY 11201

Shopify
Synced into To Ship
TikTok Shop
Synced into To Ship
API payload
Order
#1847
Customer
Jordan Lee
Items
1x Hoodie (L)
Address
Brooklyn, NY
Or paste the order and let Billy draft it

Connectors, REST API, DMs, and screenshots — one queue, no import mapping.

2 Billy AI

The fallback for orders that never reached your endpoint.

Billy AI
  • Reads a DM, comment thread, voice note, or screenshot
  • Fills the addresses and the package details
  • Rate-shops USPS, UPS, FedEx, and DHL at the all-in price
  • Hands the drafted label back for a human to confirm
Drafted. Checked. Yours to confirm.
3
Clean label out
Bought from the wallet
Paid from your prepaid balance
Card, Apple Pay, Google Pay, ACH, or crypto
$12.47
USPS
Label purchased
USPS Priority Mail — all-in rate
$12.47

201 Created, a label URL, and a signed webhook when the parcel moves. No polling loop required.

Connectors you do not have to write.

Connectors for the storefronts, the API for everything else.

Shopify, Etsy, WooCommerce, and TikTok Shop sync into To Ship and push tracking back when a label prints — work you would otherwise be maintaining yourself. Everything outside that set is a POST to /api/v1/shipments, and both routes land in the same queue against the same wallet.

Via AI tiles: an order that never hit your endpoint still becomes a label.

13 connected today 2 via AI 8 coming soon
Connected today 13 storefronts sync to To Ship
Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Amazon logo Amazon
eBay logo eBay
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Temu logo Temu
Via AI

DM and screenshot parsing — the AI builds the label.

Coming soon
Shopify Plus logo Shopify Plus Soon
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
What the integration gets, on every plan.

The whole API surface, on a free account.
No tier to clear first.

Evaluating a shipping platform as a developer usually means paying before you can see whether the endpoints do what the docs claim. Here the evaluation and the production account are the same account: unlimited calls, every route, and a wallet you top up when you actually start printing.

One prepaid wallet,
behind API and dashboard

Card, Apple Pay, Google Pay, ACH bank transfer, and crypto top up the same balance, and a label bought by code debits it exactly like a label bought by a human. Void a shipment and the credit lands back in the wallet, not on a statement three weeks out.

Wallet balance
$1,247.36 USD
AI

AI drafting for orders
that are not JSON

Support pastes the DM, Billy drafts the label, and your integration never has to grow a free-text parser. It is the escape hatch every shipping integration eventually needs and almost none of them have.

Billy LIVE
Where's the package to Maya?
It's in transit via UPS. Expected Friday, Aug 7.
UPS
1Z8923A6B05G4123456
In transit
Austin, TX → Dallas, TX
Ask Billy anything...

No plan gate
on any endpoint

Rates, labels, voids, tracking, and webhooks are available to every account. Pro changes shipment limits and label pricing — it does not change what your code is allowed to call, which is the property you actually want from a dependency.

Shipment summary
UPS Ground $12.49
Insurance $0.75
Fuel surcharge $0.32
Total $13.56

USPS, UPS, FedEx, and DHL
in one response

One rate call returns all four as live all-in prices, and the number you see is the exact amount that leaves the balance when you buy. That is the honest carrier list — if your integration needs one outside it, ShipStation's broader network is a real reason to stay. Store connectors exist for Shopify, Etsy, WooCommerce, and TikTok Shop, but an API-only account never has to touch them.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties & taxes paid

Idempotency keys and
signed webhooks

A retried purchase returns the original label rather than buying a second one, and tracking and label events arrive signed so you can verify them instead of trusting the sender. Errors name the field to fix rather than returning a generic 400.

POST /v1/shipments
{
"to" : { "name" : "Maya" },
"from" : { "name" : "Alex" },
"service" : "ups_ground" ,
"label_format" : "pdf"
}
Webhook delivered
GoatLabels mobile shipments queue with all-in carrier prices
Billy drafting a label from a pasted order on mobile

Label ready

CL-1038 · Brooklyn, NY

The part your integration can't cover

Some orders never reach the endpoint.

Every shipping integration has a long tail: the phone order, the DM, the customer-service exception, the parcel someone has to send today. On ShipStation that tail lands in a UI someone has to learn. Here it lands in Billy, on the phone already in their hand, and the resulting label debits the same wallet your code spends from.

Paste the message or drop the screenshot — Billy pulls the name, the address, and the parcel out of it.
No import mapping and no CSV step: the message is the order record.
USPS, UPS, FedEx, and DHL come back as four all-in prices on one screen.
Buy from the same prepaid balance your API keys spend from.
One-tap print to a share sheet or a thermal printer over Wi-Fi.
An interface for the exceptions

Talk to Billy instead of writing a form.

The feature request that never makes it up your backlog is the internal tool for one-off shipments. Billy is that tool, already built: say who it is going to, and it looks up the buyer, rate-shops USPS, UPS, FedEx, and DHL, and queues the label against the prepaid balance — then answers questions about tracking afterwards. This is the real product, not a render.

goatlabels.io/dashboard/shipments — Billy
Billy reading back a parcel's tracking history over the purchased labels list

Listening

"Where's Maya's package?"

Out for delivery

CL-1039 · Austin, TX · by 6 PM

Plain English in — names, addresses, weights, carriers, services · nothing to import and nothing to map · reads the all-in rate back before a cent leaves the wallet · phone, browser, or Telegram.

All-in quotes

The quoted rate is the debit.

One rate call, several carriers, and each number is the exact amount that leaves the prepaid balance when your code buys it. Nothing arrives the day after with an adjustment on it, which means your own reconciliation job can compare the quote you stored against the debit and expect them to match.

US → DE 2.6 lbs 12×8×4 in
USPS

USPS

Priority Mail Intl

10–15 days

$18.30

$10.00 of taxes & duties included

all-in · no surprises

Best balance
FedEx

FedEx

Intl Connect Plus

3–5 days

$22.80

$11.00 of taxes & duties included

all-in · no surprises

DHL

DHL

Express Worldwide

1–2 days

$26.20

$12.20 of taxes & duties included

all-in · no surprises

No carrier invoice the day after Void → credit back to the wallet you funded Multi-currency display
Public API v1

An API that isn't a plan feature.

REST, JSON, one Bearer header. Idempotency keys so a retried request cannot double-buy a label, signed webhooks for tracking and label events instead of polling, and errors that name what to fix. Every route is reachable from a free account, and the dashboard buys from the same prepaid balance your keys do.

Create, rate-shop, and buy — the same three calls you already write
Signed webhooks for tracking and label events instead of polling
Real idempotency keys — a retried request never buys two labels
OpenAPI 3.1 spec, no SDK lock-in, unlimited calls on every plan
Read the API docs Get an API key $0 on every plan
curl https://api.goatlabels.io/api/v1/shipments
POST /api/v1/shipments
Authorization: Bearer sk_live_…
Idempotency-Key: ord_8421

{
  "to": { "name": "Joyce", "city": "Berlin", "country": "DE" },
  "parcel": { "weight": 1.2, "weight_unit": "kg" },
  "service": "fedex_intl_priority"
}
Nothing to unlock

No tier to unlock the API.

Free covers 50 shipments a month with the public API, the store connectors, and Billy all unlimited underneath it — we make a little on each label instead. Pro is a flat monthly fee for unlimited shipments, cheaper label pricing, and Billy on Telegram. Neither plan changes which endpoints your key can call, which is the whole point of this page.

Pro

Most popular
$40 / month
Unlimited shipments — no monthly cap
Cheaper label pricing that scales down as your volume grows
Billy AI on Telegram — draft a label without opening the dashboard
API access still free and unlimited

Volume pricing

illustrative
less volume more volume

more volume → lower per-label rates

Free

$0 / forever

Enough to ship a real integration to production without a subscription under it.

50 shipments a month, no monthly minimum to print
USPS, UPS, FedEx, and DHL rate-shopped on every parcel
The full REST API with unlimited calls and signed webhooks
Billy AI in the web app, unlimited — paste, screenshot, or speak
Shopify, Etsy, WooCommerce, and TikTok Shop sync included

Billy is not a paid tier

The assistant that reads a DM, a screenshot, or a voice note into a drafted label runs unlimited in the web app on Free. Pro adds Billy on Telegram.

Web — every plan Telegram — Pro

API free on every plan

GET /api/v1/shipments

200 OK · plan: free

Unlimited calls on Free — still unlimited on Pro.

Bring the invoice you pay today

On Pro we will work with you to beat the label rates you are already getting from

ShippoPirateShipShipStation
No contracts No monthly minimum to print Start in seconds
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS, FedEx, and DHL and shown as one all-in number — the same number that leaves your wallet. ShipStation's plans and API entitlements move, so compare against their current pricing page rather than a figure on ours. Full pricing details

Who should actually move

Not every ShipStation API user should migrate.

These are the teams for whom an ungated API, unlimited calls, and a prepaid wallet add up to a real difference — and the ones for whom they do not are named on this page too.

Solo devs and small product teams

Building shipping into someone else's app

Free keys

The first request costs nothing and the hundred-thousandth costs nothing either. You pay for labels, so an integration that sits idle between launches does not accrue a bill while it waits.

4 carriers per quote unlimited calls signed webhooks
goatlabels.io/dashboard/shipments
GoatLabels shipments queue with purchased labels

Ops teams automating a warehouse script

Cron jobs, batch buys, retries

Idempotency keys mean the nightly job that times out halfway through can simply run again. Nothing double-buys, and the wallet balance is the single number to alert on.

One balance to monitor

Order #1024 · bought by POST /shipments

Support handling what the API missed

The long tail, without a new internal tool

can you resend this one to Austin?
Label drafted · CL-1024

Agencies shipping for several clients

One integration, many accounts

1

wallet behind the API and the dashboard

Real sellers, real words

The people your integration is actually built for.

A video took off and I had 80 TikTok Shop orders by morning. I printed every label from my phone on the bus to the post office.
E

Early customer · TikTok

TikTok Shop seller

TikTok Shop
I run my Etsy shop from the kitchen. The AI reads the order, picks the carrier, the label prints. That's the whole workflow now.
E

Early customer · Etsy

Etsy maker

Etsy
The API is what every shipping API pretends to be. Idempotency that actually works.
S

Sasha R.

Staff engineer, marketplace

API user

ShipStation API alternative FAQ

Is the GoatLabels API really free on every plan?
Yes. Rates, label purchase, voids, tracking, and webhooks are all available on a Free account with unlimited calls, and Pro does not add endpoints — it adds unlimited shipments, cheaper label pricing, and Billy on Telegram. You pay for labels, not for the right to call the API.
How does this differ from ShipStation's API?
ShipStation is a mature platform and its API is well documented, but access to it is tied to subscription tier, so what your integration can do depends on which plan the account is on. GoatLabels exposes the same REST surface to every account regardless of plan, which makes it a safer dependency for code you do not want to re-scope when billing changes.
What does the API cover?
Create a shipment, rate-shop USPS, UPS, FedEx, and DHL in one call, buy the label, void it, and read tracking. Authentication is a single Bearer header, requests and responses are JSON, label purchase takes an idempotency key, and tracking and label events arrive as signed webhooks instead of something you poll for.
Can I test it before migrating anything?
Yes, and running both side by side is the recommended way. Point one shipment at the GoatLabels API, compare the all-in rate against the quote you would have bought, and keep your existing integration untouched. There is no monthly minimum making the overlap period expensive.
What happens if my retry logic fires twice?
Label purchase accepts an idempotency key, so a retried request returns the original label instead of buying a second one. This matters more than it sounds: a duplicate label is money out of the wallet and a parcel with two barcodes on it.
Do I need to connect a store to use the API?
No. Shopify, Etsy, WooCommerce, and TikTok Shop connectors exist and feed the same To Ship queue, but they are optional. An API-only account never has to connect a storefront.
How do I fund labels bought over the API?
From the prepaid wallet, topped up with card, Apple Pay, Google Pay, ACH bank transfer, or crypto. The dashboard and the API spend the same balance, so there is nothing to reconcile between the two, and a voided label credits straight back to it.

Comparing the platforms rather than the APIs? See GoatLabels vs ShipStation, or ShipStation vs free shipping software. Weighing the subscription itself? What to do about a price increase covers the options, and label pricing works like this.

Send one real request before you decide.

Take a key. Rate-shop one parcel.
Nothing to unlock first.

Create an account, generate an API key, and POST a real shipment. Compare the four all-in rates against the quote you were about to buy, and keep your existing integration running the whole time.

Sign up in seconds. No card required. Unlimited API calls on every plan.