To request a calculation, send an HTTP POST to https://api.fonoa.com/tax/v2/calculations with a body containing information about the parties involved and the transaction being performed:
(Full details of the request and response can be found here)
{
"supplier": {
"taxable": true,
"country": "gb"
},
"customer": {
"taxable": false,
"country": "nl"
},
"transaction": {
"price_includes_tax": false,
"date": "2026-01-14T20:48:59.000Z",
"items": [
{
"id": "34db79d1-24bf-4c22-863e-1f7832f24be3",
"unit_price": 100,
"tax_category_code": "fs_0503010000",
"quantity": 1.0
}
]
}
}If there are no validation errors, the API will respond with an HTTP 200 OK and a response body containing the applicable taxes:
{
"data": {
"id": "1010b4d8-9361-4a7e-98cc-9419dbba695c",
"result": {
"total_gross": 121,
"total_net": 100,
"total_indirect_tax_amount": 21,
"items": [
{
"id": "34db79d1-24bf-4c22-863e-1f7832f24be3",
"gross_amount": 121,
"net_amount": 100,
"indirect_tax_amount": 21,
"effective_indirect_tax_rate": 0.21,
"tax_breakdown": [
{
"country": "nl",
"country_name": "Netherlands",
"rate_class": "s",
"tax_level": "federal",
"name": "BTW",
"rate": 0.21,
"amount": 21
}
]
}
]
}
}
}Validation
When the request is incorrect, you will receive an HTTP Status Code of 400 Bad Request and a response containing information about the error:
{
"errors": [
{
"message": "Validation error: any.required",
"field": "supplier.country",
"type": "validation"
}
]
}
