In Germany, fiskaly supports sending e-invoices. E-invoicing is regulated by the Federal Ministry of Finance (BMF — Bundesministerium der Finanzen). All e-invoices are required to comply with EN 16931, which is satisfied by formats such as XRechnung, ZUGFeRD, or Peppol BIS 3.0 Billing, and are to be archived for 8 years in the electronically compliant format (§14b UStG).
fiskaly generates EN 16931-compliant e-invoices and delivers them over one of two channels, chosen per invoice on the recipient (recipients[].invoicing): by email — as ZUGFeRD or XRechnung — or over the PEPPOL network, as XRechnung.
This page covers the Germany-specific requirements that complement the General Step-by-step Integration. Make sure you have the following taxpayer information ready before proceeding:
vat_id_number— VAT identification number (Umsatzsteuer-ID)credentials.tax_number— tax number in ELSTER format (Steuernummer)name— registered legal name and trade name of the company or individualaddress— registered legal address of the company or individual
Sending e-invoices: recipient requirements
Section titled “Sending e-invoices: recipient requirements”To send an e-invoice, you specify its recipient and how the invoice should reach them — right on the invoice record. When you create the invoice (TRANSACTION::INVOICE) with createRecord, add the recipient to its recipients array.
As the General Step-by-step Integration explains, each recipient must be a BUSINESS with a populated invoicing block. Beyond the standard details every e-invoice requires (recipient name, address, tax identification, invoice lines, and so on), Germany adds the delivery channel on the recipient:
recipients[].type=BUSINESSrecipients[].invoicing.type=EMAILorPEPPOL— the delivery channelrecipients[].invoicing.email— (EMAIL only) the recipient’s email addressrecipients[].invoicing.format— (EMAIL only, optional) the document formatrecipients[].invoicing.identifier— (PEPPOL only) the recipient’s PEPPOL Network Identifier
invoicing.type | Also required | How fiskaly delivers it |
|---|---|---|
EMAIL | invoicing.email | Emailed to that address, as ZUGFeRD or XRechnung depending on invoicing.format. |
PEPPOL | invoicing.identifier | Sent to the recipient’s PEPPOL endpoint as XRechnung. |
You choose the channel per invoice, not once per recipient — the same business can receive one invoice by email and the next over PEPPOL.
Without the invoicing block, the e-invoice is created but not delivered to
the recipient.
Sending via PEPPOL
Section titled “Sending via PEPPOL”On the recipient in your createRecord request, set:
recipients[].invoicing.type=PEPPOLrecipients[].invoicing.identifier— the recipient’s PEPPOL Network Identifier
Two things are required before this works: the PEPPOL registration must already be in place, and you need the recipient’s PEPPOL Network Identifier. fiskaly takes care of the identifier scheme.
Invoices sent this way are generated as XRechnung, which is Peppol BIS 3.0-compliant. recipients[].invoicing.format plays no part here — the format is not selectable on this channel.
Sending to German public-sector buyers (B2G) is not supported yet, so Leitweg-ID addressing is not available.
Sending by email: choosing the document format
Section titled “Sending by email: choosing the document format”When the channel is EMAIL, you decide which document format fiskaly generates. Set it on the same recipient in your createRecord request, via recipients[].invoicing.format:
| Value | Format |
|---|---|
ZUGFERD_V2 (default) | ZUGFeRD — a hybrid document: a human-readable PDF/A-3 with the structured XML embedded inside it. |
XRECHNUNG_V3 | XRechnung — a pure structured XML invoice, with no PDF layer. |
The field is optional: omit it and fiskaly generates ZUGFERD_V2. Both formats comply with EN 16931.