File a VAT ledger into the Belgian Periodic VAT Return XML (Intervat)
Skill: Convert a VAT ledger into the Intervat periodic VAT-return XML
Region: Belgium (België / Belgique)
Category: VAT — Intervat periodic return (FPS Finances / FOD Financiën — aangifte / déclaration TVA)
Does: Takes a period's VAT ledger (sales, purchases, intra-Community and import operations) and produces the Intervat VATConsignment / VATDeclaration XML — the periodic VAT return uploaded to the Intervat portal, with each ledger total mapped to its official grid (<Data Sequence="…">) and the payable-or-refundable balance computed in grids 71/72.
Standard: FPS Finances Intervat — VATConsignment (namespace http://www.minfin.fgov.be/InputCommon + …/VATConsignment), schema version aligned with the current Intervat release (NewAsk / NewTVA grid model)
This XML is the file you upload to the Intervat portal (or send via its web service) and sign there; the AI does not file it. Periodic returns are due by the 20th of the month following the reporting period (monthly or quarterly filers). This skill builds the standard return — it does not cover the special VAT account, the annual client listing (a separate skill), or intra-Community sales listings. Grid definitions and the schema change; validate against the current Intervat XSD and grid instructions from FOD Financiën / SPF Finances before filing.
When this applies
- A Belgian VAT-registered taxpayer who files monthly or quarterly periodic returns must report output and input VAT to FOD Financiën. The figures are summed by grid and uploaded as Intervat XML.
- Out of scope: taxpayers under the small-business exemption (franchise régime, no periodic return), the annual client listing (grids/format differ — separate skill), the EC sales (intra-Community) listing, and the special MOSS/OSS returns.
- A nil return is still filed (all grids 0 except structural ones). A correction is filed as a new declaration for the same period via the portal's amend flow.
Filing procedure
- Read the source. Accept the VAT ledger as CSV/JSON (per-grid totals or per-invoice rows), spreadsheet export, or pasted figures. Identify the declarant's VAT number, the period (month or quarter + year), and the amount per operation type.
- Aggregate to grids. Map every ledger amount to its grid number (see code tables). Sum per-invoice rows into grid totals if the source is line-level. If an amount cannot be confidently assigned to a grid, stop and ask — do not guess a grid.
- Normalize.
- VAT number →
BE+ 10 digits, no dots/spaces (cbc-style attribute uses the bare 10 digits where the schema requiresVATNumber). - Amounts → EUR, 2 decimals, dot separator, non-negative (the grid model carries the sign by grid, not by minus sign).
- Period → month
01–12or quarter1–4with the 4-digit year.
- VAT number →
- Compute the output VAT, deductible VAT, and balance per the calculation rules. Grid 71 (to pay) or 72 (refundable) is derived, never copied.
- Emit the
VATConsignmentwith oneVATDeclarationper declarant, listing each non-empty grid as a<Data Sequence="NN">value</Data>. Follow the document structure and worked example. - Validate against the checklist and the Intervat XSD/grid coherence rules before uploading.
Source → grid field map
| From the source | → Grid (Data Sequence) |
|---|---|
| Sales taxed at 0%/exports/intra-EU triangulation base | 00 |
| Sales taxed at 6% (base) | 01 |
| Sales taxed at 12% (base) | 02 |
| Sales taxed at 21% (base) | 03 |
| Intra-Community supplies of goods (base) | 46 |
| Other exempt sales / services abroad (base) | 47 |
| Credit notes issued on outgoing operations (base) | 48 |
| Other corrections / non-listed outgoing | 49 |
| Output VAT on sales (6/12/21%) | 54 |
| VAT due on intra-Community acquisitions (reverse charge) | 55 |
| VAT due under other reverse-charge (cocontractant) | 56 |
| VAT due on imports with deferral (ET 14000) | 57 |
| Corrections to output VAT (credit notes received side) | 61/62 |
| Total output VAT due (54+55+56+57+61+63) | XX→ feeds grid 71 |
| Purchases of goods/services (base) | 81 |
| Purchases of fixed assets (capital goods, base) | 83 |
| Other purchases / general expenses base | 82 |
| Credit notes received (base) | 84/85 |
| Intra-Community acquisitions of goods (base) | 86 |
| Other incoming reverse-charge purchases (base) | 87 |
| Imports with VAT deferral (base) | 88 |
| Deductible input VAT | 59 |
| Corrections to deductible VAT | 62/64 |
| VAT to pay to the State | 71 |
| VAT refundable by the State | 72 |
| Request for refund (checkbox) | Ask/Restitution |
| Request for payment forms | Ask/Payment |
The non-empty grids appear above. Emit only grids with a non-zero value plus the structural balance grids your figures imply.
Document structure
VATConsignment (root; one upload, ≥1 declaration)
├── @VATDeclarationsNbr (count of declarations)
└── VATDeclaration (one per declarant per period)
├── @SequenceNumber (1, 2, … within the file)
├── ns2:ReplacedVATDeclaration (optional — period of the return being replaced)
├── ns2:Declarant (filing taxpayer)
│ ├── ns2:VATNumber (BE 10 digits)
│ ├── ns2:Name
│ ├── ns2:Street / ns2:PostCode / ns2:City
│ └── ns2:CountryCode (BE)
├── ns2:Period (reporting period)
│ ├── ns2:Month (01–12) — monthly filer
│ │ or ns2:Quarter (1–4) — quarterly filer
│ └── ns2:Year (yyyy)
├── ns2:Data Sequence="NN" (one per non-empty grid; repeatable)
├── ns2:ClientListingNihil (optional flag)
├── ns2:Ask (optional refund / payment-form requests)
│ ├── ns2:Restitution (refund request, true/false)
│ └── ns2:Payment (request payment forms)
└── ns2:Comment (optional free text)
Mandatory: Declarant/VATNumber, Period, and the Data grids; either Month or Quarter (not both). Ask/Restitution only when grid 72 shows a refund and the taxpayer requests it.
Code tables
Outgoing-operation grids (bases — sales)
| Grid | Meaning |
|---|---|
00 |
Sales subject to 0% (and other special-rate/exempt-with-credit bases) |
01 |
Base of sales at the 6% rate |
02 |
Base of sales at the 12% rate |
03 |
Base of sales at the 21% rate |
44 |
Services to EU taxable persons (B2B services, reverse-charge in customer's state) |
45 |
Supplies where Belgian VAT is due by the co-contractor (domestic reverse charge — supplier side) |
46 |
Intra-Community supplies of goods (and certain triangular) — base |
47 |
Other exempt operations / supplies outside Belgium — base |
48 |
Credit notes issued relating to grid 46 operations — base |
49 |
Credit notes issued / other corrections on outgoing operations — base |
Output-VAT grids
| Grid | Meaning |
|---|---|
54 |
VAT due on grids 01/02/03 (domestic taxed sales) |
55 |
VAT due on intra-Community acquisitions (grid 86) — reverse charge |
56 |
VAT due under domestic reverse charge / other (cocontractant, grids 87) |
57 |
VAT due on imports with deferred accounting (ET 14000, grid 88) |
61 |
Various adjustments increasing VAT due |
63 |
VAT on credit notes received (to be repaid) |
Incoming-operation grids (bases — purchases)
| Grid | Meaning |
|---|---|
81 |
Purchases of goods, raw materials, merchandise — base |
82 |
Purchases of services and miscellaneous goods — base |
83 |
Purchases of capital goods / fixed assets — base |
84 |
Credit notes received relating to grid 86 — base |
85 |
Credit notes received / other corrections (incoming) — base |
86 |
Intra-Community acquisitions of goods — base |
87 |
Other incoming operations with VAT due by declarant (reverse charge) — base |
88 |
Imports with VAT deferral — base |
Deductible-VAT and balance grids
| Grid | Meaning |
|---|---|
59 |
Deductible input VAT |
62 |
Various adjustments increasing deductible VAT |
64 |
VAT on credit notes issued (recoverable) |
71 |
VAT to pay to the State (when output VAT > deductions) |
72 |
VAT refundable by the State (when deductions > output VAT) |
Period type
| Element | Values |
|---|---|
ns2:Month |
01–12 (monthly filers) |
ns2:Quarter |
1–4 (quarterly filers) — mutually exclusive with Month |
Calculation rules
- Output VAT per rate: grid
54=(grid01 × 6%) + (grid02 × 12%) + (grid03 × 21%), 2 decimals. Verify against ledger VAT and flag mismatches. - Reverse-charge VAT due: grid
55= grid86base × applicable rate; grid56= grid87base × rate; grid57= grid88base × rate. - Total VAT due =
54 + 55 + 56 + 57 + 61 + 63. - Total deductible =
59 + 62 + 64. - Balance: if Total VAT due − Total deductible > 0 → grid
71= that difference; if < 0 → grid72= its absolute value. Exactly one of71/72is present (or both absent if zero). - All grid amounts are non-negative with 2 decimals, dot separator, no thousands separator; the sign is implicit in which grid carries the figure.
- Recompute grids 54/55/56/57, 71, and 72 from the bases; never copy a printed balance — flag discrepancies with the source.
Worked example (end-to-end)
Input — quarterly VAT ledger (Q1 2026)
Declarant: Voorbeeld Diensten BV, VAT BE 0888.222.333
Address: Kerkstraat 12, 9000 Gent, BE
Period: Quarter 1, 2026
Domestic sales at 21%: base 50000.00, output VAT 10500.00
Domestic sales at 6%: base 10000.00, output VAT 600.00
Intra-Community acquisitions of goods: base 8000.00 (VAT due at 21% = 1680.00, fully deductible)
Purchases of goods/services (domestic): base 20000.00, input VAT 4200.00
Purchases of capital goods: base 5000.00, input VAT 1050.00
After extraction + normalization (intermediate)
{
"declarant": { "vat": "BE0888222333", "name": "Voorbeeld Diensten BV",
"street": "Kerkstraat 12", "post": "9000", "city": "Gent", "country": "BE" },
"period": { "quarter": "1", "year": "2026" },
"grids": {
"01": 10000.00, "03": 50000.00,
"54": 11100.00, "55": 1680.00,
"81": 20000.00, "83": 5000.00, "86": 8000.00,
"59": 6930.00,
"71": 5850.00
}
}
Derivation: grid 54 = 50000×21% + 10000×6% = 10500.00 + 600.00 = 11100.00. Grid 55 = 8000×21% = 1680.00. Grid 59 = 4200.00 (purchases) + 1050.00 (capital) + 1680.00 (deductible IC-acquisition VAT) = 6930.00. Total due = 11100.00 + 1680.00 = 12780.00; total deductible = 6930.00; balance = 12780.00 − 6930.00 = 5850.00 → grid 71.
Output — Intervat VATConsignment XML
<?xml version="1.0" encoding="UTF-8"?>
<ns2:VATConsignment xmlns="http://www.minfin.fgov.be/InputCommon"
xmlns:ns2="http://www.minfin.fgov.be/VATConsignment"
VATDeclarationsNbr="1">
<ns2:VATDeclaration SequenceNumber="1">
<ns2:Declarant>
<VATNumber>0888222333</VATNumber>
<Name>Voorbeeld Diensten BV</Name>
<Street>Kerkstraat 12</Street>
<PostCode>9000</PostCode>
<City>Gent</City>
<CountryCode>BE</CountryCode>
</ns2:Declarant>
<ns2:Period>
<ns2:Quarter>1</ns2:Quarter>
<ns2:Year>2026</ns2:Year>
</ns2:Period>
<ns2:Data Sequence="01">10000.00</ns2:Data>
<ns2:Data Sequence="03">50000.00</ns2:Data>
<ns2:Data Sequence="54">11100.00</ns2:Data>
<ns2:Data Sequence="55">1680.00</ns2:Data>
<ns2:Data Sequence="59">6930.00</ns2:Data>
<ns2:Data Sequence="81">20000.00</ns2:Data>
<ns2:Data Sequence="83">5000.00</ns2:Data>
<ns2:Data Sequence="86">8000.00</ns2:Data>
<ns2:Data Sequence="71">5850.00</ns2:Data>
<ns2:Ask>
<ns2:Restitution>false</ns2:Restitution>
<ns2:Payment>false</ns2:Payment>
</ns2:Ask>
</ns2:VATDeclaration>
</ns2:VATConsignment>
Normalisations shown: VAT BE 0888.222.333 → bare 0888222333 in VATNumber; quarterly period → Quarter 1 + Year 2026 (no Month); amounts to 2dp dot-decimal, non-negative; grid 54 recomputed 50000×21% + 10000×6% = 11100.00; grid 55 reverse-charge 8000×21% = 1680.00; grid 59 deductible 4200 + 1050 + 1680 = 6930.00; balance to pay grid 71 12780.00 − 6930.00 = 5850.00. Because the result is payable, grid 72 is absent and Restitution is false. Upload to Intervat and sign there by the 20th of the month following Q1 (20 April 2026).
Validation checklist
- All ledger amounts mapped to a recognised grid; AI asked about anything that could not be assigned (no invented grids or figures)
-
Declarant/VATNumberisBE+ 10 digits (bare 10 digits in the schema field);CountryCode=BE - Exactly one period type:
ns2:Month(01–12) orns2:Quarter(1–4), plus 4-digitYear - Grid
54=01×6% + 02×12% + 03×21%; grids55/56/57reconcile with bases86/87/88 - Grid
59includes deductible reverse-charge VAT where applicable - Exactly one of grid
71(to pay) / grid72(refundable) present, equal to Total due − Total deductible; both absent only if zero - All amounts non-negative, 2dp, dot separator, no thousands separator
-
Ask/Restitutionset only when grid72is present and a refund is requested - Nil return filed as all-zero grids with structural elements present; corrections filed as a replacement declaration for the same period
- File validated against the current Intervat XSD and grid coherence rules, then uploaded and signed by the 20th-of-following-month deadline
Last updated: 2026-06-13 — verify the active Intervat schema (VATConsignment) namespace/version, the official grid numbers and coherence rules, and the filing deadline against the current FOD Financiën / SPF Finances Intervat documentation before use.