# Belgium: validation rules

Check the fields and Peppol rules that can prevent a Belgian invoice from passing validation. Start with a Belgian GETS invoice and its registered participant IDs.

A Belgian invoice must satisfy its selected GETS document type and Peppol BIS Billing 3.0. This page highlights rules that help you fix common failures; the [Belgium field reference](https://docs.complyance.io/countries/be/fields/) and [Peppol rule catalogue](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/) provide the full details. Do not treat a successful validation as confirmation of delivery.

## Check the invoice before sending

Open the [Belgium field reference](https://docs.complyance.io/countries/be/fields/) to check **Requirement**, **Type**, **Description** and **Enums** for each field. **Requirement** covers all document types, modifiers and variants; read **Description** for conditional requirements. Choose **List with sample request** to select your document type, modifiers and variant and see the applicable fields beside a sample request.

| Check | What to correct | Published rule |
| - | - | - |
| Seller and buyer Peppol addresses | Supply both `parties.seller.peppolId` and `parties.buyer.peppolId`, with their matching `extensions.peppol_seller_peppolIdScheme` and `extensions.peppol_buyer_peppolIdScheme`. | [Seller address R020](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R020/), [buyer address R010](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R010/) |
| Belgian enterprise-number IDs | If using scheme `0208`, enter ten digits with a valid check value. `BE` belongs in the VAT identifier, not the ten-digit participant ID. | [PEPPOL-COMMON-R043](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-COMMON-R043/) |
| Buyer or order reference | Provide a buyer reference (for example `extensions.peppol_buyerAccountingReference`) or a purchase order reference. | [PEPPOL-EN16931-R003](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R003/) |
| Dates and currency | Format issue dates as `YYYY-MM-DD` and use an ISO 4217 currency. Set tax accounting currency only when it differs from invoice currency. | [Date F001](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-F001/), [currency CL007](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-CL007/), [tax currency R005](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R005/) |
| Lines and totals | Include each line’s VAT category and rate. Send `lineTotal` as the line’s net amount, before VAT. Send a VAT breakdown in `taxTotals`, and reconcile line, VAT and payable totals. Use the correct category for the transaction rather than always using standard VAT. | [Invoice-line net amount R120](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R120/), [VAT breakdown BR-CO-18](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-18/) |

## Read a failed submission

A `422` response lists validation problems. Use `getsPath` to find the GETS field and `payloadPath` to find the field in your submitted payload; correct each reported error before resubmitting. See [Unify errors](https://docs.complyance.io/api-reference/unify/errors/) for the response format. A `200` means validation and storage succeeded. Check [delivery status](https://docs.complyance.io/api-reference/unify/submit-and-retrieve/) separately.

If the invoice passes validation but cannot reach its buyer, confirm the buyer’s registered Peppol participant details and inspect the delivery status. A valid identifier format alone does not prove that the buyer can receive at that address.

Next, [try a Belgian invoice in sandbox](https://docs.complyance.io/countries/be/examples/).

Source: https://docs.complyance.io/countries/be/validation-rules/
