TrueNorth API validates a Canadian address and calculates the exact tax for it in two calls: 41 product tax categories, all 13 provinces and territories, five endpoints, one API key. Whether you sell from inside Canada or from outside it, this is the whole checkout tax flow.
Here is a real example of why the details matter. Taylor Swift's official store sells the "Life of a Showgirl" CD for $17.99 USD and charges a BC buyer $18.89 total, which is $0.90 of tax. The correct BC total is $20.15, which is $2.16 of tax ($0.90 GST plus $1.26 PST). The store is a US seller collecting federal GST but not BC's 7% PST, so every BC order under-collects by exactly 7%. Details like that are exactly what TrueNorth API handles.
What it does
Five endpoints, one API key in the TrueNorthAPI-API-KEY header:
-
GET /calculate-tax— exact tax for a price, province, and product category -
GET /classify-product— send a plain product description, get back the tax category -
GET /tax-categories— list all 41 product tax categories -
POST /validate-address— Canadian address validation, valid or invalid with one short reason -
GET /shipping-check— deliverability check, warns on remote surcharge postal codes
The classifier understands ordinary wording. "organic cotton baby onesie" lands in children's clothing, "pre owned civic" lands in private used vehicles. Unknown products fall back to fully taxable, never under-collected.
The quirks it knows
A few examples from the 41 categories across all 13 provinces and territories: basic groceries, prescription drugs, and feminine hygiene are zero-rated federally. Manitoba exempts children's clothing up to a $150 per-item cap. Ontario rebates the provincial HST portion on prepared food under $4. Quebec's QST is charged on the GST-exclusive price, not compounded. Nova Scotia runs 14% HST. New vehicles over $100,000 attract the federal luxury tax. These are the details that generic rate tables miss.
Try it
curl "https://prsorfaeexugwkvjuwzw.supabase.co/functions/v1/canadian-api/calculate-tax?province=BC&amount=17.99&description=compact%20disc" \
-H "TrueNorthAPI-API-KEY: your_key_here"
Tax plus address, one flow
Tax depends on the province, and the province comes from the address. Whether you sell from inside Canada or from outside it, the flow is the same: validate the customer's address, take the province code from the response, and calculate the tax.
# 1. validate the address, get back the province
curl -X POST "https://prsorfaeexugwkvjuwzw.supabase.co/functions/v1/canadian-api/validate-address" \
-H "TrueNorthAPI-API-KEY: your_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "123 Main St, Vancouver, BC V6A 1A1"}'
# 2. calculate tax for that province
curl "https://prsorfaeexugwkvjuwzw.supabase.co/functions/v1/canadian-api/calculate-tax?province=BC&amount=17.99&description=compact%20disc" \
-H "TrueNorthAPI-API-KEY: your_key_here"
The address endpoint returns valid, one short reason when it is not, plus the province_code and a remote flag when the postal code checks out. That is the whole checkout tax flow in two calls.
Free tier is 10 calls a day, no card required. Pro is $19 CAD a month for 10,000 calls, Scale is $49 for 100,000.
If you sell into Canada and your checkout guesses at taxes, stop guessing: https://truenorthapi.ca
Top comments (5)
hello bro nice post like you content wooow top very good
Some comments may only be visible to logged-in visitors. Sign in to view all comments.