One call returns the correct tax rate and whether you must charge VAT, apply the B2B reverse charge, or treat the sale as out of scope — with a ready-to-paste invoice note. Built for digital-goods and SaaS sellers.
Cross-border digital sales have a compliance trap: the right VAT rate depends on where the buyer is and whether they're a business. Get it wrong and you eat the tax or fail an audit. Incumbent tax engines cost hundreds per month. This API does the one job you actually need at checkout, fast and cheap.
EU-27 + UK VAT · US state-level sales tax · Canada GST/HST/PST · Australia GST. Rates last reviewed 2026-07.
/rate?country=DE&product_type=digital/decide — body: seller_country, buyer_country, buyer_vat_id?/health · GET /openapi.jsoncurl — get a rate
curl "https://checkout-tax-api.pages.dev/rate?country=FR&product_type=digital"
curl — reverse-charge decision (cross-border B2B)
curl -X POST "https://checkout-tax-api.pages.dev/decide" \
-H "Content-Type: application/json" \
-d '{"seller_country":"DE","buyer_country":"FR","buyer_vat_id":"FRXX123456789"}'
JavaScript (fetch)
const res = await fetch("https://checkout-tax-api.pages.dev/decide", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
seller_country: "DE",
buyer_country: "FR",
buyer_vat_id: "FRXX123456789",
}),
});
const decision = await res.json();
// { chargeVat: false, mechanism: "reverse_charge", invoiceNote: "...", ... }
Python (requests)
import requests
r = requests.post("https://checkout-tax-api.pages.dev/decide", json={
"seller_country": "DE",
"buyer_country": "US",
"product_type": "digital",
})
print(r.json()["mechanism"]) # "out_of_scope"
Rate lookups + decisions for evaluation and low volume.
Production volume for a single product.
High volume + priority.
Full source to run it yourself. One-time.
Subscribe via the marketplace listing, or buy the self-host kit for a one-time fee.