> ## 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 will **automatically generate 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 reverse VAT must be explicitly described.

***

## 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                                                                           |
