USPS
Ground Advantage
2 to 5 days$11.40
all-in · no surprises
A void call on GoatLabels requests the carrier void; after the carrier accepts it, the credit posts to your prepaid wallet for the next label, instead of returning through a card or invoice refund.
USPS, UPS, FedEx, or DHL: after the carrier accepts a void, the value posts back to your balance the same way for all of them.
Voided value posts back to the prepaid balance after the carrier accepts the void, ready for the next label.
Every multi-carrier platform lets you void an unused label. The thing that actually differs is where the money lands after the carrier accepts the void, and how many records your automation has to reconcile to know it.
| GoatLabels | EasyPost | |
|---|---|---|
| Where the value goes | Into your prepaid wallet balance as a credit, after the carrier accepts the void. | Back to the EasyPost Wallet once the carrier approves the refund; on BYOCA, through your own carrier account. |
| When you can respend it | After the carrier accepts the void, the credited balance funds the next buy call. | After carrier approval, which EasyPost says takes 2 to 4 weeks. |
| What your code has to track | One balance. Void, then buy again from it; the credit posts after the carrier accepts the void. | A refund_status on each shipment: submitted, refunded, rejected, or not_applicable. |
| Effect on a rebuy | Rebuy from the same funded balance, even mid-batch; after the carrier accepts the void, its credit lands in that balance too. | The rebuy is funded normally; the refund catches up separately later. |
| Finance reconciliation | One prepaid balance, with debits and credits in the same ledger. | Charges and refunds landing on different dates, matched after the fact. |
| Void via API | One call, with idempotency so a retried void is not a second operation. | A supported API operation with a documented refund object — this part is well built. |
EasyPost is a trademark of its owner and is not affiliated with GoatLabels. EasyPost's refund rules, plans, and fees are dated and linked in the source block below; they change, so re-check before you decide.
A misprinted run of labels means voiding and rebuying dozens in one go. Each accepted void posts back to the same prepaid balance the rebuys come from, so there is one ledger to reconcile.
Charges on one date and refunds on another is a reconciliation exercise that grows with shipment count. A prepaid wallet keeps the debit and the credit in the same ledger, so the balance is the answer rather than the starting point for a spreadsheet.
Automated flows that void (address corrections, cancelled orders, carrier switches after a rate change) still wait on the carrier to accept the void. Void-to-wallet means the accepted credit lands in the single balance your code already reads.
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.
The loop that matters here is short: your code buys a label, something changes, your code voids it and buys another. On GoatLabels each buy is a debit against a prepaid wallet and each accepted void is a credit back to that same balance. The carrier still owns the decision and its review window; what changes is that the credit lands as a ledger line on the balance your code already reads, the one balance every carrier's labels are bought from. Idempotency keys apply to voids as well as buys, so a retried void after a timeout does not become a second operation, and signed webhooks tell your stack when the label and its credit are final.
Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701
Connectors, REST API, DMs, and screenshots — one queue, and every path debits the same balance.
Billy AI
After the carrier accepts the void, the credit posts to the wallet. Signed webhooks push label and tracking events to your stack.
Shopify, Etsy, WooCommerce, eBay and Wix sync into To Ship and push tracking back when you print. Most voids trace to something the feed got wrong or the buyer changed afterwards, an address correction, a combined order, a cancelled item. Billy drafts the replacement from the message the customer actually sent, and the void credits the same balance after the carrier accepts it.
Both platforms void labels correctly; this is not a correctness argument. It is about where the value lands: the prepaid balance your next call spends from, or a refund record your finance team matches on some later date.
Card, Apple Pay, Google Pay, ACH bank transfer, and crypto all top up the same balance, and every label debits it. Because accepted voids credit that same balance, the wallet is a single running number rather than a charge history you match against a refund history.
A DM, a comment thread, a voice note, a screenshot — Billy reads any of them and drafts the whole label. When a buyer sends a corrected address after you have already printed, the void and the replacement draft happen in the same place.
Billy
LIVE
There is no per-shipment platform fee, which also means a void-and-rebuy cycle does not cost you a second platform charge for the same parcel. Free covers 50 shipments a month; Pro is a flat monthly fee for unlimited shipments.
USPS, UPS and FedEx quoted live as all-in prices (DHL on international lanes), and the void behaviour is identical across all four: an accepted void credits your GoatLabels balance, not against a per-carrier account, so a batch that spans carriers still resolves into one number.
REST and JSON, one Bearer header, idempotency keys covering voids as well as purchases so a retried request never double-operates, and signed webhooks for label and tracking events instead of polling a refund status endpoint.
Label ready
CL-1038 · Brooklyn, NY
The misprint, the wrong box size, the address the buyer corrected an hour after checkout — those voids are noticed by a person, not a job. Doing them in the browser credits the same wallet after the carrier accepts the void, the same as an API void.
In a flow with real void volume, the common question is not how to void — it is what happened to a specific parcel and its money. Hold the mic, ask, and Billy reads back the shipment, its tracking history, and its current state against your 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 · 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 that is the exact amount leaving your prepaid balance. Void that shipment and, after the carrier accepts the void, the identical amount posts back to the balance: one ledger, two entries.
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. The void endpoint is idempotent, so a retry after a network timeout cannot turn into a second operation, and the credit is reflected in your balance after the carrier accepts the void, on the same ledger your rebuy reads.
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. Because nothing is metered per shipment, voiding and rebuying the same parcel does not add a platform charge on top.
Rate by plan
illustrativePro: one flat monthly plan, unlimited shipments
$0 / forever
Enough to test the void-and-rebuy loop with real labels.
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 and the same number that posts back after the carrier accepts a void. EasyPost's refund rules are in the dated source block on this page, linked to EasyPost's own support articles. Full pricing details
If you void a handful of labels a month, where the credit lands is noise. These are the operations where voids are routine and one balance is easier to run than refunds on separate records.
TikTok Shop & live commerce
A bad batch means dozens of voids in one go. Each accepted void credits the same balance, so finance sees one ledger for every carrier's labels.
Etsy & independent creators
Buyers correct addresses after checkout constantly. Void, redraft, rebuy, all against one balance, with each credit on the ledger after the carrier accepts the void.
One queue, connector or not
Order #1024 · pasted from a comment thread
The orders that never became JSON
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
Still comparing? GoatLabels vs EasyPost covers who owns the carrier account, EasyPost pricing explained walks the fee math, and migrating an integration off EasyPost maps the endpoints one by one. For the void flow itself, see how to void a shipping label; for the rest of the EasyPost comparison, read an EasyPost alternative with a dashboard and EasyPost vs a free shipping API.
Fund a wallet with card, Apple Pay, Google Pay, ACH, or crypto, buy a label through the API, void it, and see the credit post to the balance after the carrier accepts the void.
No card required. No contract. No per-shipment platform fee.
Updated