Go live in Germany
Work through this checklist before you send German e-invoices in production. You need German documents that already pass in sandbox and the company's registered details.
Onboard the company in production
A company onboarded in sandbox is not registered in production.
- In the Invoice Portal, select Germany and Production.
- Follow Onboard a company in Germany with the company’s real details.
- If the form offers Peppol setup, enter the company’s own participant details.
Open Onboard and wait for a completed registration status. A Pending registration is not ready to send invoices.
Move your integration to production
- Create a key under Production API keys with Write access. See Create an API key.
- With Production selected, link the source you added during onboarding to your mapping and the company’s branch. See Manage sources and their links.
- Send
"environment": "production"and the production source’sname:versionin every Unify request. If you use an SDK, change its environment setting; each SDK guide 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 and Set up a webhook.
Check the required test cases
If your workspace uses the Default GETS Mapping, the test cases for Germany must show Passed in Test your mapping. Until they do, Unify refuses invoices with 412 and failed_precondition, in sandbox and in production.
Send the first production invoice
Send one real invoice to a buyer and follow it with its documentId. See Submit and retrieve. For Germany, 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 German 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.
German checks
- Replace every sample participant, tax and bank identifier from your tests with real values. Use the scheme actually assigned to each party, such as
9930for a German VAT identifier. - Supply a buyer accounting reference on B2B invoices. For a public-sector buyer, add the
b2gmodifier, send its Leitweg-ID inextensions.de_leitwegIdwithout a buyer accounting reference, and ask the authority which format and channel it accepts. - Check each document type against the Germany field reference and the 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 Germany have not all passed. Run them, then send the document again. 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.
Last updated