USPS
Ground Advantage
2 to 5 days$11.40
all-in · no surprises
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.
USPS, UPS and FedEx quoted in a single request (DHL on international lanes), with live all-in rates and no carrier accounts to bring.
Top up with card, Apple Pay, Google Pay, ACH, or crypto — the API and the dashboard spend the same wallet.
Updated
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 past a free allowance carries a fee on top of postage, and whether standalone tracking, rating and validation calls are billed per call.
| 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 Starter has no plan fee; labels after the first 30 a month and standalone tracking, rating, address validation and delivery-estimate calls are billed per use. API Premier is custom-priced. |
| Cost per label bought via API | One all-in label price, debited from the prepaid wallet, with no separate per-label platform fee. | API: 30 labels a month free, then a fee on every label after that (amount in the dated Shippo facts below). |
| 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 | After the carrier accepts the void, credited back to the same prepaid balance the call spent from. | Request a refund for an unused label within 90 days; Shippo processes it within 14 business days and credits your account on the next invoice. |
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.
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.
Platform fees are invisible in staging and load-bearing in production. On Shippo's API Starter, every label after the first 30 a month carries a fee on top of postage. GoatLabels charges one all-in label price with no separate per-label platform fee 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.
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.
Checked on from Shippo's own pages. Plans, fees and policies change, so confirm on the vendor's current page before you decide. Shippo is a trademark of its owner and is not affiliated with GoatLabels.
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, on Free, no monthly fee sitting under a dev month where you shipped nothing at all.
Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701
REST API, store connectors, DMs, and screenshots — one queue and one balance behind all of them.
Billy AI
Signed webhooks push tracking back to your stack. Idempotency keys make a retried buy safe.
Shopify, Etsy, WooCommerce, eBay and Wix 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.
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 fee on every label after the first 30 a month and the per-call charges on standalone tracking, rating and validation. What is new is a human surface that shares your balance.
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, after the carrier accepts the void, the credit lands back in the wallet, ready for the next call.
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
The API is free and unlimited on every plan, and labels are the carrier rate debited from a prepaid wallet. On Free, a month where the integration sat in staging and bought nothing costs nothing. Past 50 shipments a month, Pro is one flat $40 monthly plan with unlimited shipments; it is never a gate on API access.
One rate call returns live all-in prices from USPS, UPS and FedEx on a domestic parcel, DHL on an international one, 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.
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.
Label ready
CL-1038 · Brooklyn, NY
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.
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 and FedEx (DHL on international lanes), and queues the label against the same prepaid balance your code spends from. This is the real product, not a render.
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 on Pro.
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, a carrier re-weigh posts as its own line on that shipment, and an accepted void credits the wallet rather than a card statement weeks later.
Ground Advantage
2 to 5 days$11.40
all-in · no surprises
Ground
1 to 5 days$9.85
all-in · no surprises
Ground
1 to 5 days$11.20
all-in · no surprises
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.
POST /api/v1/shipments
Authorization: Bearer sk_live_…
Idempotency-Key: ord_8421
{
"to": { "name": "Joyce", "city": "Berlin", "country": "DE" },
"parcel": { "weight": 2.6, "weight_unit": "lb" },
"service": "fedex_intl_priority"
}
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. The quoted label price is what you pay from a prepaid wallet. Past 50 shipments a month, Pro is a flat $40 monthly fee for unlimited shipments; API access is identical on both.
Rate by plan
illustrativePro: one flat monthly plan, unlimited shipments
$0 / forever
Enough to build, stage, and launch an integration without a bill attached.
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.
GET /api/v1/shipments
200 OK · plan: free
Unlimited calls on Free — still unlimited on Pro.
High-volume shippers can ask about custom pricing, which we review account by account. Compare it against what you pay on
ShippoPirate ShipShipStationLabel prices are quoted live from USPS, UPS and FedEx on domestic parcels and DHL on international lanes, shown as one all-in number, the same number that leaves your wallet when the buy call returns. Shippo's fees and plans change; the Shippo figures on this page were checked against Shippo's own pricing pages on 2026-10-17, so confirm them there before you decide. Full pricing details
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.
Rate calls that spike with traffic
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.
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
The exceptions that never hit the API
REST and the UI, one balance
1
wallet behind the API and the dashboard
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.
Early customer · TikTok
TikTok Shop seller
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.
Early customer · Etsy
Etsy maker
The API is what every shipping API pretends to be. Idempotency that actually works.
Sasha R.
Staff engineer, marketplace
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, the Shippo API fee crossover by volume, or the migration guide.
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 or FedEx rate in the response (DHL on international lanes) against what that label costs your integration today.
No card required. No monthly fee on Free, up to 50 shipments a month.
Updated