HomeGuidesRecipesAPI ExplorerForumSupport
Partner Portal
Partner Portal

VAT rates

Learn how the VAT rates for invoices and quotes work.

Overview

Invoices and quotes must include VAT amounts, even if the VAT rate is 0%. Countries have different VAT rates for different types of products and services. For example, Germany has a standard VAT rate of 19%, a reduced VAT rate of 7%, and a zero VAT rate for certain transactions.

Monite maintains a database of VAT rates. API Partners can query the available rates via the API.

Supported countries

Currently, Monite API provides VAT rates for the following countries:

  • Angola
  • Australia
  • Austria
  • Belgium
  • Botswana
  • Bulgaria
  • Czech Republic
  • Denmark
  • Estonia
  • Eswatini
  • France
  • Finland
  • Germany
  • Greece
  • Ireland
  • Israel
  • Lesotho
  • Liberia
  • Luxembourg
  • Mozambique
  • Namibia
  • Netherlands
  • Pakistan
  • Poland
  • South Africa
  • Spain (including Canary Islands)
  • Sweden
  • Switzerland
  • United Arab Emirates
  • United Kingdom
  • Zimbabwe

📘

Exception for US and Pakistani entities

Monite does not provide VAT rates for US and Pakistani entities. US and Pakistani entities must directly provide the tax_rate_value in the invoice line item object.

Need other countries? Let us know.

Get VAT rates

To query the possible VAT rates, call GET /vat_rates with the entity ID passed in the X-Monite-Entity-Id header:

curl -X GET 'https://api.sandbox.monite.com/v1/vat_rates?counterpart_id=3a9c5...48df' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer ACCESS_TOKEN'

By default, the /vat_rates endpoint returns all VAT rates applicable to the VAT IDs that the entity has, or if no such rates were found, all valid VAT rates for the entity’s country of registration.

You can narrow down the list by adding filters to the query string. The available filters are:

  • GET /vat_rates?counterpart_address_id={id} - get VAT rates applicable for sales to the specified counterpart address. When using the counterpart_address_id param, you must also provide the counterpart_id param in the request.
  • GET /vat_rates?counterpart_id={id} - get VAT rates applicable for sales to the specified counterpart.
  • GET /vat_rates?entity_vat_id_id={uuid} - if an entity has several VAT ID records (example: a UK entity that ships goods from Northern Ireland), you can specify which VAT ID to use when searching for the applicable VAT rates. If entity_vat_id_id is not specified, all VAT rates valid for any of the entity's VAT IDs are returned.
  • GET /vat_rates?counterpart_vat_id_id={uuid} - if a counterpart has several VAT IDs, you can specify the one that will be used in the invoice to get the applicable VAT rates. When using the counterpart_vat_id_id param, you must also provide the counterpart_id param in the request. If this param is not specified, all VAT rates valid for any of the counterpart's VAT IDs are returned.
  • GET /vat_rates?product_type=[product | service] - get VAT rates that apply only to physical goods or only to services.

You can combine these filters to narrow down the results further.

📘

If the filters specified for GET /vat_rates do not produce any results, this endpoint instead returns all valid VAT rates for the entity's country of registration.

Below is a sample response assuming the entity and counterpart are German. German VAT rates are 0%, 7%, and 19%. The VAT value in the response is the percentage multiplied by 100, that is, 7% is represented as 700 and 19% as 1900.

{
  "data": [
    {
      "id": "a39a2ec3-765d-4f75-9a17-585a5d22509d",
      "created_at": "2022-09-23T12:28:31.941357+00:00",
      "updated_at": "2022-09-23T12:28:31.941375+00:00",
      "value": 0,
      "country": "DE",
      "valid_from": null,
      "valid_until": null,
      "created_by": "monite",
      "status": "active"
    },
    {
      "id": "51cefc6c-9f82-484e-ae6a-a3a89b507bea",
      "created_at": "2022-09-23T12:28:31.941398+00:00",
      "updated_at": "2022-09-23T12:28:31.941406+00:00",
      "value": 700,
      "country": "DE",
      "valid_from": null,
      "valid_until": null,
      "created_by": "monite",
      "status": "active"
    },
    {
      "id": "479155c3-0995-4689-a3cf-7482ea5132a9",
      "created_at": "2022-09-23T12:28:31.941423+00:00",
      "updated_at": "2022-09-23T12:28:31.941431+00:00",
      "value": 1900,
      "country": "DE",
      "valid_from": null,
      "valid_until": null,
      "created_by": "monite",
      "status": "active"
    }
  ]
}

Note down the returned VAT id values. You will need them later to specify the corresponding VAT rates for individual line items in invoices and quotes.

📘

If a counterpart is exempt from paying VAT on an invoice, you can provide the reason for exemption via the optional vat_exemption_rationale field on the invoice object. For example, in situations where an invoice's line item is assigned a 0% VAT, you can provide the reason for exemption via the vat_exemption_rationale field when creating or updating an invoice. The reason provided will also be displayed on the invoice PDF.

Specify VAT rates when creating or updating invoices and quotes

When you create an invoice or a quote by calling POST /receivables, you must provide the vat_rate_id for each line item in the line_items array. In the example below, the first line item is taxed at 19% (VAT rate ID = 479155c3-0995-4689-a3cf-7482ea5132a9) and the second line item is taxed at 7% (VAT rate ID = 51cefc6c-9f82-484e-ae6a-a3a89b507bea).

Monite will automatically calculate the VAT amounts based on the specified VAT rate IDs and return the total VAT in the total_vat_amount field in the invoice response.

curl -X POST 'https://api.sandbox.monite.com/v1/receivables' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer ACCESS_TOKEN' \
     -H 'Content-Type: application/json' \
     -d '{
       "type": "invoice",
       ...
       "line_items": [
         {
           "quantity": 5,
           "product_id": "8755c86a-d630-4920-b6fd-fd2917d87dfb",
           "vat_rate_id": "479155c3-0995-4689-a3cf-7482ea5132a9"
         },
         {
           "quantity": 1,
           "product_id": "b97601e1-e795-4c47-85d5-e5c54a75058d",
           "vat_rate_id": "51cefc6c-9f82-484e-ae6a-a3a89b507bea"
         }
       ],
       ...
     }'

Similarly, to update the VAT rate for a specific line item in an existing draft invoice or quote, call PATCH /receivables/{receivables_id} and provide the new vat_rate_id for that line item:

curl -X PATCH 'https://api.sandbox.monite.com/v1/receivables/411dc6eb...6289b3' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer ACCESS_TOKEN' \
     -H 'Content-Type: application/json' \
     -d '{
       "invoice": {
         "line_items": [
           {
             "quantity": 5,
             "product_id": "8755c86a-d630-4920-b6fd-fd2917d87dfb",
             "vat_rate_id": "51cefc6c-9f82-484e-ae6a-a3a89b507bea"
           },
           {
             "quantity": 1,
             "product_id": "b97601e1-e795-4c47-85d5-e5c54a75058d",
             "vat_rate_id": "479155c3-0995-4689-a3cf-7482ea5132a9"
           }
         ]
       }
     }'