USPS
Ground Advantage
2 to 5 days$11.40
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: USPS, UPS and FedEx on domestic parcels, DHL on international lanes, over REST and JSON with 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 and FedEx as all-in prices on a domestic shipment, plus DHL on international lanes. | 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; after the carrier accepts the void, the amount is credited back to the wallet balance. | Refund flow. Same trigger point in your code; on EasyPost the Wallet credit waits for the carrier to approve. |
| 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. EasyPost's fees and refund rules are dated and linked in the source block below; check EasyPost's current docs for its 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 per-label platform fee, plus Pro's flat fee once you pass Free's 50 shipments a month.
Free has no monthly fee for up to 50 shipments a month, so the overlap period costs only labels. 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.
Checked on from EasyPost's own pages. Plans, fees and policies change, so confirm on the vendor's current page before you decide. EasyPost is a trademark of its owner and is not affiliated with GoatLabels.
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.
Billy AI
Signed webhooks replace the poller. Accepted voids credit the wallet the purchase debited.
Shopify, Etsy, WooCommerce, eBay and Wix 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.
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 after the carrier accepts the void.
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.
Billy
LIVE
On Free (50 shipments a month) the overlap period costs only the labels you buy, which is what makes a parallel run practical. Past 50 a month, Pro is one flat $40 monthly plan with unlimited shipments.
One rates call returns an all-in price per carrier (USPS, UPS and FedEx domestic, DHL on international lanes), and the number your code selects is the exact amount that leaves the balance. 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 on Pro.
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.
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
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": 2.6, "weight_unit": "lb" },
"service": "fedex_intl_priority"
}
Free covers 50 shipments a month with the public API, the store connectors, and Billy all unlimited underneath it — the quoted label price is what you pay from a prepaid wallet. Pro is a flat monthly fee for unlimited shipments and Billy on Telegram. Neither plan meters requests, which is what makes the parallel run and the eventual volume both free.
Rate by plan
illustrativePro: one flat monthly plan, unlimited shipments
$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.
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. EasyPost's allowance and per-label fee are in the dated source block on this page; model the saving against them. 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. 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. Planning the port? Start with the shipping API for developers overview and the API reference.
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 and FedEx (DHL on international lanes) before you move a single purchase.
Sign up in seconds, no card required. Your first top-up may need an approved application. No monthly fee on Free, up to 50 shipments a month.
Updated