GoatLabels GoatLabels
What happens to the money when a label dies.

API label voids: EasyPost refunds vs void-to-wallet


Credited now, not settled later.

A void call on GoatLabels credits your prepaid wallet immediately for the next label, instead of routing the refund back through a carrier settlement cycle.

Four carriers, one void behaviour

USPS, UPS, FedEx, or DHL — a void call returns the value to your balance the same way for all of them.

UPSFedExDHLUSPS all quoted
Four quotes One all-in price each.
Rate = debit Void = credit.
Same via API Dashboard or endpoint.

Credited to a wallet, not a settlement queue

Voided value lands back in the prepaid balance and is immediately spendable on the next label.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Prepaid Spent label by label.
Instant credit Ready for the retry.
No card cycle Nothing waiting on a statement.
Side by side

Where a void differs between EasyPost and a prepaid wallet.

Every multi-carrier platform lets you void an unused label. The thing that actually differs is where the money sits between the void and the next purchase, and how long your automation has to reason about a balance that is neither spent nor available.

  GoatLabels EasyPost
Where the value goes Straight back into your prepaid wallet balance as a credit. Back through the carrier's refund process against your billing, on the carrier's timetable.
When you can respend it Immediately — the credited balance funds the very next buy call. Once the refund has cleared the carrier settlement cycle, which is not instant.
What your code has to track One balance. Void, then buy again; no pending-refund state to model. Refund status as its own object with its own lifecycle, worth reconciling in high-volume flows.
Effect on a rebuy Rebuy at once from the same funded balance, even mid-batch. 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. Their plans, fees, and carrier list change — compare against their current pricing page before you decide.

Three reasons refund latency shows up at volume.

Batch reprints stop stalling

A misprinted run of labels means voiding and rebuying dozens at once. When voided value returns to a prepaid balance immediately, the rebuy is funded by the void itself. When it goes through a settlement cycle, the rebuy needs separate funding while the refund is still in flight.

One ledger instead of two timelines

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.

Less state in your integration

Automated flows that void — address corrections, cancelled orders, carrier switches after a rate change — otherwise have to model a pending-refund state and decide what it means for available funds. Void-to-wallet collapses that to a single balance your code already reads.

When EasyPost is the right choice

  • You barely void labels, so refund latency is a rounding error and not worth a migration.
  • You need a carrier outside USPS, UPS, FedEx, and DHL — EasyPost's network is genuinely wider.
  • Your finance process is built around carrier-level refund records and you want them at the source.
  • You are on negotiated carrier contracts and need a bring-your-own-account platform.
Voids in an automated flow

Buy, void, rebuy. Without a refund in flight.

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 void is an immediate credit back to that same balance, so the second purchase is funded by the first one being cancelled. There is no pending-refund object to poll, no settlement window during which the money is neither yours nor the carrier's, and no separate reconciliation between a charge date and a refund date. 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.

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
TikTok Shop
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 every path debits the same balance.

2 Billy AI

The corrections that cause the void.

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

Void credits the wallet immediately. Signed webhooks push label and tracking events to your stack.

Why labels get voided in the first place.

Connectors for the storefronts, AI for the corrections.

Shopify, Etsy, WooCommerce, and TikTok Shop 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 that funds it credits the same balance.

Via AI tiles: an order that never became a record still becomes a label.

13 connected today 2 via AI 8 coming soon
Connected today 13 storefronts sync to To Ship
Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Amazon logo Amazon
eBay logo eBay
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Temu logo Temu
Via AI

DM and screenshot parsing — the AI builds the label.

Coming soon
Shopify Plus logo Shopify Plus Soon
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
The refund path, examined properly. Then everything around it.

A void should return spendable money.
Not a pending record.

Both platforms void labels correctly; this is not a correctness argument. It is about latency and state — whether the value from a cancelled label is available to your next call, or whether it is a claim your finance team will see resolve on some later date.

One prepaid wallet,
five ways to fund it

Card, Apple Pay, Google Pay, ACH bank transfer, and crypto all top up the same balance, and every label debits it. Because voids credit that same balance, the wallet is a single running number rather than a charge history you match against a refund history.

Wallet balance
$1,247.36 USD
AI

AI drafting for orders
that are not JSON

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

No per-shipment
platform fee

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 and cheaper label pricing.

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

USPS, UPS, FedEx, and DHL
in one quote

USPS, UPS, FedEx, and DHL quoted live as all-in prices, and the void behaviour is identical across all four — the credit is against your GoatLabels balance, not against a per-carrier account, so a batch that spans carriers still resolves into one number.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties & taxes paid

A REST API that costs
nothing per call

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.

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

The void nobody automated

Half of voids start at the packing bench.

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 instantly, so the replacement label is funded before they have finished retaping the box.

Void a label from the phone and watch the credit land in the balance immediately.
Paste the corrected address from the DM — Billy drafts the replacement label.
USPS, UPS, FedEx, and DHL come back as four all-in prices on one screen.
Buy from the prepaid balance and one-tap print to a share sheet or a thermal printer over Wi-Fi.
Voids done in the browser and voids done by your code hit the same ledger.
Asking where the money went

Talk to Billy, not to a refund status endpoint.

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.

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 · nothing to import and nothing to map · reads the all-in rate back before a cent leaves the wallet · phone, browser, or Telegram.

All-in quotes

The quote is the debit, the void is the credit.

Three carriers on the same parcel, each an all-in number that is the exact amount leaving your prepaid balance. Cancel that shipment and the identical amount comes straight back to the balance — one ledger, two entries, nothing pending in between.

US → DE 2.6 lbs 12×8×4 in
USPS

USPS

Priority Mail Intl

10–15 days

$18.30

$10.00 of taxes & duties included

all-in · no surprises

Best balance
FedEx

FedEx

Intl Connect Plus

3–5 days

$22.80

$11.00 of taxes & duties included

all-in · no surprises

DHL

DHL

Express Worldwide

1–2 days

$26.20

$12.20 of taxes & duties included

all-in · no surprises

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

Void as a first-class API operation.

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 as soon as it returns — which is what lets a rebuy fire in the same code path rather than a later job.

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": 1.2, "weight_unit": "kg" },
  "service": "fedex_intl_priority"
}
A void does not cost you twice

No plan to clear first.

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. Because nothing is metered per shipment, voiding and rebuying the same parcel does not add a platform charge on top.

Pro

Most popular
$40 / month
Unlimited shipments — no monthly cap
Cheaper label pricing that scales down as your volume grows
Billy AI on Telegram — draft a label without opening the dashboard
API access still free and unlimited

Volume pricing

illustrative
less volume more volume

more volume → lower per-label rates

Free

$0 / forever

Enough to test the void-and-rebuy loop with real labels.

50 shipments a month, no per-shipment platform fee
Voids credited to the prepaid wallet immediately, from the API or the UI
The full REST API with unlimited calls and signed webhooks
Billy AI in the web app, unlimited — paste, screenshot, or speak
Shopify, Etsy, WooCommerce, and TikTok Shop sync included

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

On Pro we will work with you to beat the label rates you are already getting from

ShippoPirateShipShipStation
No contracts No per-shipment platform fee Start in seconds
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS, FedEx, and DHL and shown as one all-in number — the same number that leaves your wallet and the same number a void returns to it. EasyPost's plans and refund handling change, so check their current documentation rather than a claim on ours. Full pricing details

Who feels refund latency

Not every EasyPost account voids enough to care.

If you void a handful of labels a month, settlement timing is noise. These are the operations where voids are routine and the money being in flight is a real constraint on the next action.

High-volume batch printers

TikTok Shop & live commerce

Prepaid

A bad batch means dozens of voids at once. Immediate credit means the rebuy is funded by the void itself rather than by topping the balance up while a refund is still clearing.

4 carriers per quote no per-shipment fee bulk print
goatlabels.io/dashboard/shipments
GoatLabels shipments queue with purchased labels

Shops with frequent address edits

Etsy & independent creators

Buyers correct addresses after checkout constantly. Void, redraft, rebuy, all against one balance, with no pending state for anyone to explain to finance.

One queue, connector or not

Order #1024 · pasted from a comment thread

Sellers fixing orders in the DMs

The orders that never became JSON

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

Devs automating void-and-rebuy

REST and the UI, one balance

1

wallet behind the API and the dashboard

Real sellers, real words

Sellers who stopped waiting on money that was already theirs.

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

Sasha R.

Staff engineer, marketplace

API user

Voiding labels via API — FAQ

What happens when I void a label on GoatLabels?
The value is credited back to your prepaid wallet balance, and it is immediately available to buy the next label. There is no separate refund object to poll and no settlement window during which the money is unavailable — the balance your integration already reads is the whole picture.
How is that different from a carrier refund?
A carrier refund routes the money back through the carrier's own settlement process against your billing, on their timetable rather than yours. That is a perfectly normal model, but it means the value from a voided label is not spendable at the moment you void it, and the charge and the refund land on different dates for finance to match up.
Does this matter at low volume?
Honestly, not much. If you void a few labels a month, the difference is a reconciliation detail. It becomes real in automated flows with routine voids — batch reprints, address corrections, cancelled orders — where the rebuy is blocked or separately funded while a refund is in flight.
Is the void endpoint idempotent?
Yes. Idempotency keys apply to voids as well as purchases, so a retried void after a network timeout cannot become a second operation. That matters most in exactly the automated flows this page is about, where retries are automatic.
Can non-developers void labels too?
Yes. A support agent or warehouse lead can void a shipment in the dashboard, and the credit lands in the same wallet on the same terms as an API void. Both paths write to the same ledger, so there is nothing to reconcile between them.
Do voids work the same across all four carriers?
Yes — USPS, UPS, FedEx, and DHL all void back to your GoatLabels wallet balance rather than to per-carrier accounts. A mixed-carrier batch resolves into a single number rather than four separate credits arriving at different times.
Does voiding and rebuying cost extra?
There is no per-shipment platform fee, so a void-and-rebuy cycle does not add a second platform charge for the same parcel. You pay the carrier rate on the label you actually keep.

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.

Void one real label and watch the balance before you decide.

Cancel a label, keep the money.
Spendable on the next one.

Fund a wallet with card, Apple Pay, Google Pay, ACH, or crypto, buy a label through the API, void it, and check the balance before you have finished reading the response.

Sign up in seconds. No card required. No per-shipment platform fee.