What "shipping revenue" actually means in a sales report
Shipping revenue is a line of money, not a line of profit. When a customer pays you $6.95 to ship a mug, that $6.95 is revenue the moment the order is placed. It is not the same as the $8.40 the carrier bills you a day later to move the box.
Most sales reports blur these two things together, or hide one of them entirely. That is the whole reason merchants get confused about their "sales" number: the report is showing you gross cash flow through the store, not what you kept.
The confusion gets worse because different tools slice shipping differently. Some pixel setups pass shipping and tax into your ad platform's revenue figure; others pass only the product subtotal. If your product counts match across tools but the revenue doesn't, shipping is usually the culprit — a pattern we cover in the guide to reconciling your ecommerce data.
Gross, net, total: where shipping hides
Shopify splits "sales" into three tiers, and shipping only appears in one of them. According to Shopify's Finances report documentation, the definitions work like this:
- Gross sales = product price × quantity, before taxes, shipping, discounts, and returns.
- Net sales = gross sales − discounts − returns. Still no shipping, still no tax.
- Total sales = net sales + shipping + taxes + duties − returns.
So shipping revenue lives only in total sales. If you glance at total sales and think "that's what my products sold for," you're wrong — you're reading product sales plus the shipping-and-tax markup on top.
There's a separate Shipping column too. Per the Shopify Sales report docs, it's defined as shipping charges − shipping discounts − refunded shipping amounts. That column is the clean number to watch if you want shipping revenue on its own.
One more quirk worth knowing: product-level reports drop shipping entirely. Shopify's docs explain that a single order can have several products but only one shipping charge, so the charge "can't be apportioned between the products." That's why your "total sales by product" report will never sum to your store-wide total sales.
Why total sales overstates what you earned
Say you run a print-on-demand store. A customer buys one $28 shirt, pays $5 shipping and $2.64 tax. Your total sales line records $35.64. Your product actually sold for $28.
If you judge the health of the business by total sales, you've just overstated your product revenue by more than a quarter — and none of that extra is guaranteed to be profit. The tax isn't yours at all; it's the government's, held in transit. The shipping might be a wash or a loss once the carrier is paid.
This is the same category of distortion that makes refunds and cancellations misread. When an order is refunded, Shopify pulls the shipping revenue back out of total sales, but your ad platforms usually keep the original conversion — so your numbers drift apart. If your reports include orders that were never really revenue, read our breakdown of how cancelled orders skew your analytics and how test orders quietly pollute your totals.
Worked example: shipping revenue vs shipping profit
Let's walk the full arithmetic on a single order, so you can see where the shipping money goes.
Say you sell a candle for $24. You charge a flat $5.95 for shipping. Here's the order:
- Product price: $24.00
- Shipping charged (shipping revenue): $5.95
- Tax collected: $2.10
- Total sales recorded: $32.05
Now the costs that never show up in the sales report:
- Carrier label (what you actually pay to ship): $7.80
- Product/print cost: $9.00
- Payment processing on the whole charge
On processing: Shopify Payments charges roughly 2.9% + 30¢ per US online transaction on the Basic plan, per Webgility's payout breakdown. On $32.05 that's about $0.93 + $0.30 = $1.23.
So the shipping side alone:
- Shipping revenue: $5.95
- Shipping cost: −$7.80
- Shipping profit: −$1.85
You lost $1.85 moving that box, even though your sales report proudly logged $5.95 of shipping revenue. The report showed the upside and hid the downside.
Zoom out to the whole order: $24.00 + $5.95 = $29.95 you keep (tax passes through), minus $9.00 product, minus $7.80 shipping, minus $1.23 processing = $11.92 true profit. Your total sales line said $32.05. Your actual take-home was less than $12. That gap is the entire reason "sales" is a misleading word.
Shipping revenue vs shipping cost: the accounting split
The fix that accountants recommend is simple to state and easy to skip: record both sides separately, and never net them against each other.
Synder's guide to shipping cost accounting puts it plainly — record customer-paid shipping as its own revenue line, and the carrier cost as its own expense, "to see true per-order economics." Their worked case: a store charging a flat $9.99 when the real carrier cost is $12.50 is absorbing a $2.51 loss per order — and that loss "only appears if you've recorded both sides separately." Net them together and it vanishes into a fuzzy blended margin.
There are two kinds of shipping cost, and they land in different places:
- Inbound freight (freight-in) — what you pay to get inventory into your hands — is part of Cost of Goods Sold. Per Synder, if $200 of freight brings in 500 units at $10 each, your true landed cost is $10.40 per unit, not $10.
- Outbound freight (freight-out) — what you pay to ship to the customer — is usually a selling or operating expense, though many ecommerce sellers move it into cost of sales for cleaner order-level margins.
The point isn't which bucket you pick. It's that shipping revenue and shipping cost must both exist as visible numbers, or your profit per order is a guess.
Reconciling shipping across your reports
Even with clean accounting, shipping trips up cross-tool reconciliation in three predictable ways.
First, the payout doesn't match the sales report. Your bank deposit is charges minus processing fees, refunds, and chargebacks — shipping revenue is in there, but so are deductions that never touch the sales report. Expecting "total sales minus fees" to equal your payout is the classic reconciliation error.
Second, timezone boundaries move shipping revenue between days. An order that Shopify logs just before midnight can land on a different calendar day than your ad platform records it, splitting a day's shipping revenue across two reports. That daily-mismatch problem is covered in timezone differences between ad platforms and Shopify.
Third, double-counted orders double-count shipping. If your pixel and server-side tracking both fire a purchase without a shared dedup key, every order — shipping revenue included — is counted twice, and your top line inflates. See duplicate purchase events from the Shopify pixel for how that happens and how to catch it.
Reading shipping revenue as profit, automatically
Separating shipping revenue from product revenue, then netting it against real carrier and processing costs, is exactly the arithmetic nobody wants to do by hand for every order.
PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful, and computes true per-order profit — so shipping revenue, shipping cost, taxes, fees, and product cost all sit on one order-level line instead of blurring into a single "sales" number. Victor, its AI operator, analyzes that data and, with your approval, takes Shopify-side actions to act on what he finds. He reads your ad data and proposes moves, but he does not touch your ad account. PodVector isn't a dashboard you have to interpret — it's the profit math already done.
See your true per-order profit with PodVector.
FAQs
Is shipping revenue counted as revenue?
Yes. The money a customer pays you for shipping is revenue the moment the order is placed, and it appears in your total sales line. But revenue isn't profit — you still owe the carrier, and that cost lives outside the sales report. Treat shipping revenue as a top-line number, not as money you kept.
Does total sales include shipping?
Yes, on Shopify. Total sales is defined as net sales plus shipping plus taxes and duties, minus returns, per Shopify's Finances report docs. Gross sales and net sales both exclude shipping. That's why total sales always looks larger than your actual product revenue.
Why doesn't my product sales report match my total sales?
Because product-level reports strip shipping out. Shopify can't split one shipping charge across multiple products in an order, so it leaves shipping off the per-product breakdown entirely. Your store-wide total sales includes shipping and tax; your by-product report doesn't, so they won't reconcile.
Should shipping cost be recorded as COGS or an operating expense?
It depends on the direction. Inbound freight — getting inventory to you — is Cost of Goods Sold and should be capitalized into your unit cost. Outbound freight — shipping to the customer — is typically a selling or operating expense, though many sellers put it in cost of sales for cleaner per-order margins, as Synder explains.
Is shipping revenue profit?
Almost never in full. If you charge $5.95 and the label costs $7.80, your shipping profit is negative — you lost money on delivery even though the sales report logged shipping revenue. The only way to know is to record shipping revenue and shipping cost as separate lines and subtract one from the other on every order.
How do I see shipping profit per order?
Record shipping revenue and the actual carrier cost separately, then subtract carrier cost (plus the processing fee on the shipping portion) from what you charged. Doing it manually across hundreds of orders is impractical, which is why per-order profit tooling that ingests your store and payment data does the split for you.