Free Shopify store auditSpeed, SEO and conversion leaks — no cost, no obligation.
Claim it
Thriftizer Solutions LLPShopify Select Partner
Book a Growth Audit
Analytics Oct 3, 2026 10 min read

Duties in Shopify Analytics: True Margin on Canada-to-US Orders

Shopify's September analytics update finally puts duties and shipping costs into profit reporting. Here's what a US order from a Canadian store actually nets, with the arithmetic.

Duties in Shopify Analytics: True Margin on Canada-to-US Orders

If you sell from Canada into the US and your Shopify profit report has been telling you that order did 65% margin, it was lying to you by omission. Until Shopify's 23 September analytics update, duties and shipping costs in Shopify analytics simply weren't in the profit calculation. Cost per item came out, everything else stayed in. Now duties and the rest of your shipping costs get subtracted too, and the reporting handles orders settled in a currency other than your store currency. The practical effect for a Canadian merchant shipping DDP into the States is that a line that looked healthy can drop by forty points overnight. That's not a bug. That was always the real number.

What the update actually gives you

Three things changed that matter. Duties you paid on an order now count as a cost against that order. Shipping costs beyond the bare label cost can be recorded and deducted. And orders placed in USD by an American customer get reconciled properly against your CAD cost base instead of quietly distorting the margin.

What it does not do is invent data you never captured. If you buy labels outside Shopify, if your 3PL invoices you monthly in a spreadsheet, if you've never filled in cost per item on half the catalogue, the report improves by exactly nothing. The first job is boring: get cost per item populated on every variant, including the ones you added in a hurry last Black Friday.

A $120 US order, line by line

Here's a representative apparel order. Numbers are illustrative, but the structure is what we see on real Canadian stores.

Customer in Illinois buys USD 120 of goods. Free shipping over USD 100. Say the rate is 1.38, so CAD 165.60 lands as gross revenue.

  • Cost of goods: CAD 52.00
  • Pick, pack, poly mailer: CAD 4.00
  • Label, UPS Standard to US, 1.2 kg, after your negotiated discount and a peak-season surcharge: CAD 31.50
  • Duty at a 16% rate on the declared value of USD 120: USD 19.20, or CAD 26.50
  • Carrier duty advancement and entry fee: CAD 12.00
  • Payment processing at 2.9% + $0.30: CAD 5.10
  • Currency conversion fee at 1.5%: CAD 2.48

Total cost: CAD 133.58. Net contribution: CAD 32.02, which is 19.3% of revenue.

The old gross profit figure on that same order was CAD 113.60, or 68.6%. Same order. Same day. A 49-point gap, and every ad budget decision you made off the old number was made with the wrong input.

Now put returns in. Apparel coming back across a border is expensive. Assume one in eight of these comes home. You refund CAD 165.60, you recover goods worth CAD 52, and you have already spent the packing, the outbound label, the duty, the entry fee and a return label of about CAD 22. Call it CAD 99 gone, because duty drawback on a single consumer return is not worth the filing effort and the processing fee usually isn't returned to you. Across eight orders: seven good ones at 32.02 is 224.14, minus 99, is 125.14. That's CAD 15.64 per order, or 9.4%.

Nine percent before a dollar of advertising. That's the business you're actually running.

DDP vs DDU on a Canadian store

DDU (or DAP, as carriers now label it) means the parcel arrives and the customer gets a bill from the courier before it's handed over. Your checkout looks cheaper. Your margin looks better. And then roughly the portion of customers who refuse to pay a surprise invoice turn into refused parcels, return-to-sender freight, chargebacks and one-star reviews about a fee you never mentioned.

DDP means you collect duty at checkout, remit it, and the parcel clears without the customer touching it. It is more expensive and it is almost always the right call for a Canadian brand selling consumer goods into the US. American shoppers compare you against domestic sellers with free two-day delivery. A courier knocking for USD 24 is how you lose a repeat customer in one transaction.

The honest exception: high-ticket, low-frequency items where the customer already expects an import process, or B2B orders where the buyer has their own broker and would rather not pay your markup. For everything under about CAD 300 retail, go DDP and price for it.

Collecting duties at checkout in Shopify requires Markets configured for the US and sits on the higher plans. If you're on Basic and doing meaningful US volume, the plan upgrade usually pays for itself through fewer refused parcels alone.

De minimis is not coming back

For years the USD 800 duty-free allowance meant most Canadian D2C parcels crossed the border without anybody calculating anything. That arrangement ended in 2025. Commercial shipments no longer slide in duty-free under the old threshold, parcels need proper entry treatment, and duty applies from the first dollar of value.

Carriers responded with new per-shipment handling and entry charges, and those charges moved more than once during the transition. Before you model anything, pull your last three months of carrier invoices and read the surcharge lines rather than the rate card. Then ask your broker to confirm current treatment for your HTS codes, because this area has moved quickly and will likely move again.

The consequence for pricing is blunt. A category that worked at 35% net margin on a CAD 90 average order value when duty was zero may not work at all now. Some Canadian brands have responded by holding US inventory with a 3PL in the Midwest and clearing in bulk, which turns per-parcel duty and entry fees into a single commercial entry. That only makes sense above a certain US volume, and it brings US sales tax nexus with it, so take advice before you move pallets.

CUSMA origin beats any shipping discount you'll negotiate

Goods that qualify as originating under CUSMA enter the US duty-free. In the worked example above, that 16% line vanishes and net contribution goes from CAD 32.02 to CAD 58.52 on exactly the same order. No carrier negotiation gets you that.

The trap is that shipped from Canada and originating in Canada are different things. Finished goods imported from Asia and warehoused in Mississauga do not qualify. Goods cut and sewn in Quebec from imported fabric may qualify depending on the rule of origin for the tariff line. You need a certification of origin, and you need to be able to defend it.

If any part of your range is made in Canada, work out which SKUs qualify and make sure your commercial invoices carry the certification. We've seen stores pay duty for two years on Canadian-made product because nobody ever filled in the origin field in their shipping app.

Why your shipping cost reporting is still inaccurate

Shopify's reporting is only as good as the label data behind it, and that's where Canadian stores break more than most.

Labels bought through Shopify Shipping flow in cleanly. Labels bought through a third-party rate shopper, a 3PL portal or a carrier's own system usually do not, unless the app writes the cost back to the order. During the Canada Post disruptions, a lot of merchants failed over to Purolator, UPS or FedEx mid-week and never reconciled the difference, so their analytics kept showing a Canada Post cost base that no longer existed. If your carrier mix changed this year, your historic shipping cost data is a blend of two different realities.

Then there are the costs that never appear on a label at all: dimensional weight adjustments billed three weeks later, address correction fees, residential surcharges, fuel, peak-season surcharges from October through Boxing Day, and duty advancement. The new other shipping costs field exists for these. Use it, even if you can only load a monthly average per order. An approximate number in the report beats an accurate number in an accountant's spreadsheet you look at twice a year.

One useful discipline: every quarter, total the shipping cost in your Shopify reports and compare it against the sum of your carrier invoices for the same period. If the gap is more than 10%, something isn't flowing through. We run that reconciliation on client stores and we get it wrong on the first pass maybe a third of the time, usually because of a 3PL that bills in arrears.

How Shopify calculates gross profit, and what it still leaves out

Gross profit in Shopify analytics is net sales minus cost of goods, and now minus duties and shipping costs where that data exists. Net sales is gross sales less discounts and returns, before taxes and before shipping charged to the customer.

Still outside the calculation: payment processing fees, currency conversion fees, app subscriptions, your Shopify plan, advertising, and the cost of warehouse labour that isn't baked into cost per item. On the example order, processing and conversion together were CAD 7.58, about 4.6% of revenue. That's not rounding.

So treat the profit report as contribution margin after landed cost, not as profit. The number you actually manage to is contribution after ads, and you'll need to build that one yourself in a sheet or a BI tool. For stores doing enough volume to justify it, a reporting layer that joins Shopify order data to ad spend and carrier invoices is a week or two of work for a developer who knows the APIs, and it ends the monthly argument about which channel is actually profitable.

Repricing when the number comes back negative

First, don't reprice globally. Shopify Markets lets you set a price adjustment for the US market specifically, so Canadian customers aren't paying for your border costs.

Second, remember duty is charged on the price you declare, so a price rise partially eats itself. At a 16% duty rate and 2.9% processing, every extra dollar of price keeps about 81 cents. To recover CAD 1.00 of lost contribution you need to add about CAD 1.23 to the US price. Plug your own duty rate in: divide by (1 minus duty rate minus processing rate).

Third, the free shipping threshold is usually a better lever than unit price. If your US average order value is USD 120 and the label plus entry costs CAD 43.50, raising the threshold from USD 100 to USD 150 pushes basket size up and pushes the small, unprofitable orders either into bundling or out of the business. Losing orders that lose money is a good outcome, however it reads in the dashboard.

Fourth, weight and dimensions. Dimensional weight pricing punishes air in boxes. Shaving a 1.2 kg parcel into a smaller mailer can move you a rate band and save more per order than any discount you'll negotiate at your volume.

And if a category still loses money after all that, stop shipping it south. Geographic restriction by product is a legitimate strategy. Heavy, low-margin, high-return SKUs can be Canada-only while your good lines carry the US market.

Questions we get about duties in the profit report

Does the profit report count duties I collected from the customer as revenue? Duties collected at checkout are a pass-through, not margin. What you want visible is the duty you paid out as a cost against the order. Check a recent DDP order in your reports and confirm both sides appear the way you expect before you trust the aggregate.

Does it handle an order paid in USD against CAD costs? Yes, cross-currency orders are reconciled in the profit data now. Your currency conversion fee is still a separate cost you'll have to account for outside the report.

My 3PL ships everything. Is any of this useful? Only if shipping costs get back into Shopify. Ask whether your 3PL's integration writes a per-order cost. If it doesn't, load a monthly average into the other shipping costs field. Imprecise and current beats precise and six weeks late.

Do I need Shopify Plus for duty collection at checkout? No. Duty collection sits on the higher standard plans with Markets configured. Plus becomes worth discussing when you need checkout customisation, B2B, or multiple storefronts for different markets.

Should I show US customers prices in USD including duty? Yes. All-in USD pricing with no surprises at the door converts better than a cheaper headline price plus a courier invoice. Also confirm your Quebec-facing market is properly separated, since French-language obligations under Bill 96 apply to your storefront regardless of what you're doing about the US.

Start with one month of orders. Export them, add the real label cost, the real duty, the entry fee and processing, and sort by contribution. The bottom decile will tell you more about what to fix than any dashboard. If you'd rather have someone else do that pass, our Canada team runs it as part of a free store audit, and you keep the model either way.

Next post

Ready to scale your D2C brand profitably?

Let's build a growth engine that drives more traffic, more conversions and more profit.

Book a Growth Audit
📅 Free Audit💬 WhatsApp