
Duties and tax collected at checkout, not at the door
Cross-Border
Cross-border setup for a US store selling into Canada: duties and tax collected at checkout, GST/HST registration decided in advance, DDP labels, CAD pricing and Canadian carriers on current APIs.
Plan Your Canada LaunchWhy now
CAD 40 tax and duty free by courier into Canada, and duty free to CAD 15029 Aug 2025 the day duty-free de minimis ended for parcels into the US
Until 2025 a parcel between the United States and Canada usually crossed one way without a duty bill: the US let goods under its de minimis threshold in free, and Canada did the same below its own, lower limits. Since 29 August 2025 that is half gone. The US ended duty-free de minimis treatment for every country, so the return leg of a cross-border sale carries duty too.
Into Canada the thresholds still exist but are small. By courier under CUSMA, goods from the US are tax and duty free up to CAD 40 and duty free up to CAD 150. Above that, every parcel carries GST or HST and often duty, and the merchant who leaves it to the carrier hands the customer a bill at the door, plus a brokerage fee, before the box is released.
Tax registration follows the same arithmetic. A US seller carrying on business in Canada registers for GST/HST once Canadian sales pass CAD 30,000 in a twelve-month window, and for British Columbia's PST above CAD 10,000 of BC sales. Both are decisions to make before the first Canadian order, not after the first letter from a tax authority.
The store that works is the one that quotes the landed price at checkout, collects it, and ships on a label that says duty paid.
What goes wrong
Each one shows up as a chargeback, a refused parcel or a letter. All six are settled in the setup, before the first Canadian order.

If the store does not calculate duties and tax at checkout, the carrier does at the border, adds a brokerage fee, and holds the parcel until the customer pays. Refused parcels and chargebacks follow.

A US seller carrying on business in Canada registers once Canadian sales pass CAD 30,000 in twelve months, and for BC PST above CAD 10,000 of BC sales. Crossing the line unregistered means back taxes.

Duties are calculated from each product's HS code and its country of origin. A catalog with neither cannot quote a landed price, and Shopify will not calculate duties on an international order without the code.

A customer who paid duties at checkout must ship on a delivered duty paid label. Shopify's own labels do not support DDP, so the carrier account and the label flow are set up for it, per country.

A price converted from USD at today's rate lands on 47.83 and moves every morning. Canadian customers expect CAD prices that hold still and end the way a Canadian price ends, with payment settled in CAD.

A return from Canada is an export from Canada and an import into the US, dutiable now that de minimis has ended. A returns flow that ignores that loses the margin twice.
What the setup covers

A Shopify market or a Magento website for Canada, priced and settled in CAD, with the US store left as it is.

GST, HST, PST and QST charged by delivery address once registration applies, and filed on the schedule each authority sets.

Landed cost from HS code and origin, collected in the cart, and shipped DDP so nothing is owed at the door.

Canada Post on its REST and OAuth API, Purolator and UPS connected with DDP labels, rates and tracking in both directions.

A French path for Quebec visitors, bilingual legal pages and emails, and a consent banner with tracking off until accepted.

A return label, a duty recovery process and a refund rule written for parcels that cross the border twice.
Assess, configure, localise, launch
Behind the checkout
13 provinces and territories a test order goes to before launch1 label type that avoids the bill at the door: delivered duty paid
Most of the work is invisible to the customer. Commercial goods entering Canada are assessed through the CBSA's CARM system, so a US seller acting as the importer needs a Canadian business number with an import-export program account, and posts financial security if it wants goods released before the duties are paid. A seller shipping DDP through a carrier's brokerage leans on the carrier's accounts instead; which route fits depends on volume and margin.
A landed-cost model is a table, not a formula: your top products, their HS codes and origin, the duty rate under CUSMA, zero for qualifying US-origin goods and something else for goods made elsewhere, GST or HST by province, the carrier's DDP surcharge, and the price the customer sees. It tells you which products are worth selling into Canada at all.
The honest part: most of this is configuration done once and tested per province, not custom code. The custom work, where it exists, is in the catalog data, the carrier connection and the returns flow. We say which is which before the estimate, so you are not paying development rates for settings.
Pick the shape
A Canadian market on your existing Shopify store: CAD pricing with rounding rules, duties and import taxes calculated at checkout from HS codes, carriers that issue DDP labels, and the Quebec essentials. The US store keeps running as it is.
A Canadian website on your Magento or Adobe Commerce installation: base currency and tax scoped to it, fr_CA and en_CA store views, Canada Post on its current API, and company accounts and quotes if your Canadian customers are businesses.
For a merchant whose Canadian sales justify their own operation: a separate storefront or website for Canada, Canadian fulfilment or a 3PL, tax registered in every regime that applies, and a returns depot on the Canadian side of the border.
Platforms
Trusted by 100+ companies
Keep reading



FAQ
Tell us about your store and we will come back with straight answers.
Talk to usOnce you are carrying on business in Canada and your Canadian sales pass CAD 30,000 in four consecutive calendar quarters or in a single quarter, yes. Below that you are a small supplier and may stay unregistered, though registering early lets you recover the GST you pay on imports. British Columbia has its own PST registration above CAD 10,000 of BC sales. We model your volume against both before launch. This is not tax advice.
Whoever the shipping terms say. Under CUSMA, courier parcels from the US are tax and duty free up to CAD 40 and duty free up to CAD 150. Above that, delivered duty paid means duties and tax were calculated at checkout, paid with the order, and the carrier clears the parcel with nothing owed at the door. Delivered at place leaves the carrier to collect duties, tax and a brokerage fee from the customer before release. This is not customs advice.
Both are shipping terms. Delivered at place: you deliver to the address and the customer settles duties and import taxes with the carrier. Delivered duty paid: the landed cost is in the order and the carrier bills you, not the customer. Platforms let you set one or the other per country, not both, and DDP needs a carrier account that issues DDP labels. For consumer parcels into Canada we set DDP.
Not for orders where duties were paid at checkout. Shopify's built-in shipping labels do not support delivered duty paid, so those orders ship on a label from a carrier account set up for DDP, with brokerage included: UPS, FedEx or DHL from the US side, or Canada Post through a partner that injects parcels into its network. We set the account up and keep the store's own labels for domestic orders.
Quebec's Charter of the French Language requires commercial publications, websites included, to be available in French on terms at least as favourable as any other language, and the Office québécois de la langue française has enforced it against websites. How far it reaches a US seller with no establishment in Quebec is a question for your counsel. What we build is the French path for Quebec visitors and the bilingual legal pages and emails. This is not legal advice.
Quebec's Law 25 governs personal information about people in Quebec collected by an enterprise, and its text does not stop at the provincial border. Whether and how it applies to your store is a question for your counsel. What we set up is what it asks for in practice: a consent banner for Quebec visitors with tracking off until accepted, and a privacy policy that names a person responsible for personal information. This is not legal advice.
CARM is the Canada Border Services Agency's system for assessing and collecting duties and taxes on commercial goods entering Canada. If your business is the importer of record, you need a Canadian business number with an import-export program account and, to have goods released before payment, posted financial security. If a carrier or broker imports on your behalf under DDP, they carry that. We work out which route fits in the assessment. This is not customs advice.
A return crosses the border the other way and, since the US ended duty-free de minimis on 29 August 2025, can carry duty into the US as well. The setup includes a returns flow written for that: a Canadian return address or carrier consolidation where volume justifies it, a return label the customer prints, duty recovery where it applies, and a refund rule that does not hand the margin back twice.
Canada Post on its REST and OAuth API, the only interface it has offered since 30 April 2026, so older modules written for the retired keys return no rates; Purolator through its web services; UPS, FedEx and DHL for DDP labels from the US side. Rates, labels and tracking in both directions, tested with a parcel to each province before launch.
Yes, and for most merchants it should. On Shopify a Canadian market on the same store carries CAD pricing, duties at checkout and its own shipping zones. On Magento and Adobe Commerce a Canadian website with its own currency, tax and store views sits beside the US one on one admin. A separate Canadian store only pays off when volume justifies Canadian fulfilment and a returns depot.
Scoped after the assessment, because the work ranges from a week of configuration on a Shopify store with clean HS codes to a Magento website with new store views, a carrier integration and an ERP change. The assessment produces the landed-cost model and the registration picture, which you keep whatever you decide. There is no price list on this site.
Weeks, not months, for a store whose catalog already carries HS codes and country of origin: the market, tax rules, duties and carriers are configuration, and the test orders per province take a few days. Registration with the CRA and the provincial authorities runs on their timelines, so we start that first. A catalog without HS codes is the usual delay.
Let’s build something great together!
Send us the store URL, the provinces you want to ship to and a sample of the catalog. We come back with the registration picture, the duties setup and the dates.