GoatLabels GoatLabels
REST, JSON, and no request budget.

A Shippo API alternative with no request limits


The API is not the paid tier.

GoatLabels offers an unlimited free REST API across USPS, UPS, FedEx and DHL, so developers avoid Shippo's API tiers and per-label platform fees entirely.

Four carriers behind one rate call

USPS, UPS, FedEx, and DHL quoted in a single request — live all-in rates, no carrier accounts to bring.

UPSFedExDHLUSPS all quoted
One call Four all-in quotes back.
Idempotent A retry never double-buys.
Unlimited No request budget to watch.

A prepaid balance, not an API plan

Top up with card, Apple Pay, Google Pay, ACH, or crypto — the API and the dashboard spend the same wallet.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Prepaid One balance, both surfaces.
No minimum A dev month costs nothing.
Void → wallet Credited, not refunded weeks later.
For the team writing the integration

Where a metered API and a free one diverge.

Both APIs create a shipment, return rates, and buy a label — that part is a solved problem and Shippo solved it well. The divergence is what happens to your unit economics when the integration succeeds: whether every label your code buys carries a platform fee on top of the carrier rate, and whether the call volume itself sits behind a plan.

  GoatLabels Shippo
What the API costs Nothing. Unlimited calls on every plan, including Free — the API is not a tier and there is no request budget. API access is bound to their plan structure and a per-label platform fee — check their current pricing page.
Cost per label bought via API The carrier rate, debited from the prepaid wallet. No platform fee sits between the quote and the buy. A per-label platform fee applies on the starter plan; paid tiers change the arithmetic.
Carrier accounts None needed. Rates come from our accounts across USPS, UPS, FedEx, and DHL on first call. Supports both their rates and your own carrier accounts — bring-your-own is well handled there.
Retry safety Idempotency keys on label purchase — a retried request returns the original label, never a second one. Mature API with its own retry semantics documented on their site.
Event delivery Signed webhooks for tracking and label events, verified with a shared secret. No polling loop. Webhooks and a well-documented event model — this is their home turf.
Refunds on a void Credited straight back to the same prepaid balance the call spent from. Standard carrier refund flow through their billing.

Shippo is a trademark of its owner and is not affiliated with GoatLabels. Their plans, fees, and carrier list change — compare against their current pricing page before you decide.

Three reasons developers move off the Shippo API.

Rate-shopping should not be rationed

A good integration quotes far more often than it buys — cart estimates, re-quotes on address edits, background comparisons, retries. If calls are metered, you start caching quotes you should have refreshed. An unlimited free API removes the incentive to be stingy with the thing that makes rates accurate.

A per-label fee compounds at scale

Platform fees are invisible in staging and load-bearing in production. GoatLabels charges the carrier rate and debits the prepaid wallet — the number your rate call returned is the number that leaves the balance, so the margin model you built at ten labels a day still holds at ten thousand.

You want a dashboard your ops team can use

Most shipping integrations end up needing a human surface for exceptions. The GoatLabels dashboard buys from the same balance as the API, and Billy drafts a label from a pasted message — so support can fix a mis-addressed parcel without you writing an internal tool for it.

And when you should stay on Shippo

  • You need a carrier outside USPS, UPS, FedEx, and DHL — that is the honest list of what we rate-shop, and Shippo's network is broader.
  • You negotiate your own carrier contracts and need to run your own accounts through the API. Shippo's bring-your-own-account support is strong and ours is not the same product.
  • You have a shipped, stable integration and no cost pressure. Rewriting a working client against a new API is a real cost — a comparison page is not a reason.
Both surfaces, one balance

The endpoint your code calls. The dashboard your ops team opens.

Structured orders come in the way they always did — store connectors and the REST API both feed the same To Ship queue, and the API path is three calls: create the shipment, read the rates, buy the label. What sits alongside it is a human surface for everything your integration was never going to cover: the address the customer got wrong, the parcel that needs re-shipping, the order that arrived as a message. Paste it or dictate it and Billy drafts the label, so nobody files a ticket asking you to write an admin tool. Both surfaces debit the same prepaid wallet, funded with card, Apple Pay, Google Pay, ACH, or crypto, so there is nothing to reconcile between what your code spent and what support spent — and no monthly minimum sitting under a dev month where you shipped nothing at all.

1
API calls, connectors, and messages
REST, store sync, or a pasted order
maya_boutique

Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701

Shopify
Synced into To Ship
TikTok Shop
Synced into To Ship
DM screenshot
Order
#1847
Customer
Jordan Lee
Items
1x Hoodie (L)
Address
Brooklyn, NY
Drop the screenshot or paste the DM

REST API, store connectors, DMs, and screenshots — one queue and one balance behind all of them.

2 Billy AI

The exception handler you did not have to build.

Billy AI
  • Reads a message, an email, a voice note, or a screenshot
  • Fills in the recipient and the parcel 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

Signed webhooks push tracking back to your stack. Idempotency keys make a retried buy safe.

What feeds the queue besides your code.

Connectors and the API, one shared balance.

Shopify, Etsy, WooCommerce, and TikTok Shop sync into To Ship and get tracking pushed back when you print — useful when your product needs a storefront integration you would rather not write. The REST API feeds the same queue, spends the same wallet, and reports the same events, so nothing has to be reconciled between the two paths.

Via AI tiles: an order that never became a record 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 you port, and what stops costing money.

Everything you had in the client.
Without the plan under it.

Create, rate-shop, buy, track — the same four verbs your Shippo client already implements, against REST and JSON with one Bearer header. What does not come with you is the per-label platform fee and the plan the API sits behind. What is new is a human surface that shares your balance.

One prepaid wallet,
five ways to fund it

Card, Apple Pay, Google Pay, ACH bank transfer, and crypto all top up the same balance, and every method buys identical rates, carriers, and features. Void a shipment from the API or the dashboard and the credit lands back in the wallet immediately, ready for the next call.

Wallet balance
$1,247.36 USD
AI

AI drafting for orders
that are not JSON

Not every shipment your business makes will pass through your integration. Billy reads a message, an email, a screenshot, or a spoken address and drafts the label — the exception path you would otherwise have built an internal admin tool for, spending the same prepaid balance your API calls do.

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 monthly minimum
to print

The API is free and unlimited on every plan, and labels are the carrier rate debited from a prepaid wallet. A month where the integration sat in staging and bought nothing costs nothing. Pro is an optional flat plan for cheaper label pricing at volume — never a gate on API access.

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

USPS, UPS, FedEx, and DHL
in one quote

One rate call returns live all-in prices from USPS, UPS, FedEx, and DHL, and the number in the response is the exact amount that leaves your balance when you buy it. No carrier accounts to provision, no credentials to rotate. That is the honest carrier list; if you need one outside it, Shippo's broader network is the reason to stay. Store connectors feed the same queue your API calls do, so a storefront integration is one less thing to write.

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

The API you did not
want to give up

REST and JSON, one Bearer header, real idempotency keys so a retried purchase returns the original label instead of buying a second, signed webhooks for tracking and label events instead of polling, and errors that name the field to fix. OpenAPI 3.1, no SDK lock-in, unlimited calls on every plan.

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 DM on mobile

Label ready

CL-1038 · Brooklyn, NY

The surface your integration doesn't cover

A pasted message is a valid order input.

An API-only tool assumes every shipment starts as a record in your system. In practice, someone in support is always shipping a replacement from a phone. GoatLabels gives that person a real surface — the same wallet, the same carriers, the same rates — instead of a ticket in your backlog.

Paste the message or drop a screenshot — Billy pulls out the recipient, the address, and the parcel.
No admin tool to write: the exception path already has a UI.
USPS, UPS, FedEx, and DHL come back as four all-in prices on one screen.
Buy from the same prepaid balance your API calls spend and print to a share sheet or a thermal printer.
Hold the mic and say the address — Billy drafts it and reads the rate back.
For the shipments that skip the integration

Talk to Billy, not to an internal tool.

Your API handles the happy path well. This is the other one: the replacement parcel, the sample going to a partner, the order someone took by phone. Hold the mic, say who it is going to, and Billy looks up the buyer, rate-shops USPS, UPS, FedEx, and DHL, and queues the label against the same prepaid balance your code spends from. 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 quote is the debit.

Three carriers on the same parcel, each an all-in number — and the number your rate call returned is the exact amount that leaves the prepaid balance when the buy call succeeds. No platform fee is inserted between the two, nothing arrives the day after with an adjustment, and a void credits the wallet rather than a card statement weeks later.

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

Porting off Shippo without porting off REST.

The same three calls you already write: create the shipment, read the rates, buy the label. One Bearer header, JSON in and out, real idempotency keys so a retried request cannot double-buy, signed webhooks instead of a polling loop, and errors that name what to fix. OpenAPI 3.1, no SDK lock-in, and the call volume itself is free on every plan.

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"
}
The API is not a tier

The API is not the paid tier.

Free covers 50 shipments a month with the public API unlimited underneath it — unlimited calls, signed webhooks, the whole spec, on the plan that costs nothing. We make a little on each label instead of metering your requests or charging a platform fee on top of them. Pro is a flat monthly fee for unlimited shipments and cheaper label pricing at volume; API access is identical on both.

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 build, stage, and launch an integration without a bill attached.

50 shipments a month, no monthly minimum to print
USPS, UPS, FedEx, and DHL rate-shopped in one call
The full REST API with unlimited calls and signed webhooks
Billy AI in the web app, unlimited — for the exceptions your code skips
Shopify, Etsy, WooCommerce, and TikTok Shop sync included

Billy is not a paid tier

The assistant that reads a message, a screenshot, or a voice note into a drafted label runs unlimited in the web app on Free — a support surface you did not have to build. 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 when the buy call returns. Shippo's plans and fees move, so compare against their current pricing page rather than a figure on ours. Full pricing details

Which teams this actually suits

Not every Shippo API user should port.

These are the teams for whom unlimited calls, a shared balance, and no per-label fee change the build — and the ones who should keep the client they have are named on this page too.

Marketplaces with bursty label volume

Rate calls that spike with traffic

Prepaid

Quote volume that follows your traffic fits an unmetered API and a prepaid balance better than a plan tier chosen for last quarter's peak.

4 carriers per quote no monthly minimum bulk print
goatlabels.io/dashboard/shipments
GoatLabels shipments queue with purchased labels

Products that also need a storefront sync

Connectors you don't have to write

Connect the storefronts that have connectors and let them feed the same queue your API calls do — one balance, one event stream, no reconciliation.

One queue, connector or not

Order #1024 · pasted from a comment thread

Teams whose support ships parcels too

The exceptions that never hit the API

got the dress! can you ship to Austin?
Label drafted · CL-1024

Devs who want the dashboard as well

REST and the UI, one balance

1

wallet behind the API and the dashboard

Real sellers, real words

Teams who moved the integration and kept the three calls.

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

Shippo API alternative — FAQ

Is the GoatLabels API really free?
Yes. Calls are unlimited on every plan including Free — there is no request budget, no metering, and no API tier. You pay for the labels you actually buy, at the carrier rate, debited from a prepaid wallet.
How hard is it to port a Shippo client?
It is the same three calls: create a shipment, read the rates, buy a label. REST and JSON with a single Bearer header, an OpenAPI 3.1 spec to generate from, and no SDK you are required to use. Most teams port the happy path in an afternoon and spend the rest of the time on webhooks.
Do I need my own carrier accounts?
No. Rates for USPS, UPS, FedEx, and DHL come back on your first call with nothing to provision. If your business depends on running your own negotiated carrier contracts through the API, that is a fair reason to stay on Shippo.
What stops a retry from buying two labels?
Idempotency keys on label purchase. Send the same key again — after a timeout, a network blip, or a queue redelivery — and you get the original label back rather than a second charge against the wallet.
How do I get tracking updates?
Signed webhooks for tracking and label events, verified against a shared secret, so you do not run a polling loop. The same events fire whether the label was bought through the API or through the dashboard.
What happens when I void a label from the API?
The amount is credited straight back to the same prepaid balance the purchase spent from, so a voided label is immediately spendable again rather than a refund you chase through a billing cycle.
Can I run both APIs side by side while I migrate?
Yes. Point a share of traffic at GoatLabels, compare the all-in rate the response carries against the quote plus fee you would have paid, and cut over when you are satisfied. There is no monthly minimum making the overlap expensive.

Reading the spec next? Start with the API docs and the webhook events. Comparing the tools directly? Read GoatLabels vs Shippo, the Shippo pricing teardown, or the migration guide.

Get a key and buy one real label.

Keep the three calls.
Drop the request budget.

Fund a wallet with card, Apple Pay, Google Pay, ACH, or crypto, point one real shipment at the API, and compare the all-in USPS, UPS, FedEx, and DHL rate in the response against what that label costs your integration today.

Sign up in seconds. No card required. No monthly minimum.