Short version for busy Canadian merchants

If you are under the federal small-supplier threshold, you may not need to register for GST/HST yet. Once you cross it, most merchants need to turn on GST or HST collection fast, because backdating the tax bill out of your own margin is brutal.

The second trap is thinking GST/HST is the whole Canadian tax story. It is not. WooCommerce merchants, Shopify stores, and Stripe-led custom checkouts all run into the same provincial edge cases: BC PST, Saskatchewan PST, Manitoba RST, and Quebec QST.

Where merchants usually get burned

Shopify: the tax engine can calculate rates cleanly, but only after you enter the registrations you actually have. If you register late, Shopify does not magically know which old orders should have included tax.

Stripe: subscription and SaaS businesses love Stripe because Stripe Tax is powerful, but it still depends on your registration map, product tax codes, and nexus settings. Wrong product classification equals wrong tax collection at scale.

WooCommerce: tax flexibility is great, but the burden is on you. If your store adds provinces one by one and rates were entered manually, stale tax tables are a classic source of Canadian checkout errors.

Merchant typeMost common missWhy it hurts
Shopify storeGST/HST is on, QST/PST registrations are notCheckout looks fine in Ontario and quietly wrong in Quebec or BC
Stripe SaaSProduct tax code left genericDigital supplies get mis-taxed across multiple provinces
WooCommerce storeManual rate table never updatedOld tax logic sticks around long after the business expanded
Hybrid online + local pickupPickup orders treated like shipped ordersThe merchant assumes one rate fits every flow

Bottom line

If your business is growing and you sell across more than one province, treat tax setup as part of checkout architecture — not bookkeeping cleanup. The right processor matters, but so do tax registrations, rate tables, and product taxability rules.