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.

  1. In the Invoice Portal, select Germany and Production.
  2. Follow Onboard a company in Germany with the company’s real details.
  3. 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.

Create a production API key

In Developer portal › API keys, create a key under Production API keys. Give it Write access if it sends invoices. See Create an API key.

With Production selected, open Source management and link the source you added during onboarding to your integration mapping and the company’s branch. See Manage sources and their links.

Pass the required test cases

Check that the test cases for Germany show Passed in Test your mapping. If your workspace uses the Default GETS Mapping, production documents are refused with 412 until they do.

Switch your requests to production

  • Load the production key in place of the sandbox key.
  • Send "environment": "production" in every Unify request.
  • Set source to the production source’s name:version.
  • If you use an SDK, change its environment setting to production. Each SDK guide shows where.

Check credits and webhooks

  • In the Invoice Portal, open Credits with Production selected and check the balance. See Check your credit balance and usage.
  • To receive purchase invoices from your suppliers through webhooks, create a separate webhook for Production that points to your live endpoint. See Set up a webhook.

Send the first production invoice

Send one real invoice to a buyer and follow it with its documentId until isTerminal is true. See Submit and retrieve. final_valid means it was accepted. rejected or final_invalid means it was not: 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 9930 for a German VAT identifier.
  • Supply a buyer accounting reference on B2B invoices. For a public-sector buyer, send its Leitweg-ID in extensions.de_leitwegId, 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.

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