USPS
Priority Mail Intl
10–15 days$18.30
$10.00 of taxes & duties included
all-in · no surprises
Porting from EasyPost means remapping a handful of REST endpoints — rates, buy, void, track — after which every API call on GoatLabels is free at any volume.
Rates, buy, void, track across USPS, UPS, FedEx, and DHL — REST and JSON, Bearer auth.
Card, Apple Pay, Google Pay, ACH, or crypto — labels debit a balance, not a monthly invoice.
Every shipping API models the same five nouns, which is why this is a remap rather than a rewrite. Here is where each part of your existing integration lands.
| On GoatLabels | What changes in your code | |
|---|---|---|
| Create a shipment | POST /api/v1/shipments with from, to, and parcel — one JSON body, Bearer auth. | Your existing create call. The fields you already collect map across directly. |
| Get rates | Rates come back for USPS, UPS, FedEx, and DHL as all-in prices on the shipment. | Wherever your code reads the rates array today, read ours instead. |
| Buy a label | Purchase the chosen rate; the label debits your prepaid wallet, not a monthly invoice. | Your buy step, minus the account funding assumptions behind it. |
| Void a label | Void by shipment id — the amount is credited straight back to the wallet balance. | Refund flow. Same trigger point in your code, different destination for the money. |
| Tracking updates | Signed webhooks for tracking and label events — verify the signature, drop the poller. | Swap the webhook URL and the signature verification; the event handling stays yours. |
| Retry safety | Idempotency keys on writes: a retried purchase returns the original label, never a second one. | Keep the retry logic you already trust; it just costs nothing to run here. |
EasyPost is a trademark of its owner and is not affiliated with GoatLabels. This table describes the GoatLabels API and the concepts common to shipping APIs — check their current docs for their side.
Your integration already models a shipment, a rate, a purchase, a void, and a tracking event, because every shipping API models those. Porting means pointing four calls at new URLs and re-reading the response shapes — the business logic around them does not move.
After the cutover, API calls cost nothing at any volume. Retries, health checks, and re-quotes stop being budget decisions, and next month's shipping forecast is shipments times carrier rate with no second term.
There is no monthly minimum here, so the overlap period is free. Send a slice of live traffic to the new integration, compare the all-in rates against what you would have bought, and move the rest when the numbers agree.
Start with the read-only call: point a copy of your rating step at GoatLabels and log both responses side by side for a week. Because rate lookups are unmetered, that parallel run costs nothing at all. Then move purchases behind a flag on a slice of live orders — idempotency keys mean a retry during the transition cannot produce two labels — and confirm the all-in price hitting the wallet matches the quote your code read. Voids and tracking webhooks follow the shipments the new path created, so they migrate last and by themselves. Finally, delete the polling you wrote to compensate for missed events and let the signed webhooks carry it.
Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701
Your API keeps its intake path; connectors and the dashboard cover the orders it never received.
Signed webhooks replace the poller. Voids credit the wallet the purchase debited.
Shopify, Etsy, WooCommerce, and TikTok Shop sync into To Ship and push tracking back when a label prints. If your integration currently carries that plumbing, the migration is a chance to delete it rather than port it.
Via AI tiles: an order that never became a record still becomes a label.
A migration should not cost you rate shopping, idempotency, or webhooks — those all come across. What arrives with them is a dashboard your support team can use, AI drafting for the orders that never reached your API, and a wallet instead of a platform invoice.
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. Voiding over the API credits that same balance immediately.
A DM, a comment thread, a voice note, a screenshot — Billy reads any of them into a drafted label. Every one of those is an edge case you would otherwise ticket, scope, and ship.
The overlap period costs nothing beyond the labels you buy, which is what makes a parallel run practical. Pro is a flat optional plan for unlimited shipments and cheaper label pricing once you are fully cut over.
One rates call returns four all-in prices, and the number your code selects is the exact amount that leaves the balance. Discounted rates are built into the account, so the migration does not stall on carrier contract negotiation.
REST and JSON, one Bearer header, idempotency keys on writes, signed webhooks for tracking and label events, and an OpenAPI 3.1 spec so you can regenerate a client instead of hand-writing one.


Label ready
CL-1038 · Brooklyn, NY
During a migration the worst moment is the label nobody can print because the code is half-moved. The web and mobile app runs on the same account and the same balance, so anyone can buy, reprint, or void a shipment manually while the integration catches up.
Mid-migration, half the questions are just where did this parcel go and what did it cost. Hold the mic, ask, and Billy answers from the same shipments your API created, then drafts the next label against the same prepaid balance. 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 · same shipments your API created · reads the all-in rate back before a cent leaves the wallet · phone, browser, or Telegram.
Three carriers on the same parcel, each an all-in number that is the exact amount leaving your prepaid balance. That is what makes a parallel run easy to evaluate: the price your code read is the price that moved, with no platform fee to add back before you compare.
Priority Mail Intl
10–15 days$18.30
$10.00 of taxes & duties included
all-in · no surprises
Intl Connect Plus
3–5 days$22.80
$11.00 of taxes & duties included
all-in · no surprises
Express Worldwide
1–2 days$26.20
$12.20 of taxes & duties included
all-in · no surprises
REST, JSON, one Bearer header. Real 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. The OpenAPI 3.1 spec means your client can be generated rather than transcribed.
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"
}
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 meters requests, which is what makes the parallel run and the eventual volume both free.
Volume pricing
illustrativemore volume → lower per-label rates
$0 / forever
Enough to run the whole parallel evaluation on.
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.
GET /api/v1/shipments
200 OK · plan: free
Unlimited calls on Free — still unlimited on Pro.
On Pro we will work with you to beat the label rates you are already getting from
ShippoPirateShipShipStationLabel prices are quoted live from USPS, UPS, FedEx, and DHL and shown as one all-in number — the same number that leaves your wallet. EasyPost's tiers and fees move, so model the saving against their current pricing page. Full pricing details
A migration is only ever worth its own cost, so this is the shortlist of teams for whom the maths clears — and the ones who should leave working code alone are named on this page too.
TikTok Shop & live commerce
If the platform line on your bill now grows every month, a few days of remapping buys back a variable cost permanently.

Etsy & independent creators
If you never negotiated your own accounts, a platform built around bringing them is doing you no favours. Discounted rates come with the account here.
Rates first, then buy
Order #1024 · parallel run, zero call cost
The orders that never became JSON
REST and the UI, one balance
4
calls to remap: rates, buy, void, track
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
Still deciding rather than porting? Read GoatLabels vs EasyPost, the pricing teardown, or what the free unlimited API covers.
Generate an API key, fund a wallet with card, Apple Pay, Google Pay, ACH, or crypto, and diff your next real quote against USPS, UPS, FedEx, and DHL before you move a single purchase.
Sign up in seconds. No card required. No monthly minimum.