Skip to main content

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. Buyer Side (Purchase 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

{
  "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"
    }
  ]
}
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 TypeLedger Account(s)
Standard44571 or 44572
Purchases
VAT TypeLedger Account(s)
Standard44566 and 445664
Fixed assets (Immo)44562
Intracom – Reverse charge445662 or 445665 + 4452
Intracom fixed assets – Reverse charge445621 or 445622 + 4452
Extracom – Reverse charge4456698 + 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.

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 an exonerated tax code (not necessarily marked reversed)
  • Total = net amount, no VAT included

Example — Sales Invoice (minimal)

{
  "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"
    }
  ]
}

✅ Summary

RoleTax TreatmentChift API Handling
BuyerSelf-assess VATtax_amount = 0, tax code reversed = true → API generates offsetting VAT entries
SellerVAT exempttax_amount = 0, tax_rate = 0, use exonerated tax code