USPS
Ground Advantage
2-5 days$7.40
$1.20 of Premium insurance included
all-in, one balance for the whole run
Connect Patreon and every active patron on a shipping tier, with the address on their Patreon profile, lands in one To Ship queue. Validate each address, compare USPS, UPS and FedEx on domestic parcels and DHL on international ones, and buy from one prepaid wallet. Repeat runs batch from the patron export with a saved mapping; tracking is not sent back to Patreon.
Each patron row is validated and priced across USPS, UPS and FedEx (DHL on international rows) before the batch buys, because between any two runs, somebody moved.
Monthly, quarterly, or annual runs draw on one prepaid balance funded by card, Apple Pay, Google Pay, ACH, or crypto, and on Free the months between runs cost nothing; a run month past 50 shipments needs Pro ($40 a month, no minimum term), which you can cancel after the run.
Updated
Patreon is a live connector. Click Connect Patreon on the Connect page in your dashboard and approve access on Patreon; there is no store URL to paste. GoatLabels then imports every active patron who is entitled to at least one tier that requires shipping and whose Patreon address has a street, a city, and a country. Each of those patrons becomes one draft in To Ship, addressed to the recipient on their Patreon address (or the patron's name), with the tier title as the item description. The pledge amount is never used as a declared value.
New patrons keep arriving on their own: Patreon notifies GoatLabels when a membership or pledge is created or changes, and background polling picks up the rest. The import is once per patron, though. A patron imported once is not drafted again by a later sync, so connecting brings in the current shipping-tier cohort plus every patron who joins after it, not a fresh copy of the roster each month. Two habits finish the setup. Patreon sends no parcel size, so set the reward box's weight and dimensions from a saved parcel preset before you buy. And tracking is not sent back to Patreon, which has no API for it, so tell patrons the run shipped in your own post or message.
Crowdfunding fulfillment and Patreon fulfillment get lumped together, and they should not be. A campaign ships once: one enormous batch, then silence. That shape, and the way backer-survey addresses age between pledge and print, is the Kickstarter page's territory. A Patreon reward run is the opposite animal. It repeats, monthly for some tiers and quarterly for others, and it ships to substantially the same cohort every time. The list is not one frozen snapshot but a living roster: a few patrons join, a few lapse, and the core carries over from run to run.
That repetition changes what the workflow should optimise for. A one-shot batch can afford a slow, careful setup because it never happens again. A recurring batch cannot: whatever the first run cost you in setup, the tenth run should cost almost none of it. The three sections below are the three places the cadence bites: the addresses that silently change between runs, the column mapping you should never have to rebuild, and the returned parcel that is actually your cohort telling you something. Get those three right and a reward run becomes an hour a month, not a weekend.
Between any two runs, some fraction of your cohort moved. People change apartments, leave college towns, or fix a typo in their head and never in their profile, and a patron whose address changed has no reason to remember that your fulfillment depends on it. This is drift: the list decays a little every month, and the decay compounds precisely because the cohort persists. Ship a stale export quarterly for a year and the same wrong address can eat four parcels before anything forces the correction.
The defence is to validate every row on every run, no matter how many times the same rows have validated before. Export the patron list fresh each run (never reuse last quarter's file, because a stale file is drift you chose) and let the batch validator check each address before any label is bought, with a residential or commercial classification on every row. Give the connector's drafts the same check before you buy them. The rows that fail are the drift, caught while it is still a message to a patron rather than a parcel in a returns pipeline. The cost asymmetry is stark: a flagged row costs a moment of attention, while an unflagged bad address costs the item, the postage, and the patron's month of waiting, and the run-over-run cadence multiplies whichever one your workflow chooses.
Run one can come straight from the connector, with the shipping-tier cohort already waiting in To Ship. Because the connector drafts each patron once, repeat runs to that same cohort start from Patreon's export, which puts patron addresses in its own columns. Those columns have to be paired with shipping fields: name to name, street to street, tier kept as a reference so the right reward goes in the right box. Do that pairing once, on the first run you export, and save it as a preset. The full mapping-validation-purchase mechanic is the bulk CSV page's to explain; what matters here is what the preset does to a cadence. Run two loads the saved mapping against the fresh export and the setup step simply disappears: export, load preset, validate, quote, buy.
This is the quiet argument for treating recurring fulfillment as a batch discipline rather than a monthly improvisation. The parcels help too: reward runs ship near-identical packages, so a saved parcel preset carries the weight and dimensions across the whole file, and it is also how the connector's drafts get a real box size, since Patreon sends none. The quote runs per row against USPS, UPS and FedEx (DHL on international rows) with an all-in price on each. The batch buys row by row from one prepaid wallet, so one flagged address holds back one parcel, never the run. By the third run the entire loop is muscle memory measured in minutes, which is exactly what a task you will do twelve times a year deserves.
Even a validated list will occasionally bounce a parcel, because validation proves an address exists and is deliverable in form, not that your patron still lives there. On a one-shot campaign a return is pure loss. On a recurring batch it is information: the return names exactly which cohort member's record is stale, in time to fix it before the next run compounds the error. That reframing is the closest thing recurring fulfillment has to a free lunch, and it only works if returns feed corrections: a returned box you reship without updating the patron's record is a box you have scheduled to bounce again next quarter.
So close the loop deliberately. When a reward comes back, message the patron, get the current address, and fix it at the source (their Patreon profile) so every future export inherits the correction, then reship from the wallet. What each carrier does with an undeliverable parcel, and who pays the ride home, is the returned-to-sender page's territory. And if the numbers tempt you toward a fulfillment service instead, run the arithmetic first: on Free (up to 50 shipments a month) a quarterly run of up to 50 patrons costs only postage four times a year, and a larger run needs Pro ($40 a month, no minimum term), which you can cancel once the run has shipped, and the address-drift checks above already cover the work a fulfillment service would charge for.
A recurring run is judged by what it costs the tenth time, not the first. This is the loop that gets cheaper with repetition: pull a fresh patron export, load the mapping you saved the first time, let every row revalidate whether or not it validated last quarter, quote each row across USPS, UPS and FedEx (DHL on international rows), and buy row by row from one prepaid balance.
hey, I moved in March, can this quarter's print go to the new place?
Connected patrons arrive in To Ship once, the first time they qualify. Each later run starts from a fresh export, and that is not busywork: it is the step that lets a patron's own profile correction reach your labels.
Billy AI
Nothing is carried over from last quarter: rates are re-quoted per row, so a patron who moved three zones out changes carrier without you noticing. A row that fails validation waits for its correction while the rest of the run ships.
Patrons on a shipping tier arrive in To Ship with the address on their Patreon profile. Store sync covers Shopify, Etsy, WooCommerce, TikTok Shop, Amazon, eBay, Squarespace, Wix, Walmart, Square, BigCommerce, Magento, and Temu, and pushes tracking back to those stores. Patreon has no tracking API, so tell patrons the run shipped in your own updates.
Recurring fulfillment rewards whatever amortises: mappings that persist, presets that carry parcels, validation that runs itself. Each piece below exists to make run ten cheaper than run one.
One prepaid balance funded by card, Apple Pay, Google Pay, ACH, or crypto, debited when a label is bought (and, on Pro, for the $40 monthly fee). A monthly tier, a quarterly tier, and an annual tier can all draw on it, and the eleven quiet months of an annual tier owe nothing on Free; if the run needed Pro, cancel it afterwards.
Every row is re-validated on every run with a residential or commercial classification, no matter how many runs that patron has survived. Drift does not announce itself: the check that catches it has to be unconditional, and here it is the default rather than a discipline.
BillyLIVEThe Patreon export's columns are paired to shipping fields once and saved; the reward box's weight and dimensions are saved once too. Run two is export, load, validate, buy: the setup work exists exactly once in the life of the tier, which is the whole economics of a recurring batch.
USPS, UPS and FedEx (DHL on international rows) are priced per row on every run rather than locked in once, so a rate change between quarters, or a patron who moved three zones out, changes which carrier wins without you noticing or caring. The quote tracks the cohort as it drifts.
Creators with a developer in the community can drive the same loop over REST: quote, buy, and track per row with signed webhooks and real idempotency keys, unlimited calls on every plan: a reward run as a script that fires the morning after the tier bills.


Run row bought
Quarterly print tier | Providence, RI
Reward runs get packed wherever the boxes are. The batch itself starts on a laptop, from the connected queue or a file, but everything after it (which rows are still flagged, which patron needs messaging, the replacement for the one who moved) belongs on the phone in your apron pocket.
Packing a hundred near-identical rewards is a two-handed job, and the question that interrupts it is always about exactly one patron. Ask out loud and Billy finds that row's shipment and reads the status back, which is also the answer you owe whoever messaged you. Included on every plan, so the eleven silent months of an annual tier cost nothing to keep it. This is the real product, not a render.

Listening
"Did this quarter's print ship to Priya yet?"
Out for delivery
Quarterly tier | Providence, RI | scanned this morning
Speaks plain English, remembers your saved parcel presets between runs, and is included on every plan, never a paid tier.
A reward run tempts you into flattening the whole file onto one carrier, because the boxes really are identical. The addresses are not: the same parcel to a patron three zones further out is a different price, and re-quoting every row on every run is what stops the cohort's drift from quietly costing you. Each column is one all-in number locked at quote time. Figures are illustrative.
Ground Advantage
2-5 days$7.40
$1.20 of Premium insurance included
all-in, one balance for the whole run
Ground
3-4 days$10.80
$1.20 of Premium insurance included
all-in, one balance for the whole run
Home Delivery
2-4 days$11.40
$1.20 of Premium insurance included
all-in, one balance for the whole run
Recurring is the word that makes an API worth having: the same run, on the same cadence, indefinitely. Creators with a developer in the community can drive the whole loop in code (pull the roster, validate, quote, buy) with unlimited calls on every plan, so automating a monthly run never moves you onto a pricier one.
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"
}
A reward run is a burst of postage followed by weeks of silence, and a monthly software fee taxes the silence. Here the Free plan covers 50 shipments a month, batches included, and the wallet only moves when a label is bought. Past 50 a month, Pro is one flat monthly plan with unlimited shipments.
Rate by plan
illustrativePro: one flat monthly plan, unlimited shipments
$0 / forever
A quarterly run of up to 50 patrons, four times a year, on the plan that costs nothing.
The patron who messages a new address the day after the run, the one-off replacement reward: paste the message and Billy drafts the label, validated before you pay. The batch handles the cohort; Billy handles the exceptions.
GET /api/v1/shipments
200 OK · plan: free
Unlimited calls on Free, still unlimited on Pro.
Put a real parcel through and compare the side-by-side rate against what that label costs you on
ShippoPirate ShipShipStationLabel prices are quoted live from USPS, UPS, FedEx, and DHL as one all-in number per row, and that exact amount leaves the prepaid balance when the row is bought. Full pricing details
Monthly, quarterly, annual, or the tier that ships once: drift and setup cost land differently on each of them, and the saved preset is what flattens all four.
Twelve runs a year, same cohort
The cadence that compounds fastest: twelve chances a year for an address to go stale, and twelve chances to catch it. Revalidating every row on every run is what turns a recurring loss into a recurring correction.

Four runs, near-identical parcels
A quarter is long enough for a cohort to drift and short enough that setup cost still matters. Saved parcel presets carry the box across the whole file, so the work per run is the export and the two messages to the patrons who moved.
Run loaded from the saved preset
Columns paired once, on run one, and never again
The patron who writes after the run shipped
Eleven months of nothing at all
0
owed in every month the run does not ship
Related: Kickstarter fulfillment,bulk labels from a CSV,why parcels come back,subscription box shipping, andthe full pricing model.
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
Connect Patreon or export the patron list, validate every address, and buy the run across USPS, UPS and FedEx (DHL on international rows) from one prepaid wallet. Next run, do it again from the export with the saved mapping, minus the setup.
No card required. No contract. No subscription on Free between runs.
Updated