How to Automatically Log Shipping Costs in QuickBooks Using Zapier and Shippo

Every time you buy a shipping label in Shippo, that cost needs to land in QuickBooks. At 50 labels a month, entering it by hand is manageable. At 500, it's hours of data entry, entries logged to the wrong account, and shipping costs that show up in your books a week after the fact.
This guide walks through how to build a Zap that automatically creates a QuickBooks Online expense every time a label is purchased in Shippo, what to watch for when setting it up, and how to categorize shipping costs correctly so your books actually reflect reality.
This guide covers the cost-logging side. For the full picture of both workflows, who they're best for, and the known limitations, see Shippo + QuickBooks Online: How to Automate Shipping and Accounting.
Before You Build: How to Classify Shipping Costs in QuickBooks
Before you build the automation, figure out how you're going to classify the expenses. If you get it wrong, you'll spend time later cleaning up your chart of accounts.
Outbound shipping (labels you buy to ship orders to customers) is an operating expense, not COGS.
| Shipping type | QuickBooks account type | Detail type |
|---|---|---|
| Labels to ship orders to customers | Expense | Shipping, Freight and Delivery |
| Freight to receive inventory (inbound) | Cost of Goods Sold | Shipping, Freight and Delivery COGS |
Using COGS for outbound shipping inflates your gross margin and understates your operating expenses. It's one of the more common bookkeeping errors in e-commerce, and it matters at tax time.
When you set up the Zap's QuickBooks action, you'll be asked to pick an expense account. If you don't already have a "Shipping Expense" or "Outbound Freight" account in your chart of accounts, create one first: go to Accounting > Chart of Accounts > New, set the account type to Expense, and the detail type to Shipping, Freight and Delivery.
What the Zap Does
The workflow has two steps: a Shippo trigger that detects new label purchases, and a QuickBooks action that creates a matching expense entry with the cost, carrier, and date.
No existing Zapier template covers this workflow. All pre-built Shippo + QuickBooks templates run the other way, turning QuickBooks invoices into Shippo orders. You'll build this one from scratch in Zapier's Zap editor, which takes about 15 to 20 minutes the first time.
What gets automated:
| Field | Source |
|---|---|
| Expense amount | Shippo label cost |
| Date | Label purchase timestamp |
| Expense account | Your "Shipping Expense" account (set once in Zapier, applies to every label) |
| Payment account | Your business checking or credit card (set once) |
| Description / Memo | Tracking number, carrier, or order reference from Shippo |
How to Build the Zap
You need a Zapier account (paid plan — multi-step Zaps aren't available on the free tier), a Shippo account, and QuickBooks Online.
Step 1: Create a New Zap and Connect Shippo
In Zapier, create a new Zap. Search for Shippo as the trigger app and select the New Shipping Label trigger.
Connect your Shippo account if you haven't already. Zapier will ask for your Shippo API key, available in your Shippo account under Settings > API.
Run a test trigger and Zapier will pull in a recent label, showing all available fields. Check this list carefully for the label cost field (the amount you paid, not the postage rate shown to your customer).
Note on the cost field: Whether the label cost appears in your trigger output depends on your Shippo account configuration and the Zapier integration version you're running. During the test, scan the available fields for anything labeled cost, amount, or charge. If you find it, move to Step 2. If not, jump to the troubleshooting section below.
Step 2: Add the QuickBooks Create Expense Action
Add a new action step, search for QuickBooks Online, and select Create Expense.
Map the fields:
| QuickBooks Field | What to Map |
|---|---|
| Payment Account | Your business checking or primary card account |
| Payment Type | Match your payment method (typically Credit Card or Check) |
| Date | Shippo label object_created timestamp |
| Line Item — Account | Your "Shipping Expense" account |
| Line Item — Amount | Shippo label cost field (see note above) |
| Line Item — Description | Shippo tracking_number — this ties the expense back to a specific shipment |
| Vendor/Payee | Leave static (e.g., "USPS") or map dynamically from Shippo's carrier field if available |
| Memo | Optional — use for order number or Shippo transaction ID for reconciliation |
QuickBooks requires two fields: Payment Account and a Line Item with both Account and Amount populated. Missing either, and the Zap fails. This is where most failures happen, so see troubleshooting below if you hit it.
Step 3: Test and Activate
Run a test with a real label. Check the resulting expense in QuickBooks: confirm the amount matches what you paid in Shippo, the date is correct, and it's hitting your Shipping Expense account (not an uncategorized account).
Once the test expense looks right, turn the Zap on. Every new label purchase in Shippo will now automatically create a corresponding expense in QuickBooks.
What This Doesn't Cover (Yet)
This Zap logs the cost of the label as an expense. Here's what you'll still need to handle separately:
Invoice linking is manual. The expense gets logged as a standalone entry, not tied to a specific invoice. If you need per-order margin analysis, you'll attach expenses to invoices by hand or build a second Zap to automate it.
Refunded labels aren't automatically adjusted. If a label is voided or refunded in Shippo, the expense in QuickBooks stays. You'll reverse those manually or set up a separate Zap with a webhook.
Labels purchased outside Shippo aren't captured. If you occasionally buy labels directly at USPS.com or through another platform, those costs won't trigger this Zap. You'd still enter those by hand.
Common Issues and How to Fix Them
The cost field isn't showing up in the trigger output. If the label cost doesn't appear in your trigger fields, here are two ways to handle it:
- Option A (simpler): Use Shippo's
metadatafield. When purchasing labels in Shippo, populate the metadata field with the label cost. That field passes through the trigger and can be mapped to the QuickBooks amount field. - Option B (more robust): Add a Zapier Code step between the trigger and the QuickBooks action. The Code step calls Shippo's API with the rate ID from the trigger to fetch the full rate object, including amount and carrier. This requires a Shippo API key in the Code step and a few lines of JavaScript or Python.
QuickBooks action fails with "Required param missing." This almost always means the Line Item Amount field is empty. Double-check that the Shippo cost field is mapped and populated in your test data. If Zapier shows the field as empty during the test, the trigger isn't passing the cost value — see the options above.
Expenses are landing in "Uncategorized Expense" in QuickBooks. You've mapped the wrong Line Item Account field, or the account name doesn't match exactly what's in your QuickBooks chart of accounts. The account field in Zapier must match the name in QuickBooks precisely. Confirm the account name in Accounting > Chart of Accounts and re-map.
Duplicate expenses are appearing. Shippo sometimes fires the trigger more than once per label when the status updates. To prevent duplicates, add a Zapier Filter step after the trigger that only continues if the label status equals SUCCESS.
Frequently Asked Questions
Should shipping costs be COGS or an expense in QuickBooks? Outbound shipping is an operating expense, not COGS. That means the labels you buy to fulfill customer orders belong in an Expense account, not Cost of Goods Sold. Use the detail type "Shipping, Freight and Delivery." COGS is for costs tied to producing what you sell, not delivering it.
Will this Zap catch every label I purchase in Shippo? Yes, as long as labels are purchased through your Shippo account. Labels bought directly through a carrier's website or another platform won't trigger this Zap.
Does this work with Shippo's free plan? Shippo's free plan includes API access and label purchasing, so the trigger will fire. The Zapier side requires a paid Zapier plan — multi-step Zaps aren't available on the free tier.
How do I reconcile shipping costs at month-end? Run a QuickBooks report filtered to your Shipping Expense account for the month. Cross-reference against Shippo's transactions export (available from your Shipments view). The tracking numbers in the QuickBooks memo field should match the tracking numbers in the Shippo export.
Can I log shipping costs by carrier automatically? If Zapier exposes a carrier field from the Shippo trigger, you can create separate expense accounts per carrier (e.g., "Shipping — USPS," "Shipping — UPS") and use a Zapier Paths step to route each label to the correct account. More complex to set up, but useful if you need per-carrier cost visibility.
Get Started
Start at zapier.com, create a new Zap, select Shippo as the trigger app, and choose New Shipping Label. If you don't have a Shippo account yet, create one free. The free Starter plan includes up to 30 labels per month with no subscription fee, and discounted rates across 40+ carriers kick in on your first label.
Next step: If you're also re-entering order data from QuickBooks into Shippo by hand, the complementary workflow automates that too. See How to Connect Shippo and QuickBooks Online With Zapier for the setup guide.
For an overview of both workflows and how they fit together, see Shippo + QuickBooks Online: How to Automate Shipping and Accounting.
Looking for a multi-carrier shipping platform?
With Shippo, shipping is as easy as it should be.
- Pre-built integrations into shopping carts like Magento, Shopify, Amazon, eBay, and others.
- Support for dozens of carriers including USPS, FedEx, UPS, and DHL.
- Speed through your shipping with automations, bulk label purchase, and more.
- Shipping Insurance: Insure your packages at an affordable cost.
- Shipping API for building your own shipping solution.
Stay in touch with the latest insights
Be the first to get the latest product releases, expert tips, and industry news to help you save time and money on shipping.







