> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.monite.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.monite.com/_mcp/server.

# VAT rates

> Learn how the VAT rates for invoices and quotes work.

> **Info**
>
> This page uses the term "VAT" to collectively refer to VAT and sales tax (e.g. GST).

## Overview

[Invoices](./invoices/create) and [quotes](./quotes/create) 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.

## VAT use cases \[#use-cases]

VAT rates are generally driven by the country of the entity (seller) with some exceptions. One of those exceptions is the One-Stop Shop (OSS) scheme in Europe, where the VAT rates are based on the counterpart (buyer) country instead.

Below are some scenarios common invoicing scenarios covered by Monite API.

#### Local sales

Entity country: Germany\
Counterpart country: Germany

We assume that the entity has a German [VAT ID](../entities/vat-ids) (of type `eu_vat`):

**`Entity VAT ID`**

```json title="Entity VAT ID"
{
  "country": "DE",
  "type": "eu_vat",
  "value": "123456789"
}
```

`GET /vat_rates?counterpart_id=<...>&entity_vat_id=<...>` returns **German** VAT rates (based on the entity's country).

#### Cross-border sales

Entity country: Netherlands\
Counterpart country: Norway

We assume that the entity has a Dutch [VAT ID](../entities/vat-ids) (of type `eu_vat`):

**`Entity VAT ID`**

```json title="Entity VAT ID"
{
  "country": "NL",
  "type": "eu_vat",
  "value": "123456789B12"
}
```

`GET /vat_rates?counterpart_id=<...>&entity_vat_id=<...>` returns **Dutch** VAT rates (based on the entity's country).

#### EU One-Stop Shop (OSS) scheme

European Union has the [One Stop Shop (OSS)](https://vat-one-stop-shop.ec.europa.eu/one-stop-shop_en) scheme for cross-border B2C sales in the EU.

EU entities registered under the OSS scheme need to create a separate [VAT ID](../../entities/vat-ids) with the `eu_oss_vat` type for use in invoices that fall under that scheme.

**`OSS VAT number`**

```json {2} title="OSS VAT number"
{
  "country": "DE",   // Entity's EU country of registration
  "type": "eu_oss_vat",
  "value": "123456789"
}
```

In the following scenario:

Entity country: Germany\
Entity `entity_vat_id_id` points to the OSS VAT number\
Counterpart country: France

`GET /vat_rates?counterpart_id=<...>&entity_vat_id=<...>` returns **French** VAT rates (based on the counterpart's country).

## VAT rate catalog

Monite maintains a catalog of VAT rates for select countries. API Partners can query the available rates via the [`GET /vat_rates`](/api/vat-rates/get-vat-rates) endpoint ([see below](#get-vat-rates)).

### Supported countries

Currently, the `GET /vat_rates` endpoint provides VAT rates for the following countries:

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

> **Note**
>
> **What about other countries?**
>
> Entities from other countries should not use the `GET /vat_rates` endpoint, and should instead use the invoice field `line_items[].tax_rate_value` to specify tax/VAT rates directly.
> Entities are responsible for providing the correct VAT rate values for the invoice to be compliant.

### Get VAT rates

To query the applicable VAT rates for an invoice, use the [`GET /vat_rates`](/api/vat-rates/get-vat-rates) endpoint with the parameters mentioned below.

If the entity does not have a [VAT ID](../entities/vat-ids), use:

```
GET /vat_rates?counterpart_id=<...>
```

If the entity has a VAT ID, use:

```
GET /vat_rates?entity_vat_id_id=<...>&counterpart_id=<...>
```

> **Note**
>
> * For transactions that fall under the EU OSS scheme, specify the `entity_vat_id_id` that has the `eu_oss_vat` type (not `eu_vat`).
> * For UK entities that trade under the [Northern Ireland protocol](../entities/vat-ids#example-ni-protocol), the entity VAT ID must have `country`="GB" and `type`=`eu_vat` (not `gb_vat`).

The `GET /vat_rates` endpoint returns the applicable VAT rates based on the entity country, counterpart country, transaction type (e.g. B2B or B2C), and the presense (or absense) of entity VAT ID.

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.

```json
{
  "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.

> **Info**
>
> 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`](/api/receivables/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.

```sh {13,18}
curl -X POST 'https://api.sandbox.monite.com/v1/receivables' \
     -H 'X-Monite-Version: 2024-05-25' \
     -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:

```sh
curl -X PATCH 'https://api.sandbox.monite.com/v1/receivables/411dc6eb...6289b3' \
     -H 'X-Monite-Version: 2024-05-25' \
     -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"
           }
         ]
       }
     }'
```