The tax_info object provides a unified, connector-agnostic way to record tax details directly on journal entry lines. Using tax_info eliminates the need for separate VAT lines and ensures consistent behavior across all accounting systems.
It also supports “VAT per line” where available. “VAT per line” refers to recording VAT directly on each journal entry line instead of as a separate line. This approach aligns with the system’s expected handling of VAT and enables users to fully leverage built-in VAT reporting and declaration features.
The object presented here allows you to book VAT in a single, consistent way. On our side, we take care of posting the VAT according to the “VAT per line” approach, or alternatively generating separate VAT lines when needed, using the information provided in the object.
tax_info Structure
Each journal entry line can include tax_info:
"tax_info": {
"tax_code": "0",
"description": null,
"tax_amount": 0,
"vat_account": null,
"reversed_vat_account": null
}
Field Definitions
| Field | Required | Description |
|---|
| tax_code | Yes | Identifier of the tax rate. Used to map the correct VAT rate for the line. |
| description | No | Optional text describing the tax. Useful for reports or bookkeeping notes. |
| tax_amount | Yes | The amount of VAT for this line. Always positive, sign follows the line (debit/credit). |
| vat_account | Yes | Ledger account for VAT. Always required for a unified approach. Some systems use only the VAT account, others only the tax code, and some require both. If not required by target software, the value will be ignored. |
| reversed_vat_account | No | Optional, account to record reversed VAT when applicable |
VAT account vs tax codeFor consistency across connectors, always provide both vat_account and tax_code.
Different accounting systems rely on different mechanisms: some use only the VAT account, some only the tax code, and others require both. Supplying both ensures the most robust behavior and allows the platform to correctly handle features such as VAT per line.
Key Takeaways
- Attach tax_info to each VAT-relevant line
Include the tax details directly in the line item of your journal entry payload.
- Provide both VAT account and tax code
Always supply both fields for cross-connector consistency. Some systems use only the VAT account, others only the tax code, and some require both. If a system doesn’t need one, the value is ignored.
- Handle reversed VAT if needed
Include reversed_vat_account when reversed VAT applies.
- Fallback logic
If a connector does not fully support tax_info, the legacy tax_code mechanism is used automatically.
- Never create separate VAT lines if using
tax_info
tax_info ensures the tax is recorded directly on the line.
Example
{
"items": [
{
"description": "Consulting services",
"account_type": "general_account",
"amount": 1000,
"debit_account": "7010",
"credit_account": null,
"tax_info": {
"tax_code": "VAT20",
"description": "20% VAT",
"tax_amount": 200,
"vat_account": "44571",
"reversed_vat_account": null
}
}
]
}