> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chift.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Handling reverse VAT (reverse charge) in accounting

> How to manage reverse VAT invoices with Chift’s Unified API, focusing on purchase invoices.

## Reverse VAT overview

The **Reverse VAT** (reverse charge) shifts **VAT reporting** from the **seller** to the **buyer**.\
Common scenarios:

* **Cross-border B2B sales within the EU**
* **Domestic transactions** for specific goods/services
* **Imported services** from non-EU suppliers

Under reverse charge:

* Seller **does not charge VAT**
* Buyer **self-assesses VAT**, creating both **input** and **output VAT entries**
* Net VAT to pay is usually **0**, but declaration is ensured

***

## 1. Reverse VAT with `create invoice`

When using the invoice endpoints, Chift handles the reverse VAT accounting automatically.

### 1.1 Purchase invoices (`supplier_invoice`)

For invoices subject to reverse VAT:

* **No VAT is charged** on the invoice (`tax_amount = 0`)
* Assign the appropriate **reverse VAT tax code** with `reversed = true`
* `tax_rate` is the applicable VAT rate (used for self-assessment)

Chift’s API **automatically generates two VAT ledger entries**:

* **Output VAT** (as if the buyer had issued the invoice)
* **Input VAT** (as if the buyer had paid it)

These entries **offset each other**, so no VAT is paid, but both are **properly declared** in the VAT return.

#### Example — purchase invoice

```json theme={null}
{
  "invoice_type": "supplier_invoice",
  "invoice_number": "SUP-INV-778",
  "currency": "EUR",
  "untaxed_amount": 2000,
  "tax_amount": 0,
  "total": 2000,
  "reference": "Consulting services from UK supplier",
  "invoice_date": "2025-07-05",
  "due_date": "2025-08-05",
  "partner_id": "supp-789",
  "journal_id": "abcpurchjourid",
  "lines": [
    {
      "line_number": 1,
      "quantity": 1,
      "untaxed_amount": 2000,
      "tax_rate": 21,
      "tax_amount": 0,
      "total": 2000,
      "account_number": "604000",
      "tax_code": "REV-IMPORT-SERVICES",
      "description": "Consulting service - Reverse VAT applicable"
    }
  ]
}
```

### 1.2 Seller side (sales invoice)

For sales invoices under reverse charge, the treatment is simpler:

* **Do not charge VAT** (`tax_amount = 0`, `tax_rate = 0`)
* Use the appropriate **0% tax code corresponding to the reverse-charge scenario** (not necessarily marked `reversed`)
* **Total = net amount**, no VAT included

### Example — sales invoice (minimal)

```json theme={null}
{
  "invoice_type": "customer_invoice",
  "invoice_number": "INV-2025-001",
  "untaxed_amount": 1000,
  "tax_amount": 0,
  "total": 1000,
  "lines": [
    {
      "line_number": 1,
      "quantity": 1,
      "untaxed_amount": 1000,
      "tax_rate": 0,
      "tax_amount": 0,
      "total": 1000,
      "tax_code": "REV-EU-B2B"
    }
  ]
}
```

***

## 2. Reverse VAT with `create journal entry`

Journal entries work differently from invoices.

With invoices, Chift derives accounting entries automatically.

With journal entries, you are directly providing the accounting data, so you must describe reverse VAT explicitly.

***

## 2.1 Purchase-side reverse VAT

For purchase reverse VAT:

* `tax_info` must be attached to the expense line
* `tax_amount` should be calculated as:\
  **amount excl. tax × VAT rate linked to the tax code** and **must not be zero**
* `vat_account` should typically be the deductible VAT account returned by the **Get VAT Codes** endpoint
* `reversed_vat_account` should typically be the payable VAT account returned by the **Get VAT Codes** endpoint

### Example

```json theme={null}
{
  "reference": "Reverse VAT purchase",
  "journal_id": "HA",
  "currency": "EUR",
  "date": "2026-05-05",
  "items": [
    {
      "account_type": "supplier_account",
      "account": "SUP21",
      "credit": 100
    },
    {
      "account_type": "general_account",
      "account": "601000",
      "debit": 100,
      "tax_info": {
        "tax_code": "445621$445200$021",
        "tax_amount": 21,
        "vat_account": "445621",
        "reversed_vat_account": "445200"
      }
    }
  ]
}
```

<Warning>
  This is different from `create invoice`.

  Even though the supplier invoice itself contains no charged VAT, the journal entry must explicitly provide the VAT amount so Chift can generate the reverse VAT postings.
</Warning>

***

## 2.2 Sales-side reverse VAT

No specific reverse VAT handling is required.

Create the journal entry as a normal VAT-exempt sale.

***

<Accordion title="VAT ledger accounts logic in France">
  Some accounting software does not expose VAT codes through their API, or does not use them at all. In these cases, Chift reconstructs VAT codes artificially from the VAT ledger accounts (accounts starting with `445`) in order to keep the data model consistent across all connectors. The behavior is identical for the API consumer regardless of the underlying system.

  There are two scenarios:

  * **The accounting software supports VAT codes** (and exposes them via API) → no special handling required.
  * **The accounting software does not have VAT codes** (or they are not accessible via API) → Chift infers the VAT code from the `445x` ledger accounts present on the transaction, using the following logic:

  **Sales**

  | VAT Type | Ledger Account(s)  |
  | :------- | :----------------- |
  | Standard | `44571` or `44572` |

  **Purchases**

  | VAT Type                                       | Ledger Account(s)                                                      |
  | :--------------------------------------------- | :--------------------------------------------------------------------- |
  | Standard                                       | `44566` and `445664`                                                   |
  | Fixed assets (*Immo*)                          | `44562`                                                                |
  | Intracom – Reverse charge                      | `445662` or `445665`**+**`4452`                                        |
  | Intracom fixed assets – Reverse charge         | `445621` or `445622`**+**`4452`                                        |
  | Extracom – Reverse charge                      | `4456698`**+**`445798`, or `445661`**+**`4451`, or `445663`**+**`4453` |
  | Domestic reverse charge (*Autoliquidation FR*) | `4456699`**+**`445799`, or `445666`**+**`445716`                       |

  For reverse charge scenarios (Intracom, Extracom, Autoliquidation), the detection relies on a **combination** of two ledger accounts being present together on the transaction: one representing the output VAT side and one the input VAT side.
</Accordion>

### ✅ Summary

| Role                              | Tax Treatment   | Chift API Handling                                                                                                                      |
| :-------------------------------- | :-------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
| **Buyer —**`create invoice`       | Self-assess VAT | `tax_amount = 0`, reversed tax code required → API generates offsetting VAT entries                                                     |
| **Buyer —**`create journal entry` | Self-assess VAT | Through `tax_info`: `tax_amount = amount excl. VAT × rate`, reversed tax code required, `vat_account` + `reversed_vat_account` required |
| **Seller**                        | VAT exempt      | `tax_amount = 0`, `tax_rate = 0`, use appropriate 0% tax code                                                                           |
