GoatLabels GoatLabels
One sitting. Every channel. In order.

The batch fulfillment day, step by step


Gather, validate, buy, print, pack.

Batching turns shipping from a per-order interruption into one sitting: collect every open order into a single list, validate addresses before paying, buy the batch, print in pick order, and pack against the printed stack. The sequencing matters — errors caught before packing are still cheap to void.

Four carriers quoted across the whole batch

Every parcel in the run gets its own USPS, UPS, FedEx, and DHL comparison — a batch is not a reason to default to one carrier for the day.

UPSFedExDHLUSPS per parcel
One merged queue Stores, files, and DMs.
Validate before buying Errors caught while cheap.
Print in pick order The stack is the pick list.

Fund the run once, then buy without stopping

Top the prepaid wallet up before the batch — card, Apple Pay, Google Pay, ACH, or crypto — so fifty purchases never stall on a payment prompt.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Prepaid balance No card prompt per label.
Buy the batch through One sitting, no stalls.
One ledger per run Every label its own line.

Choosing a cadence: when batching beats shipping daily

Shipping one order at a time feels responsive, but it prices every parcel at its worst. Each order interrupts something else, restarts the same setup — find the scale, find the right box, open the tool, re-check the address — and ends before any of that setup pays for itself. Batching moves all of those fixed costs to the front of a single run, and the longer the run, the less each parcel carries. The trade-off is dispatch delay, which is why the cadence is not a preference but a calculation: take the shortest handling time you have promised on any channel, and batch as rarely as that promise allows. A shop that promises three business days everywhere can ship twice a week. A shop that promises next-day dispatch on one channel batches every morning, because the strictest promise sets the clock for the whole operation.

The signal that you are ready for batch days is not a volume milestone, it is a feeling: shipping has become the thing that fragments the rest of your work. If you touch the tape gun more than a couple of times a day, the interruptions are already costing more than the parcels. And a deliberate cadence has a second, quieter benefit — buyers get consistent dispatch behaviour instead of a lottery, which shows up in fewer where-is-my-order messages than daily-but-erratic shipping produces.

Consolidating channels into one list: synced stores and exported files

A batch day starts with a single list of every open order, and the list is only trustworthy if nothing has to be remembered onto it. Orders arrive three ways here. Synced storefronts are the easy case: Shopify, Etsy, WooCommerce, and TikTok Shop connect directly, and their open orders land in the To Ship queue on their own. Channels without a connector arrive as files — a marketplace export, a spreadsheet from a wholesale buyer — and the CSV import mechanic turns a file into validated, quotable rows with a saved column mapping. The third stream is the one every seller forgets to count: the DM sale, the market-stall follow-up, the buyer who texted an address. Those get pasted or screenshotted in, and Billy drafts them into the same queue as everything else.

The point of consolidation is not tidiness, it is that the batch is only a batch if it is complete. An order that lives outside the list does not get validated with the others, does not get quoted with the others, and surfaces at the worst possible time — after the boxes are sealed and the drop-off is done. If you run more than two or three storefronts, the channel-by-channel intake picture is its own subject, covered on the multiple-stores page; this page assumes the orders have arrived and cares about what order you do things in next.

The sequence: validate, buy, print in pick order, pack against the stack

The run sheet below is the whole argument of this page. Each step exists to catch a specific class of error at the point where it is still cheap, and the ordering is what does the work — the same five activities in a different order catch the same errors after they have already cost money.

Step What happens What it catches, and why here
1. Gather Every open order into one list: synced stores land automatically, exports come in as a file, DM orders get pasted in. Orders that never made it into any system — the ones that become apology emails.
2. Validate Every address checked before any money moves, with a residential or commercial classification badge per destination. The missing apartment line, the ZIP that does not match the city — while fixing them costs a message, not a reship.
3. Buy Each parcel quoted across USPS, UPS, FedEx, and DHL and bought from one prepaid balance, in one sitting. The habit carrier. A batch is the one time comparing four prices per parcel costs no extra effort.
4. Print in pick order Labels printed in the order you will walk the shelves, not the order the sales came in. Backtracking. The printer stack becomes the pick list.
5. Pack against the stack Top label pairs with the first item pulled. Seal, apply, next. Swaps. A label that does not match the item in your hand is visible now, invisible after sealing.

Two orderings matter more than the rest. Validation goes before buying because an address error found before money moves costs a message to the buyer, while the same error found after purchase costs a void and a rebuy, and found after dispatch costs a returned parcel. And printing goes in pick order — the order you will physically walk your shelves or bins — because it converts the label stack into the pick list. Pack against the stack and every parcel is a self-checking pair: the label on top must match the item you just pulled, so a swap is caught by the next pair being wrong, not by two buyers a week later opening each other's orders. When the run ends, everything goes to the carrier drop-off in one trip; the day is planned around that trip, not around waiting for anyone to arrive.

Handling exceptions mid-batch without derailing the day

Every batch throws exceptions: an address the validator flags, an item that is not on the shelf where it should be, a buyer message that arrives mid-run asking to combine two orders. The rule that protects the day is simple — the batch does not stop. Exceptions get parked in a physical and digital holding lane, the run continues, and the parked items are worked as their own small batch at the end. Stopping a fifty-parcel run to chase one problem trades fifty parcels of momentum for one parcel of resolution, and the interruption is where mispacks breed: the stack and the pile lose their pairing the moment you start shuffling either one.

Caught mistakes are cheaper here than they feel. A label bought for a parcel that then changes — heavier than expected once packed, or merged with another order — can usually be voided with the credit going back to the wallet, and the void page covers how each carrier decides that. What matters operationally is the sequencing again: a mistake found at the packing bench, before sealing and before drop-off, is a two-minute fix from the same prepaid balance. The batch day exists to make sure that is where mistakes get found.

A batch day, compressed

Every channel in. One stack out.

The pipeline below is the run sheet in motion: the merged queue takes orders from synced stores, imported files, and pasted messages; validation runs before any money moves; and what comes out is a printed stack in pick order, ready to pack against.

1
The morning pile
Three streams, one queue
weekend_sales

Two DM sales from Saturday — paste the threads and Billy drafts both into the queue with the rest.

Synced stores
Shopify, Etsy, WooCommerce, TikTok Shop
Exported files
Marketplace CSVs mapped and imported
The merged queue
Open orders
all channels
Addresses
validated first
Quotes
four carriers each
Wallet
funded for the run
Everything open, in one list

A batch is only a batch if it is complete — the DM order that stays in the inbox becomes next week's apology.

2 Before money moves

Validate the list, then buy it through.

Billy AI
  • Every destination checked, with a residential or commercial badge
  • Flagged rows parked in the exception lane — the run does not stop
  • Each parcel quoted across USPS, UPS, FedEx, and DHL
  • The whole batch bought from one prepaid balance in one sitting
Validated. Quoted. Bought.
3
Print in pick order
The stack is the pick list
Batch debited from wallet
One run, one ledger section
all-in
USPS
Labels out, in shelf order
Top label pairs with the first pick
stacked

Pack against the stack and a swap announces itself as a mismatched pair at the bench — not as two confused buyers next week.

Every storefront. One list to run the batch off.

A batch is only a batch if the list is complete.

Shopify, Etsy, WooCommerce, and TikTok Shop sync their open orders into the To Ship queue on their own, and tracking pushes back when you print. Channels without a connector arrive as exported files, and the DM sale gets pasted in. Step one of the run sheet is gathering all three streams into one list — because the order that stays outside it is the one that surfaces after the boxes are sealed.

Via AItiles: paste a DM or a screenshot — the stray order every seller forgets to count still makes it into the run.

Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Instagram logo Instagram AI Facebook logo Facebook AI
Amazon logo Amazon
eBay logo eBay
Show 15 more Show less
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Shopify Plus logo Shopify Plus Soon
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Temu logo Temu
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
What a batch day leans on

The run is only as fast
as its slowest interruption.

Five things stop a fifty-parcel sitting from stalling: a funded balance, a way in for the orders no export contains, honest per-parcel pricing, four carriers competing on every box, and an API when the batch outgrows the bench.

Fund the run before
the run starts

Top the prepaid wallet up once — card, Apple Pay, Google Pay, ACH, or crypto — and the whole batch buys against balance with no payment prompt between labels. A voided mistake credits straight back, spendable before the run is even over.

Wallet balance
$1,247.36 USD
AI

The orders that were
never in any export

Every batch has strays: the Instagram sale, the repeat buyer who texted, the market follow-up. Paste the thread or drop a screenshot and Billy drafts the label into the same queue, so the batch is actually complete when you press buy.

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

Fifty parcels,
fifty known prices

Each label is one all-in number locked at quote, and that exact amount leaves the balance — so the cost of the whole run is known before the printer starts, not reconstructed from a statement afterwards.

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

No default carrier
for the day

A batch tempts you to pick one carrier and stop thinking. Here every parcel in the run is quoted against USPS, UPS, FedEx, and DHL individually, so the heavy box and the light envelope each go with whoever actually wins them.

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

When the batch
outgrows the bench

The same gather-validate-buy sequence runs over REST with idempotency keys and signed webhooks, unlimited calls on every plan — so the morning batch can become a scheduled job without changing the workflow.

POST /v1/shipments
{
"to": { "name": "Maya" },
"from": { "name": "Alex" },
"service": "ups_ground",
"label_format": "pdf"
}
Webhook delivered
GoatLabels mobile To Ship queue during a batch run
Billy drafting a stray DM order into the batch queue on mobile

Batch bought

Printing in pick order

The run does not need a desk

Gather, validate, buy — all of it one-thumbed.

The bench is where the parcels are, and a run that makes you walk to a computer to buy the next label has already lost the momentum it was designed to protect. The merged queue, the validation flags, the four-carrier quotes and the buy action all live on the phone propped against the tape dispenser.

Work the merged queue from the phone — synced stores, imported rows, and pasted DM orders in one list.
Flagged addresses show up before you spend, so exceptions get parked instead of discovered mid-pack.
Each parcel quoted against USPS, UPS, FedEx, and DHL — a batch is not a reason to default to one carrier.
Buy against the funded balance without a payment prompt between labels.
One-tap print to the share sheet or a thermal printer over Wi-Fi, in the order you will pick.
Billy is included, not a paid tier

Add the stray order without breaking the run.

Mid-run is exactly when the strays turn up: the buyer who texted an address, the market follow-up nobody wrote down. Stopping a fifty-parcel sitting to type one in is how the stack and the pile lose their pairing. Say it out loud instead and Billy drafts it into the same queue, validates the destination, and quotes four carriers on it, so the order joins the batch rather than becoming next week's apology. Included on every plan. This is the real product, not a render.

goatlabels.io/dashboard/shipments — Billy
Billy adding a spoken order into the batch queue over the shipments list

Listening

"Add one more — two pounds to Priya in Austin."

Added to the run

Validated · quoted · in the queue

Speaks plain English · drafts from voice, paste, or a screenshot · lands in the same merged queue as everything else · included on every plan.

Per parcel, even in a batch

Fifty parcels. Fifty known prices.

This is step three of the run sheet, and it is the step a batch tempts you to skip — pick one carrier for the day and stop thinking. Every parcel in the run gets its own comparison instead, each column one all-in number locked at quote time, so the cost of the whole sitting is known before the printer starts rather than reconstructed from a statement afterwards. Figures are illustrative.

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

USPS

Priority Mail Intl

10–15 days

$7.40

$1.90 of duties & taxes already inside the number

all-in · one ledger line per label

Cheapest for this parcel
FedEx

FedEx

Intl Connect Plus

3–5 days

$8.90

$2.20 of duties & taxes already inside the number

all-in · one ledger line per label

DHL

DHL

Express Worldwide

1–2 days

$9.80

$2.50 of duties & taxes already inside the number

all-in · one ledger line per label

No carrier invoice the day after Void → credit straight back to your wallet, spendable before the run ends Multi-currency display
Public API v1

When the morning batch becomes a scheduled job.

The run sheet is a sequence, and a sequence is automatable. The same gather, validate, quote, buy steps run over REST and JSON with one Bearer header, so the sitting that currently starts when you sit down can start on a timer instead — with the printed stack still coming out in pick order at the end. Unlimited calls on every plan.

Create and quote every open order, then buy the run in one pass
Real idempotency keys — a retried request never buys a second label for the same parcel
Signed webhooks instead of polling, so tracking events land without a poll loop
OpenAPI 3.1 spec, no SDK lock-in, unlimited calls on Free as well as Pro
Read the shipments API docs Get a free API key $0 on every plan, Free included
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"
}
Pricing for a run, not a seat

Batch on Free. Pay for the labels, not the week between runs.

Everything a batch day needs is on the free plan: the merged queue, address validation before purchase, four-carrier quotes per parcel, buying the run in one sitting, and printing. There is no monthly minimum to print, so the quiet week after a big run costs nothing. Pro is a flat monthly plan that lowers per-label pricing at volume — useful when the runs get big, never required to run one.

Pro

Most popular
$40 / month
Unlimited shipments — for the run that clears a whole week at once
Cheaper label pricing that scales down as the runs get bigger
Billy AI on Telegram — add a stray order to the run 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 for a weekly run, and nothing owed in the week you did not ship.

50 shipments a month, no monthly minimum to print
One merged queue — synced stores, imported files, and pasted orders together
Address validation before any money moves, with a residential or commercial badge
USPS, UPS, FedEx, and DHL quoted per parcel, not per batch
REST API with unlimited calls; wallet funded by card, Apple Pay, Google Pay, ACH, or crypto

Billy is not an upsell

The assistant that drafts the orders no export contains — the DM sale, the texted address — runs unlimited on Free. It is what makes the list complete, and an incomplete list is the one failure a batch day cannot absorb. 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.

We'll beat your current rates

Bring your invoice — on Pro we work with you to beat the rates you're getting from

ShippoPirateShipShipStation
No contracts No monthly minimum to print No seat fees for the bench
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS, FedEx, and DHL as one all-in number and that exact amount leaves your prepaid balance, one ledger line per label. An unused label can usually be voided for wallet credit — the carrier-by-carrier detail is on the void page linked above. Full pricing details

Whose day a batch actually rescues

Four benches where shipping stopped fitting between tasks.

The signal is never a volume milestone — it is that shipping has become the thing fragmenting the rest of the work. These are the four shapes of seller where a run sheet buys back the most, and what each one's batch is made of.

Sellers running several channels at once

Synced stores plus exports plus strays

One list or no batch

Shopify, Etsy, WooCommerce, and TikTok Shop land in the queue on their own; everything else arrives as a file or a paste. Completeness is the whole game — an order outside the list is neither validated nor quoted with the others.

4 quotes per parcel validated before buying printed in pick order
goatlabels.io/dashboard/shipments
GoatLabels shipments queue during a batch run, every parcel quoted and bought

Makers who batch around studio days

Make on the good days, ship on the set ones

A deliberate cadence, set from the strictest handling promise you have made, gives buyers consistent dispatch instead of a lottery — and keeps the tape gun off the bench on the days the work happens.

Cadence, not preference

Batch as rarely as your slowest promise allows

Sellers with orders in a chat thread

The stray that never made it to any export

did you get my address from Saturday?
Pasted into the run · validated · quoted

Shops whose runs outgrew the bench

The same sequence, on a timer

1

prepaid balance funds the whole sitting, so fifty purchases never stall on a payment prompt

Batch fulfillment days, answered

How often should I batch instead of shipping every order as it comes?
Set the cadence from your slowest promised handling time, then batch as rarely as that promise allows. A shop promising three business days can run two batch days a week; a shop promising next-day dispatch batches every morning. The volume threshold is lower than most sellers think — once you ship more than a handful of parcels a day, the setup cost of a run (scale out, boxes staged, wallet topped up) amortises better over one sitting than over five interruptions.
What order should I pick, print, and pack in?
Buy the whole batch first, then print the labels in the same order you will pick the items, and pack against the printed stack — top label goes with the first item you pull. The stack order is the error control: if the labels come out of the printer in pick order, a mismatch announces itself as a label that does not match the item in your hand, instead of hiding until a buyer emails.
How do I combine orders from different stores into one batch?
Synced channels do it for you: Shopify, Etsy, WooCommerce, and TikTok Shop orders land in one To Ship queue automatically. Anything that arrives as an export can come in as a file — the column-mapping and per-row validation mechanic is covered on the bulk CSV page — and one-off DM orders get pasted in for Billy to draft. The full channel-by-channel intake matrix lives on the multiple-stores page.
What do I do with a mistake found mid-batch?
Park it, finish the run, then fix it. A wrong label found before the parcel is sealed is still cheap — an unused label can usually be voided, with the credit landing back in your wallet, and the details of that are on the void page. The expensive version of the same mistake is the one found after the stack and the pile have both been shuffled to chase it.
Do I need paid software to run batch days?
No. Everything a batch day needs — the merged queue, address validation, four-carrier quotes, bulk buying, and printing — runs without a subscription here, and there is no monthly minimum to print. You pay for the labels in the batch and nothing in the quiet week after it. The pricing page has the two plans; Pro lowers per-label pricing at volume but is never required to batch.
Real sellers, real words

Sellers who ship the week in one sitting.

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
No monthly minimum to print. Quiet weeks cost nothing.

Ship the week
in one sitting.

Merge every channel into one queue, validate before you pay, buy the batch across four carriers, and print in the order you pick.

Sign up in seconds. No card required. Pay per label, never per month.