GoatLabels GoatLabels
For developers replacing a legacy integration.

A modern API alternative to Stamps.com integrations


REST, JSON, and no metered calls.

GoatLabels' REST API is free and unlimited on every plan, returns carrier quotes side by side in one call, and pushes signed webhooks, all drawing on the same prepaid wallet as the dashboard.

Four carriers behind one endpoint

USPS, UPS and FedEx rate-shopped in a single call at all-in prices, DHL on international lanes.

UPS FedEx DHL USPS DHL: international
One rates call All-in prices back.
Quote = debit No day-after invoice.
OpenAPI 3.1 No SDK lock-in.

Calls are free, labels come from a wallet

Card, Apple Pay, Google Pay, ACH, or crypto — one prepaid balance.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
One balance API and dashboard.
Unmetered Unlimited on every plan.
Accepted voids credited Back to the balance.
Integration, side by side

What changes when you replace a Stamps.com integration?

Postage APIs of the previous generation were designed around desktop clients and session state, and it shows in the contract you have to write against. The comparison that matters to an engineer is not the feature grid — it is retry semantics, event delivery, and whether the calls are metered.

  GoatLabels API Stamps.com REST API (SERA)
Interface style REST over HTTPS, JSON in and JSON out, one Bearer header. REST over HTTPS with JSON bodies, signed in through an OAuth 2.0 authorization-code flow.
Cost of API access Free and unlimited on every plan, Free included. Staging carries no service or transaction fees; production calls act on a signed-in Stamps.com or Endicia user account.
Carriers reachable through the API USPS, UPS and FedEx rate-shopped in one call; DHL on international lanes. USPS, UPS, FedEx, DHL Express, GlobalPost and Canada Post appear as carrier codes, with availability set per account.
Retry safety Real idempotency keys — a replayed request returns the original label, never a second purchase. An Idempotency-Key header on POST calls replays the original response for 24 hours.
Event delivery Signed webhooks for tracking and label events, verified with a shared secret. A track-a-package call; the REST reference lists no webhooks.
Spec and clients OpenAPI 3.1, no SDK lock-in — generate a client or just use curl. A downloadable OpenAPI specification for the REST API.

Stamps.com is a trademark of its owner and is not affiliated with GoatLabels. Their integration options and terms change — read their own developer documentation before you plan a migration.

Why do teams rewrite the postage layer?

Three calls replace the whole integration

Create a shipment, rate-shop it, buy the label. That is the surface area for most postage integrations, and it is the surface area here — same nouns, modern verbs, JSON bodies, HTTP status codes that mean what they say, and errors that name the field to fix rather than returning a numeric code you look up in a PDF.

Idempotency keys, not hopeful retries

The failure mode that costs real money in shipping integrations is the retried buy. Send the same idempotency key twice and the second request returns the original label instead of purchasing another one — so your queue's at-least-once delivery stops being a financial risk.

The API is not a paid tier

Unlimited calls on every plan, including Free. Rate-shopping in a loop during development costs nothing, a staging environment hitting the API all day costs nothing, and the only money that moves is a label bought from the prepaid wallet — the same balance the dashboard spends, so there is nothing to reconcile between the two.

And when Stamps.com is the right choice

  • You need a carrier or a specialised USPS service GoatLabels doesn't rate-shop: our carriers are USPS, UPS and FedEx on domestic parcels and DHL on international lanes, and that is the honest list.
  • Your existing integration is stable, owned by someone else, and nobody is asking you to touch it. A migration page is not a reason.
  • Compliance or procurement has already certified your current postage vendor and re-certifying costs more than the integration is worth.

What Stamps.com's own pages say, checked 2026-10-23

  • Its SERA REST API signs in with OAuth 2.0, accepts an Idempotency-Key header on POST calls, publishes an OpenAPI specification and offers a staging environment with no service or transaction fees. (Stamps.com/Endicia REST API (SERA) reference)
  • Stamps.com says it supports UPS, USPS, FedEx and DHL Express, with international carriers listed from the Professional plan up. (Stamps.com pricing)
  • Stamps.com lists Basic at $14.99 a month for individuals and small offices, with 1 user and up to 25 stamps and 10 shipping labels a month; Professional at $29.99 a month for busy offices, with 3 users and unlimited stamps and labels; and Multi-Location from $49.99 a month for organizations with multiple locations, with unlimited stamps and labels, 10 users per location and 2 locations included. (Stamps.com pricing)
  • Stamps.com does not charge the subscription during its 30-day trial; after it, the subscription bills monthly from the original sign-up date unless you cancel first, and postage, carrier services and add-ons such as insurance are charged on top of it. (Stamps.com pricing)
  • Postage comes out of a prepaid account balance, topped up by at least $10 at a time or by an auto-fund setting that buys more when the balance falls to a level you choose. (Stamps.com Help: Fund Your Account Balance)
  • An unused label with tracking is refunded through an electronic request, due within 28 days of printing for USPS and 30 days for UPS and DHL, and approved refunds return to the Stamps.com account balance within 21 days. (Stamps.com Help: Request a Label Refund)
  • Refund Assist, a setting you switch on, files refund requests for USPS labels not scanned within 21 days of printing and credits part of the approved refund to the account balance. (Stamps.com Help: Refund Assist)
  • You can cancel by phone with the Customer Care Center, Monday to Friday 6am to 6pm Pacific Time, or online under My Account, Manage Account, Account Settings, Change/Cancel Plan, then the close-account link. (Stamps.com: How to Cancel Your Account)
  • Stamps.com bills at the end of each billing cycle, so closing the account after the trial can still bring one more service fee plus any applicable taxes. (Stamps.com: How to Cancel Your Account)
  • After you close the account, the remaining postage balance is refunded within 4 to 8 weeks except promotional postage, and the subscription runs to the end of the current cycle with no refund for unused time. (Stamps.com Help: Close Your Account)

Checked on from Stamps.com's own pages. Plans, fees and policies change, so confirm on the vendor's current page before you decide. Stamps.com is a trademark of its owner and is not affiliated with GoatLabels.

What the API sits inside

An endpoint your ops team can also drive by hand.

The integration is not an island: whatever your code buys, a human can see, and whatever a human buys, your code can read. Orders arrive from any of Shopify, Etsy, WooCommerce, eBay or Wix, from the REST API, or as a pasted DM or screenshot when support has to handle an exception, and land in the same To Ship queue. Billy fills in the addresses, the package details, and the service for the ones that never became structured data. Every label is a debit against a prepaid wallet topped up with card, Apple Pay, Google Pay, ACH, or crypto, so there is one balance behind the script and the dashboard alike. Rate-shop USPS, UPS and FedEx at the all-in price (DHL on international lanes), print from a phone or a thermal printer, and let signed webhooks and idempotency keys carry the events your services care about.

1
Any order shape in
Store sync, API, DM, or screenshot
maya_boutique

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

Shopify
Synced into To Ship
Etsy
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

Connectors, REST API, DMs, and screenshots — one queue and one data model behind all of them.

2 Billy Billy AI

The exception handler you did not have to build.

Billy AI
  • Reads a DM, comment thread, voice note, or screenshot
  • Fills the addresses and the package details
  • Rate-shops USPS, UPS and FedEx at the all-in price, DHL on international lanes
  • Hands the drafted label back for you 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

One wallet behind the script and the dashboard. Signed webhooks push tracking back to the store and to your stack.

Less to integrate than you think.

Connectors for the storefronts, AI for everything else.

Before you write the integration, check whether you need it: store connectors, Shopify, Etsy, WooCommerce, eBay and Wix, already sync into To Ship and push tracking back when a label prints. Keep the API for the parts that are genuinely yours — your own checkout, your WMS, your internal tooling — and let the connectors carry the storefronts you would otherwise have wrapped by hand.

Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
eBay logo eBay
Wix logo Wix
What ships around the endpoint.

An API with a product behind it.
Not a postage gateway.

A shipping integration is only as good as what surrounds it: who tops the balance up, who handles the parcel that arrived as a message, and what happens when a label has to be voided at eight in the evening. All of that exists here, and none of it is a separate contract.

One prepaid wallet,
five ways to fund it

Card, Apple Pay, Google Pay, ACH bank transfer, and crypto all top up the same balance the API spends. Finance funds it without touching your code, and an accepted void credits it back rather than opening a refund case.

Wallet balance
$1,247.36 USD
AI

AI drafting for the orders
your integration never sees

A DM, a comment thread, a voice note, a screenshot — Billy reads any of them and drafts the whole label. That is the exception queue your API was never going to receive as JSON, handled by someone in ops instead of by a ticket to you.

Billy 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...

Unlimited calls
on every plan

Rate-shop in a loop, run staging all day, and pay nothing for the traffic. On Free (50 shipments a month) the only money that moves is a label; past 50 shipments a month, Pro is one flat $40 monthly plan with unlimited shipments.

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

USPS, UPS, FedEx, and DHL
in one account

Live all-in rates returned together, and the number you get back is the exact amount that leaves the balance when you buy. That is the honest carrier list; if your integration must reach a service outside it, that is the reason to keep your legacy provider. Store connectors, Shopify, Etsy, WooCommerce, eBay and Wix, cover the storefronts so you do not have to.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties inside the quote where DDP applies

Idempotency, webhooks,
and errors that name the field

REST and JSON, one Bearer header, idempotency keys so a retried request cannot double-buy a label, and signed webhooks for tracking and label events instead of polling. OpenAPI 3.1, so the client is generated rather than vendored.

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

For the humans on the other side of your API

Ops can print without paging you.

Every postage integration eventually acquires a queue of exceptions that only a person can resolve. On a legacy stack that means a desktop client on someone's machine, or a ticket to engineering. Here it means the same account, opened on a phone.

Paste the DM, snap the thread, or drop the screenshot — Billy pulls the name, the address, and the parcel out of it.
Nothing to install: ops uses the browser, engineering uses the endpoint, both hit one account.
USPS, UPS and FedEx come back as all-in prices on one screen, DHL on international lanes.
Buy from the prepaid balance and one-tap print to a share sheet or a thermal printer over Wi-Fi.
Hold the mic at the packing table and say the address — Billy drafts it and reads the rate back.
Support tooling you did not have to write

Talk to Billy, not to your own admin panel.

Where is this parcel — the question that generates internal tools. Billy answers it against the same shipment records your API writes: hold the mic, ask, and it reads back the carrier, the status, and the cost — no read-only dashboard for you to build and maintain. 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 · same records your API writes · reads the all-in rate back before a cent leaves the wallet · phone, browser, or Telegram on Pro.

All-in quotes

The quote is the debit.

USPS, UPS and FedEx on the same domestic parcel, each an all-in number that is the exact amount leaving your prepaid balance, which means the rate your code stored at quote time is the rate reconciliation will find later. An accepted void credits the wallet rather than producing an adjustment to explain.

CA → NY 2.6 lbs 12×8×4 in
USPS

USPS

Ground Advantage

2 to 5 days

$11.40

all-in · no surprises

Cheapest
UPS

UPS

Ground

1 to 5 days

$9.85

all-in · no surprises

FedEx

FedEx

Ground

1 to 5 days

$11.20

all-in · no surprises

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

The three calls that replace the legacy integration.

Create a shipment, rate-shop it, buy the label — REST, JSON, one Bearer header, no session to establish first. 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 the field to fix instead of a code to look up.

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": 2.6, "weight_unit": "lb" },
  "service": "fedex_intl_priority"
}
No plan to clear first

No plan to clear first.

Free covers 50 shipments a month with the public API, the store connectors, and Billy all unlimited underneath it; the API is not the thing the tiers are drawn around. Pro is a flat monthly fee for unlimited shipments and Billy on Telegram, and the API stays free and unlimited on it.

Pro

Most popular
$40 / month
Unlimited shipments — no monthly cap
Unlimited address validation
Billy AI on Telegram Telegram logo — draft a label without opening the dashboard
API access still free and unlimited

Rate by plan

illustrative
Free Pro

Pro: one flat monthly plan, unlimited shipments

Free

$0 / forever

A production-grade API on the free tier, not a sandbox.

50 shipments a month, no monthly fee
USPS, UPS and FedEx on every domestic parcel; DHL on international lanes
The full REST API with unlimited calls and signed webhooks
Billy AI in the web app, unlimited — paste, screenshot, or speak
Store connectors included: Shopify, Etsy, WooCommerce, eBay and Wix

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 logo 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

High-volume shippers can ask about custom pricing, which we review account by account. Compare it against what you pay on

ShippoPirate ShipShipStation
No contracts No monthly fee Free to sign up
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS and FedEx (plus DHL on international lanes) and shown as one all-in number — the same number that leaves your wallet. Stamps.com's plans and integration terms move, so compare against their current documentation rather than a figure on ours. Full pricing details

Who this integration suits

Not every postage integration needs replacing.

The teams who gain most are the ones whose shipping code is a small, unloved corner of a larger product — a marketplace, a fulfilment side of a storefront, an internal tool — where a metered legacy API costs more attention than it deserves.

Seasonal and drop-driven sellers

TikTok logo TikTok Shop & live commerce

Prepaid

Bursty traffic is where unmetered calls matter: rate-shop every parcel in a drop without a per-call line item, and pre-fund the wallet instead of sizing a plan.

4 carriers behind one API unlimited API calls bulk print
goatlabels.io/dashboard/shipments
GoatLabels shipments queue with purchased labels

Shops that also sell off-platform

Etsy logo Etsy & independent creators

Connect the stores that have connectors and keep your own code for the channels that do not — one account, one wallet, one set of shipment records behind both.

One queue, connector or not

Order #1024 · pasted from a comment thread

Instagram logo

Sellers living in the DMs

Messenger logo The exceptions your API never receives

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

Devs who want the dashboard too

Shopify logoWooCommerce logo REST and the UI, one balance

1

wallet behind the API and the dashboard

Real sellers, real words

Teams who replaced the postage layer and stopped thinking about it.

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 logo 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 logo Etsy
The API is what every shipping API pretends to be. Idempotency that actually works.
S

Sasha R.

Staff engineer, marketplace

API user

Shipping API FAQ

Updated

Is there a free Stamps.com API alternative?
Yes. The GoatLabels REST API is free and unlimited on every plan, including the free tier: rates, label purchase, voids, and tracking across USPS, UPS, FedEx, and DHL. You pay for labels out of a prepaid wallet, and the calls themselves are never metered.
What does the API actually cover?
The full label lifecycle. Create a shipment, rate-shop it across the carriers, buy the label, retrieve the PDF or PNG, void it (the credit posts to the wallet after the carrier accepts the void), and receive signed webhooks for tracking and label events. Everything the dashboard does, the API does, against the same balance.
Is it REST or SOAP?
REST over HTTPS with JSON in both directions, authenticated with a single Bearer header. There is an OpenAPI 3.1 spec, so you can generate a client in your language or skip the SDK entirely and use curl — no envelopes, no WSDL, no session token dance before the first useful call.
How do you prevent double-buying a label on a retry?
Idempotency keys. Attach one to a purchase and a replayed request returns the original shipment and label rather than buying a second one, which makes at-least-once delivery from your job queue safe to leave as it is.
Do I get webhooks instead of polling?
Yes. Tracking and label events are pushed as signed webhooks you verify with a shared secret, so you can stop running a polling job against tracking numbers just to notice that something was delivered.
Can I test against the API before committing?
Open a free account, take an API key, and start calling. Rate requests cost nothing, so you can wire the whole integration and only spend money when you buy your first real label out of the wallet.
Do the API and the dashboard share the same account?
They share the account, the wallet, and the shipment records. A label bought by a script appears in the dashboard queue, a label bought in the dashboard is visible over the API, and both debit the same prepaid balance — there is no separate API billing to reconcile at month end.

Planning the cutover? Switching from Stamps.com step by step sequences it against your billing date, and Stamps.com vs free shipping software covers the non-developer side of the same decision. Comparing API-first platforms? GoatLabels vs Shippo is the closer read. The shipping API for developers hub covers the whole API, and the ShipStation API alternative and the free EasyPost API alternative compare it with other providers.

One key, three calls, one real label.

Keep the integration.
Drop the legacy contract.

Take a free API key, rate-shop a real parcel across USPS, UPS and FedEx (DHL on international lanes) at no cost, and only spend when you buy the label from a wallet funded by card, Apple Pay, Google Pay, ACH, or crypto.

No card required. Unlimited API calls on every plan.

Updated