Skip to content

Taxes

A tax row is a named rate. Items point at one for sales and optionally another for purchases, and the point of sale applies it at the till. Get this wrong and every receipt in the merchant’s day is wrong — read the merchant’s existing rows before you create new ones.

MethodPathScope
GET/v1/taxestaxes.read
POST/v1/taxestaxes.write
PATCH/v1/taxes/:idtaxes.write
Terminal window
curl -s "$API_BASE_URL/taxes?status=1" \
-H "Authorization: Bearer $ACCESS_TOKEN"
{
"data": [
{ "id": 3, "tax": "GST 5%", "taxRate": 5, "type": 0, "status": 1 },
{ "id": 4, "tax": "GST 18%", "taxRate": 18, "type": 0, "status": 1 },
{ "id": 7, "tax": "Zero rated", "taxRate": 0, "type": 0, "status": 1 }
],
"meta": { "page": 1, "limit": 10, "total": 3 }
}
Terminal window
curl -s "$API_BASE_URL/taxes" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"tax": "GST 12%",
"taxRate": 12,
"type": 0,
"applyTo": 0,
"compound": false
}'
FieldTypeRequiredNotes
taxstringyesDisplay name — it appears on receipts
taxRatenumberyesPercentage. 12 means 12%, not 0.12
typenumberno0 exclusive (default), 1 inclusive
applyTonumberno0 all sales (default), 1 a department, 2 selected items
departmentstringnoDepartment name when applyTo is 1
compoundbooleannotrue calculates this tax on top of other taxes rather than on the net
statusnumberno1 active (default), 0 inactive
QuickbookTaxCodestringnoMapping code for QuickBooks exports
ZMTaxCodestringnoMapping code for fiscalisation, where required

type decides how the item’s rate is read:

typeMeaningItem priced at 100 with a 10% tax
0Exclusive — tax is added at the tillCustomer pays 110, tax 10
1Inclusive — tax is already inside the priceCustomer pays 100, tax 9.09, net 90.91

Inclusive pricing is the norm where regulation requires shelf prices to be the price paid. Exclusive is the norm where tax is shown as a separate line. Getting it backwards silently shifts every net-sales figure the merchant reports.

Items carry the tax by id:

Terminal window
curl -s -X PATCH "$API_BASE_URL/items/8841" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "taxId": 4, "PurchTaxId": 4 }'
Item fieldPurpose
taxIdApplied when the item is sold
PurchTaxIdApplied when the item is purchased, where the two differ
cessId, Tax4IdAdditional levies stacked on top, in jurisdictions that use them
hsnTax classification code printed on compliant invoices

To re-point a whole category, list items with groupId and patch them — there is no bulk tax-reassignment endpoint in this version.