Money
Tax
Because Hlawula is the seller, the tax on each sale is ours to calculate, collect and pay. The tax engine looks at one thing, the buyer's country, and returns the right line, rate and authority.
Get a tax quote
Pass the buyer's country code and the amount in cents. Checkout sessions do this for you; the endpoint is there for showing prices before checkout.
bash
curl "$HLAWULA_URL/api/tax/quote?country=KE&amount=99900"Response
{
"country": "KE",
"subtotalCents": 99900,
"taxLines": [
{
"label": "VAT — 16%",
"jurisdiction": "Kenya — KRA",
"rate": 0.16,
"amountCents": 15984,
"collectedAndRemitted": true
}
],
"totalCents": 115884
}Amounts are rounded to the nearest cent, half away from zero. A negative amount returns 400 amount_invalid. A country outside the table returns a single No tax line marked as outside collection scope.
Where we collect
| Country | Code | Tax | Authority |
|---|---|---|---|
| South Africa | ZA | VAT 15% | SARS |
| Nigeria | NG | VAT 7.5% | FIRS |
| Kenya | KE | VAT 16% | KRA |
| United Kingdom | GB | VAT 20% | HMRC |
| Germany | DE | VAT 19% | USt |
| France | FR | VAT 20% | TVA |
| Netherlands | NL | VAT 21% | BTW |
| Ireland | IE | VAT 23% | Revenue |
| Spain | ES | VAT 21% | IVA |
| Italy | IT | VAT 22% | IVA |
| Sweden | SE | VAT 25% | MOMS |
| United Arab Emirates | AE | VAT 5% | FTA |
| India | IN | GST 18% | GST |
| Australia | AU | GST 10% | ATO |
| Brazil | BR | VAT 17% (estimate) | ICMS |
| United States | US | Sales tax 0% | No nexus yet |
Rates are simplified
The engine applies one standard rate per country. Real-world rules for reduced rates, business buyers with a VAT number (reverse charge), US state nexus and Brazil's layered taxes need to be added and checked by a tax adviser before live trading.