Onboarding a German Company
The sequence is the generic partner sequence. This page states only what a German company changes at each step and links to the endpoint reference rather than restating it, so there is one authoritative description of every call.
The sequence
| Step | Call | Reference |
|---|---|---|
| 1 | Authenticate as the partner | Authentication |
| 2 | Create the company with German values | Create company |
| 3 | Create the end customer's user | Create user |
| 4 | Retrieve the company API key | Get company API key |
| 5 | Check whether the identifier is already on the network | Check Peppol participant |
| 6 | Submit the Peppol register request | Submit register request |
| 7 | Follow the request until it settles | List register requests |
There is no eighth step for Germany. No country configuration record is created, and nothing has to be registered with a German platform before invoicing can start — see the overview for why.
Step 2 — the company
Country is DE. Two identifier fields matter and they are not interchangeable in German practice:
- the USt-IdNr, the German VAT identification number, which begins
DEand is what a Peppol participant is normally registered under; - the Steuernummer, the domestic tax number issued by the local tax office, which is not a VAT identifier and is not usable for Peppol addressing.
The platform does not enforce which of the two goes in which field, and it takes no position on the convention. Pick one mapping, apply it to every company you onboard, and record it in your own integration notes — a mixed population is painful to correct later, because the value is what a counterparty addresses.
A German company can legitimately have no VAT identification number at all — a Kleinunternehmer under § 19 UStG typically has none. Do not make the VAT number a hard requirement in your own onboarding form if you serve that segment; decide instead what you will register such a company under, and expect to discuss it with support before you promise Peppol delivery.
Step 5 and 6 — the identifier scheme
This is where a German onboarding goes wrong most often.
Register your client under 9930, their VAT identification number. That is the scheme a German business is addressed by, and it is the one a supplier registers.
Do not register a client under 0204. 0204 is the Leitweg-ID scheme, and a Leitweg-ID is the addressing identifier of a public-sector receiver, issued by that authority to route invoices to itself. Your client is the sender in a B2G transaction: they put the buyer's Leitweg-ID in the invoice, they do not register it as their own participant identifier. Registering a supplier under 0204 produces a participant nobody addresses.
Check the identifier before submitting. If the check reports that the identifier already resolves on the network, it belongs to another service provider and the registration has to be handled as a migration rather than a fresh request — raise it with support instead of resubmitting.
Submit identifiers without punctuation. The identifier is normalised when the participant record is derived, so read the identifier back from the response and use the value the platform reports, rather than the value you sent, whenever you display or reconcile it.
Step 7 — what to poll
Poll List register requests and act on the status it returns. The status set and its meanings are documented there; treat anything that is not a settled success as "not yet usable" rather than inferring intermediate mechanics.
Two practical points:
Do not gate invoicing on approval more than you have to. Sending an invoice by a non-Peppol channel does not depend on the participant record. What depends on it is Peppol delivery, in both directions.
An approved registration is not the same as a discoverable participant. Before you promise a client that suppliers can reach them, verify the identifier with Check Peppol participant rather than relying on the request status alone.
Errors
Error shapes, codes and the errorType values are documented once, in the Error reference. Nothing in the German flow introduces its own error vocabulary.
What to tell the end customer
They receive no password from you: the company API key is the credential their traffic authenticates with, and it is yours to deliver to them through whatever channel your product already uses. Treat it as a secret — it carries access to that company's invoice data.