HomeProductsElectronic Invoicing - Germany

Electronic Invoicing - Germany

NEW

FREE 10 requests/day

€0.09 + VAT

FREE requests

Manage German B2B and public sector electronic invoicing via API, automating invoice sending, receiving, and monitoring in compliance with current regulations.

Delivery

In real time

available for
  • de

The German Electronic Invoicing API allows you to integrate the complete management of German electronic invoicing into your software through a single REST API. You can configure companies, send and receive electronic invoices, monitor their status, and automate the entire document lifecycle, simplifying integration with the systems required by German regulations.

Designed for software vendors, ERP systems, e-commerce platforms, and companies operating in the German market, the API reduces development complexity through a simple, scalable integration model that can be easily incorporated into existing business processes.

The solution automatically manages the invoice transmission process, provides document status updates through callbacks, and enables electronic invoicing to be integrated directly into ERP systems, applications, and software platforms.

Company Configuration and Services

POST /DE-configurations

Company configuration is the first step in using the German Electronic Invoicing API. Through this endpoint, you can register a company, enable sending, receiving, or both services depending on your integration needs, and configure the callbacks that will automatically receive document status updates.

During the onboarding process, the Legal Entity is created and the DE:VAT identifier is registered on the Peppol network, allowing the company to exchange electronic invoices in compliance with German regulations.

Once the configuration is complete, the company is ready to use the enabled services for sending electronic invoices, receiving them, or both. All document lifecycle updates are automatically delivered through callbacks, keeping your management system synchronized without the need for periodic API requests.

REQUEST EXAMPLE

To configure a company, send a request to POST /DE-configurations. In the following example, both electronic invoice sending and receiving services are enabled, and callbacks are configured to receive document status updates.


{
  "fiscal_id": "DE123456789",
  "name": "Mustermann GmbH",
  "email": "[email protected]",
  "customer_invoice": true,
  "supplier_invoice": true,
  "address": {
    "street_address": "Hauptstraße 42",
    "zip_code": "10115",
    "city": "Berlin",
    "country": "DE"
  },
  "api_configurations": [
    {
      "event": "customer-invoice",
      "callback": {
        "url": "https://your-server.site/webhook/de/out"
      }
    },
    {
      "event": "supplier-invoice",
      "callback": {
        "url": "https://your-server.site/webhook/de/in"
      }
    }
  ]
}

Send Electronic Invoice

POST /DE-invoices

The POST /DE-invoices endpoint allows you to send a German B2B or B2G electronic invoice through a single API request. Once the document is received, Openapi validates it, automatically generates the format required by German regulations, and manages the entire transmission process.

For invoices addressed to businesses (B2B), the API automatically generates documents in the ZUGFeRD format, while for invoices sent to the German Public Administration (B2G), it uses the XRechnung format. Your application does not need to implement different business logic: simply submit the invoice data, and the platform will generate the correct format based on the recipient.

Transmission takes place through the Peppol network, following the procedures required by German regulations. The entire delivery process, document status monitoring, and notifications are automatically managed by the API, simplifying integration with business systems.

  • automatic generation of the ZUGFeRD format for B2B invoices
  • automatic generation of the XRechnung format for Public Administration invoices
  • transmission through the Peppol network
  • automatic callbacks for every invoice status update
  • a single API integration to manage the entire electronic invoicing process

For B2B invoices, the PDF version of the document must be attached. The API automatically embeds the EN 16931 structured data into the PDF and generates a ZUGFeRD document compliant with the PDF/A-3 standard. For invoices addressed to the Public Administration (B2G), the PDF is not required, as the XRechnung XML format is generated automatically.

REQUEST EXAMPLE

The following example shows a request to send a B2B electronic invoice using the POST /DE-invoices endpoint.


{
  "document_number": "INV-2026-001",
  "issue_date": "2026-06-26",
  "currency": "EUR",
  "type": "380",
  "sender": {
    "name": "Mustermann GmbH",
    "fiscal_id": "DE123456789",
    "vat_id": "DE123456789",
    "address": {
      "street_address": "Unter den Linden 34-37",
      "city": "Berlin",
      "zip_code": "10115",
      "country": "DE"
    }
  },
  "recipient": {
    "name": "Customer GmbH",
    "vat_id": "DE987654321",
    "email": "[email protected]"
  },
  "invoice_lines": [
    {
      "description": "IT consulting services",
      "quantity": 50,
      "unit_price": 100.00,
      "total_net_amount": 5000.00,
      "tax_rate": 19,
      "unit_of_measure": "HUR"
    }
  ],
  "tax_subtotals": [
    {
      "taxable_amount": 5000.00,
      "tax_amount": 950.00,
      "tax_rate": 19,
      "tax_category": "standard"
    }
  ],
  "payment_means": [
    {
      "payment_mode": "credit_transfer",
      "financial_account": "DE89370400440532013000",
      "due_date": "2026-07-26",
      "amount": 5950.00
    }
  ]
}

Note: the example shows the submission of a B2B invoice. In this case, the PDF version of the document must be attached. The API automatically converts it into a ZUGFeRD file compliant with the PDF/A-3 standard by embedding the EN 16931 structured data. For invoices addressed to the Public Administration (B2G), the PDF is not required: simply provide the Leitweg-ID, and the API will automatically generate an invoice in the XRechnung format.

Intelligent Invoice Routing

German electronic invoicing requires different transmission methods depending on the recipient type. With the German Electronic Invoicing API, there is no need to implement specific business logic: your management system always submits the invoice to the same REST endpoint, while the platform automatically identifies the most appropriate delivery channel.

For B2B invoices, the recipient is identified using the German VAT number (DE:VAT) and the document is generated in the ZUGFeRD format. For invoices addressed to the Public Administration (B2G), the Leitweg-ID (DE:LWID) is used, and the document is generated in the XRechnung format, as required by German regulations.

  • Peppol – the recipient is automatically identified on the Peppol network using the DE:VAT for B2B invoices or the Leitweg-ID (DE:LWID) for B2G invoices.
  • Email – if the recipient cannot be reached through Peppol and an email address is available, the invoice is automatically sent by email.

For invoices addressed to the Public Administration, it is recommended to also provide the recipient's email address, as not all German public administrations are currently reachable through the Peppol network.

With this approach, you only need to integrate a single API endpoint, while Openapi handles the entire complexity of selecting the transmission channel and delivering the invoice, ensuring compliance with German regulations.

Invoice Status Monitoring

After an electronic invoice has been submitted, the API allows you to monitor its entire lifecycle. Every document is tracked from submission through final delivery, enabling your management system to know the transmission status in real time.

Status updates are automatically delivered through callbacks, eliminating the need to continuously poll the API. Whenever the invoice status changes, the system receives a notification containing all the information required to keep your management system synchronized with the delivery process.

  • automatic receipt of status updates through callbacks
  • monitoring of invoice submission and delivery status
  • access to the history of submitted invoices
  • automatic status updates in your management system

The statuses returned by the API represent the main stages of the invoice lifecycle (NEW, SENT, DONE, and ERROR) and are automatically updated based on the notifications received from the transmission network. This allows you to quickly verify whether an invoice has been accepted, delivered, or requires attention due to an error.

Invoice Retrieval

The German Electronic Invoicing API allows you to retrieve sent and received invoices at any time, including their latest status and all associated data. The retrieval endpoints make it easy to integrate search, monitoring, and synchronization features into your management system.

You can retrieve both the complete list of electronic invoices processed by the service and the details of a specific document, including company information, invoice lines, amounts, attachments, and the current transmission status.

  • retrieve the list of electronic invoices
  • search for a specific invoice by its identifier
  • retrieve the latest transmission status
  • access the complete document details

Invoice List

GET /DE-invoices

The GET /DE-invoices endpoint returns the list of electronic invoices processed by the service. The response includes the main identification data for each document together with its status, making it easy to monitor the invoice lifecycle directly from your management system.

REQUEST EXAMPLE

The following example shows how to retrieve the list of electronic invoices managed by the API.

{
  "data": [
    {
      "document_number": "DE-2026-001",
      "issue_date": "2026-06-26",
      "due_date": "2026-07-26",
      "currency": "EUR",
      "type": "380",
      "total_amount_including_tax": 1190,
      "total_amount_excluding_tax": 1000,
      "total_tax_amount": 190,
      "leitweg_id": null,
      "buyer_reference": null,
      "commitment_number": null,
      "sender": {
        "name": "Mustermann GmbH",
        "vat_number": "DE123456789",
        "vat_id": "DE123456789",
        "leitweg_id": null,
        "email": "[email protected]",
        "address": {
          "street_address": "Hauptstraße",
          "street_number": "42",
          "zip_code": "10115",
          "city": "Berlin",
          "country": "DE"
        }
      },
      "recipient": {
        "name": "Mustermann GmbH",
        "vat_number": "DE123456789",
        "vat_id": "DE123456789",
        "leitweg_id": null,
        "email": "[email protected]",
        "address": {
          "street_address": "Hauptstraße",
          "street_number": "42",
          "zip_code": "10115",
          "city": "Berlin",
          "country": "DE"
        }
      },
      "invoice_lines": [
        {
          "description": "Wireless Mouse",
          "quantity": 2,
          "unit_price": 25.5,
          "tax_rate": 20,
          "total_net_amount": 51,
          "unit_of_measure": "C62",
          "nature": "standard",
          "tax_category": "standard"
        }
      ],
      "payment_means": [
        {
          "payment_mode": "sepa_credit_transfer",
          "due_date": "2026-06-12",
          "amount": 61.2,
          "financial_account": "FR7630006000011234567890123"
        }
      ],
      "tax_subtotals": [
        {
          "taxable_amount": 51,
          "tax_amount": 10.2,
          "vat_rate": 20,
          "tax_category": "standard"
        }
      ],
      "attachments": [
        {
          "document": "JVBERi0xLjcKJeLjz9MK...",
          "mime_type": "application/pdf",
          "filename": "INV-2026-001.pdf",
          "description": "Invoice PDF",
          "document_id": "INV-2026-001"
        }
      ],
      "id": "645a3f2b1c0d9e8f7a6b5c4d",
      "state": "NEW",
      "details": {
        "external_status": "submitted",
        "invoice_type": "ZUGFeRD",
        "leitweg_id": null,
        "submission_date": "2026-06-26T10:00:00Z"
      },
      "create_at": "2026-06-26T10:00:00Z"
    }
  ],
  "success": true,
  "message": "",
  "error": null
}

Invoice Details

GET /DE-invoices/{id}

To retrieve the details of a specific invoice, use the GET /DE-invoices/{id} endpoint by specifying the document identifier returned during the sending or receiving process.

The response includes all invoice information, the current document status, and the data related to the transmission process.

When necessary, you can use the refresh=true parameter, which forces synchronization with the transmission system and returns the most up-to-date status available.

REQUEST EXAMPLE

The following example shows how to retrieve the details of an invoice while forcing a status update.


GET /DE-invoices/645a3f2b1c0d9e8f7a6b5c4d?refresh=true

In most cases, status updates are automatically received through callbacks. The retrieval endpoints provide an additional tool for checking the status of a specific document, synchronizing external systems, or manually updating information when necessary.

{
  "data": {
    "document_number": "DE-2026-001",
    "issue_date": "2026-06-26",
    "due_date": "2026-07-26",
    "currency": "EUR",
    "type": "380",
    "total_amount_including_tax": 1190,
    "total_amount_excluding_tax": 1000,
    "total_tax_amount": 190,
    "leitweg_id": null,
    "buyer_reference": null,
    "commitment_number": null,
    "sender": {
      "name": "Mustermann GmbH",
      "vat_number": "DE123456789",
      "vat_id": "DE123456789",
      "leitweg_id": null,
      "email": "[email protected]",
      "address": {
        "street_address": "Hauptstraße",
        "street_number": "42",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "DE"
      }
    },
    "recipient": {
      "name": "Mustermann GmbH",
      "vat_number": "DE123456789",
      "vat_id": "DE123456789",
      "leitweg_id": null,
      "email": "[email protected]",
      "address": {
        "street_address": "Hauptstraße",
        "street_number": "42",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "DE"
      }
    },
    "invoice_lines": [
      {
        "description": "Wireless Mouse",
        "quantity": 2,
        "unit_price": 25.5,
        "tax_rate": 20,
        "total_net_amount": 51,
        "unit_of_measure": "C62",
        "nature": "standard",
        "tax_category": "standard"
      }
    ],
    "payment_means": [
      {
        "payment_mode": "sepa_credit_transfer",
        "due_date": "2026-06-12",
        "amount": 61.2,
        "financial_account": "FR7630006000011234567890123"
      }
    ],
    "tax_subtotals": [
      {
        "taxable_amount": 51,
        "tax_amount": 10.2,
        "vat_rate": 20,
        "tax_category": "standard"
      }
    ],
    "attachments": [
      {
        "document": "JVBERi0xLjcKJeLjz9MK...",
        "mime_type": "application/pdf",
        "filename": "INV-2026-001.pdf",
        "description": "Invoice PDF",
        "document_id": "INV-2026-001"
      }
    ],
    "id": "645a3f2b1c0d9e8f7a6b5c4d",
    "state": "NEW",
    "direction": "outgoing",
    "details": {
      "external_status": "submitted",
      "invoice_type": "ZUGFeRD",
      "leitweg_id": null,
      "submission_date": "2026-06-26T10:00:00Z"
    },
    "create_at": "2026-06-26T10:00:00Z",
    "updated_at": "2026-06-26T10:00:00Z"
  },
  "success": true,
  "message": "Invoice sent successfully",
  "error": null
}

Receiving Incoming Electronic Invoices

The German Electronic Invoicing API allows you to automatically receive electronic invoices issued by suppliers, centralizing the entire accounts payable process directly within your management system.

Once the receiving service has been enabled during the company configuration process, every invoice addressed to the organization is automatically received and made available through the configured callbacks, regardless of the transmission channel used.

Each supplier-invoice event contains all the information required to identify the document and automatically start registration, accounting, or approval workflows within your management system, eliminating the need to manually process incoming invoices.

  • automatic receipt of supplier electronic invoices
  • real-time callbacks for every new incoming document
  • integration with ERP systems, business management software, and accounting systems
  • no polling activity required
  • complete automation of the accounts payable process

CALLBACK CONFIGURATION

To automatically receive incoming invoices, simply configure a callback during the company onboarding process.


{
  "api_configurations": [
    {
      "event": "supplier-invoice",
      "callback": {
        "url": "https://your-server.site/webhook/de/in"
      }
    }
  ]
}

Each newly received invoice automatically triggers a callback to the configured endpoint, allowing your management system to acquire the document and immediately start internal workflows without making additional API calls.

Who Is the German Electronic Invoicing API For?

The German Electronic Invoicing API is designed for any organization that wants to integrate and automate the management of German electronic invoices directly within its software. It is the ideal solution for software vendors, developers, ERP systems, and Independent Software Vendors (ISVs) looking to quickly achieve compliance with German regulations through a single API integration, without having to manage the complexity of different formats and transmission channels.

It is also intended for Italian and international companies with customers, suppliers, or operational offices in Germany, as well as e-commerce platforms, marketplaces, and accounting software that need to automatically issue and receive electronic invoices. It is equally suitable for accounting firms and consulting companies that manage administrative and tax processes on behalf of their clients.

Thanks to the automatic generation of ZUGFeRD and XRechnung formats, intelligent invoice routing, real-time callbacks, and an integration model shared with the Italian and French Electronic Invoicing APIs, the solution is suitable for both low-volume projects and enterprise platforms processing thousands of documents every day, reducing development time, maintenance costs, and operational complexity.

Sign Up

Do you need help?

Haven't found the answer you're looking for?

Fill in all the details, we will get back to you as soon as possible!

Frequently Asked Questions

The Germany E-Invoicing API enables you to integrate the complete management of German electronic invoicing into your software. Through a single REST API, you can configure companies, send B2B and B2G electronic invoices, receive incoming invoices, monitor document statuses, and receive automatic callback notifications, without having to manage the complexity of formats and transmission channels.

WHAT IS THE GERMANY E-INVOICING API?

Yes. The API supports both B2B electronic invoicing and invoicing to the German Public Administration (B2G). For invoices addressed to public entities, the API automatically generates the XRechnung format, in compliance with German regulatory requirements.

CAN I ALSO MANAGE INVOICING TO THE GERMAN PUBLIC ADMINISTRATION VIA THE API?

The API automatically selects the appropriate format based on the recipient. For B2B invoices, it uses the ZUGFeRD format, which combines a human-readable PDF with structured invoice data. For invoices addressed to the German Public Administration (B2G), it generates the XRechnung format, as required by public authorities. Developers do not need to implement different workflows—they simply submit the invoice data through the API.

WHAT IS THE DIFFERENCE BETWEEN ZUGFeRD AND XRECHNUNG?

No. The API automatically generates the electronic format required by German regulations. For B2B invoices, you only need to provide the invoice data and the invoice PDF, and Openapi automatically generates the ZUGFeRD file. For B2G invoices, the XRechnung format is generated automatically.

DO I NEED TO GENERATE ZUGFeRD OR XRECHNUNG FILES MANUALLY?

Updates are automatically delivered through configurable callbacks during the onboarding process. Every change in an invoice's status is notified to your management system in real time, eliminating the need to continuously poll the API.

HOW DO I RECEIVE UPDATES ON MY INVOICE STATUS?

By enabling the invoice reception service during the company configuration, every electronic invoice addressed to your organization is automatically received and delivered through callback notifications. This allows your management system to register and process incoming invoices immediately, without any manual intervention.

HOW CAN I RECEIVE SUPPLIER INVOICES (INCOMING INVOICES)?

The Leitweg-ID (DE:LWID) is the identifier used by the German Public Administration to receive electronic invoices. When the recipient is a public entity, the API automatically uses this identifier to route the invoice correctly and generate the required XRechnung format.

WHAT IS A LEITWEG-ID?

The API automatically selects the most appropriate delivery channel. Invoices are primarily transmitted through the Peppol network. If the recipient cannot be reached through Peppol and an email address is available, the invoice can be automatically delivered via email. Developers do not need to manage this logic.

HOW IS THE INVOICE TRANSMISSION CHANNEL SELECTED?

The API is designed for software vendors, developers, ERP systems, e-commerce platforms, marketplaces, and companies that want to integrate German electronic invoicing into their systems through a single API integration, automating the entire invoice sending, receiving, and monitoring process.

WHO IS THE GERMANY E-INVOICING API DESIGNED FOR?

The Germany E-Invoicing API does not require any activation or setup fees. It is available both on a pay-per-use basis, at €0.090 per request, and through subscription plans, with prices starting from €0.017 per request, depending on the selected plan and usage volume. Invoice retrieval and all other free endpoints do not incur any additional costs.

WHAT ARE THE SERVICE COSTS?