# Go live in Belgium

Work through this checklist before you send Belgian invoices over Peppol in production. You need Belgian documents that already pass in sandbox and the company's registered Peppol details.

> **Before you start**
>
> - Every Belgian document type you will send passes in sandbox. See [Test in sandbox](https://docs.complyance.io/get-started/sandbox/#united-arab-emirates-belgium-and-germany).
> - The company’s legal name, VAT details and enterprise number, and its existing Peppol participant ID if it has one.
> - The registered Peppol participant ID and scheme of each buyer you will invoice.

## Step 1: Onboard the company in production

A company onboarded in sandbox is not registered in production.

1. In the Invoice Portal, select **Belgium** and **Production**.
2. Follow [Onboard a Belgian company](https://docs.complyance.io/countries/be/onboarding/) with the company’s real details.
3. In the Peppol setup, register a participant or use the company’s existing participant ID. Never use a test ID in production.

Open **Onboard** and wait until the company’s registration is complete. A `Pending` registration is not ready to send invoices.

## Step 2: Move your integration to production

- Create a key under **Production API keys** with **Write** access. See [Create an API key](https://docs.complyance.io/one-platform/developer-portal/api-keys/).
- With **Production** selected, link the source you added during onboarding to your mapping and the company’s branch. See [Manage sources and their links](https://docs.complyance.io/one-platform/developer-portal/source-management/).
- Send `"environment": "production"` and the production source’s `name:version` in every Unify request. If you use an SDK, change its environment setting; each [SDK guide](https://docs.complyance.io/sdks/) shows where.
- Check the production credit balance in **Credits**. To receive purchase invoices from your suppliers through webhooks, create a separate production webhook. See [Credits](https://docs.complyance.io/one-platform/invoice-portal/credits/) and [Set up a webhook](https://docs.complyance.io/one-platform/developer-portal/webhooks/setup/).

## Step 3: Check the required test cases

If your workspace uses the **Default GETS Mapping**, the test cases for Belgium must show **Passed** in [Test your mapping](https://docs.complyance.io/one-platform/developer-portal/integration-engine/test/). Until they do, Unify refuses invoices with `412` and `failed_precondition`, in sandbox and in production.

## Step 4: Send the first production invoice

Send one real invoice to a buyer and follow it with its `documentId`. See [Submit and retrieve](https://docs.complyance.io/api-reference/unify/submit-and-retrieve/#follow-the-document). For Belgium, Complyance’s last step is delivering the invoice to the buyer’s Peppol access point: the Invoice Portal then shows it as **Submitted**, with delivery **Delivered**. The API does not report `final_valid` for a Belgian invoice, and `isTerminal` stays `false` after delivery. Stop checking when `state` is `delivery_success` or `delivery_failed`. `rejected` means it failed validation: read `errors` for the reason. Confirm with the buyer that the invoice arrived.

## Belgian checks

- Replace every sample participant ID from your tests with the real, registered IDs of both parties. With scheme `0208`, the ID is the ten-digit enterprise number without the `BE` prefix.
- Include a buyer reference or a purchase order reference on every invoice.
- Check each document type against the [Belgium field reference](https://docs.complyance.io/countries/be/fields/) and the [validation rules](https://docs.complyance.io/countries/be/validation-rules/).

## If something goes wrong

**The company stays `Pending`:** use **Refresh status** if it is offered, and check again later.

**`403` with `permission_denied`:** the key is a sandbox key. Use a production key with `"environment": "production"`.

**`412` with `failed_precondition`:** the required test cases for Belgium have not all passed. Run them, then send the document again. [Unify errors](https://docs.complyance.io/api-reference/unify/errors/) lists each reason.

**The buyer does not receive the invoice:** check the buyer’s participant ID and scheme with them, then check the document’s status.

> **You are live**
>
> The company is registered in production, and your first production invoice reached its buyer. Keep following each document to its final status.

Last updated 16 October 2026

Source: https://docs.complyance.io/countries/be/go-live/
