E-Rechnungen an Peppol übermitteln

Prev Next

Diese Anleitung beschreibt, wie Sie E-Rechnungen über den Lobster Peppol Access Point validieren und an das Peppol-Netzwerk übermitteln.

Voraussetzungen

  • Gültige Zugangsdaten (Benutzername und Passwort) für den Lobster Peppol Access Point Service, erhältlich beim Lobster Customer Success Team.

  • Eine E-Rechnung im Format Peppol BIS Billing 3.0 (UBL Invoice oder UBL Credit Note) oder in einem unterstützten nationalen CIUS-Format (zum Beispiel NLCIUS).

  • Zugang zur Produktiv- oder Staging-Umgebung:          

    • Produktion: https://connect-data-network.lobster-cloud.com

    • Staging: https://connect-test-data-network.lobster-cloud.com

Endpunkt

Eigenschaft

Wert

Methode

POST

Pfad

/dw/request/v1/einvoice

Content-Type

application/xml

Authentifizierung

HTTP Basic Authentication

Abfrageparameter

Parameter

Typ

Pflicht

Standard

Beschreibung

validateonly

boolean

Nein

false

true — Die Rechnung wird validiert, aber nicht an das Peppol-Netzwerk übermittelt.
false — Die Rechnung wird validiert und, sofern gültig, an das Peppol-Netzwerk weitergeleitet.

Request body

Der Request body enthält das UBL-XML-Dokument. Es muss dem Schema Peppol BIS Billing 3.0 oder einem unterstützten nationalen CIUS-Profil entsprechen.

Beispieldatei herunterladen (Peppol BIS 3.0)

Vollständige Schemadokumentation: Peppol BIS Billing UBL-Schema

Verarbeitungsablauf

  1. Die Rechnung wird gegen das zutreffende UBL-Schema validiert (Peppol BIS Billing oder nationales CIUS-Profil).

  2. Schlägt die Validierung fehl, wird ein detaillierter Validierungsbericht zurückgegeben (422).

  3. Ist die Validierung erfolgreich und validateonly=false, wird die Rechnung an das Peppol-Netzwerk weitergeleitet.

  4. Ist die Validierung erfolgreich und validateonly=true, wird ausschließlich das Validierungsergebnis zurückgegeben.

Beispiel-Request

Vollständige Verarbeitung (Validierung und Versand)

curl -X POST \
  "https://connect-data-network.lobster-cloud.com/dw/request/v1/einvoice" \
  -u "benutzername:passwort" \
  -H "Content-Type: application/xml" \
  -d @rechnung.xml

Nur Validierung (kein Versand)

curl -X POST \
  "https://connect-data-network.lobster-cloud.com/dw/request/v1/einvoice?validateonly=true" \
  -u "benutzername:passwort" \
  -H "Content-Type: application/xml" \
  -d @rechnung.xml

Antwortcodes

HTTP-Code

Status

Beschreibung

200

ok

Validierung erfolgreich. Die Rechnung ist gültig. Bei validateonly=false wurde die Rechnung an das Peppol-Netzwerk übermittelt.

400

error

Ungültiges XML-Format oder nicht unterstützter Content-Type.

401

Authentifizierung fehlgeschlagen. Prüfen Sie Benutzername und Passwort.

404

Endpunkt nicht gefunden. Prüfen Sie den Pfad.

422

nok

Validierung fehlgeschlagen. Die Rechnung entspricht nicht dem Peppol-BIS-Billing-Schema. Ein detaillierter Validierungsbericht ist in der Antwort enthalten.

500

error

Interner Serverfehler.

Antwortstruktur: erfolgreiche Validierung

Wird bei gültiger Rechnung zurückgegeben (200).

Feld

Typ

Beschreibung

status

string

Immer ok

message

string

Lesbare Erfolgsmeldung

transactionId

string (UUID)

Eindeutige Transaktionskennung zur Nachverfolgung

validationResponse

object

Validierungsdetails (siehe Validierungsantwort)

Beispiel

{
  "status": "ok",
  "message": "Invoice is valid.",
  "transactionId": "30ac9744-0676-4376-baf3-2b1d5efffa0e",
  "validationResponse": {
    "validatorinfo": "Prüftool-Konfiguration Peppol BIS - Peppol Billing BIS 3 - UBL Invoice",
    "description": "Validierung von UBL Invoice version 2.1",
    "schema": "UBL",
    "validationTime": "2025-07-23T10:40:11+02:00",
    "validationSummary": {
      "schemaValidationErrors": false,
      "validationErrors": false,
      "validationWarnings": false,
      "isValid": true
    },
    "report": [
      {
        "id": "-",
        "text": "No errors found."
      }
    ]
  }
}

Antwortstruktur: Validierungsfehler

Wird bei ungültiger Rechnung zurückgegeben (422). Enthält einen detaillierten Bericht mit allen Regelverstößen.

Feld

Typ

Beschreibung

status

string

Immer nok

message

string

Lesbare Fehlermeldung

transactionId

string (UUID)

Eindeutige Transaktionskennung zur Nachverfolgung

validationResponse

object

Validierungsdetails mit Fehlerbericht (siehe Validierungsantwort)

Beispiel

{
  "status": "nok",
  "message": "Invoice is invalid.",
  "transactionId": "e0232fd4-8012-432b-b981-175854149920",
  "validationResponse": {
    "validatorinfo": "Prüftool-Konfiguration Peppol BIS - Peppol Billing BIS 3 - UBL Invoice",
    "description": "Validierung von UBL Invoice version 2.1",
    "schema": "UBL",
    "validationTime": "2025-07-23T10:38:13+02:00",
    "validationSummary": {
      "schemaValidationErrors": false,
      "validationErrors": true,
      "validationWarnings": false,
      "isValid": false
    },
    "report": [
      {
        "id": "BR-CO-14",
        "type": "validationError",
        "flag": "fatal",
        "location": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:TaxTotal[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]",
        "text": "[BR-CO-14]-Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).",
        "ruleset": "EN16931  model bound to UBL",
        "rule": "(xs:decimal(child::cbc:TaxAmount)= round((sum(cac:TaxSubtotal/xs:decimal(cbc:TaxAmount)) * 10 * 10)) div 100) or not(cac:TaxSubtotal)"
      },
      {
        "id": "BR-CO-17",
        "type": "validationError",
        "flag": "fatal",
        "location": "/*:Invoice[...][1]/*:TaxTotal[...][1]/*:TaxSubtotal[...][1]",
        "text": "[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.",
        "ruleset": "EN16931  model bound to UBL",
        "rule": "..."
      },
      {
        "id": "BR-S-09",
        "type": "validationError",
        "flag": "fatal",
        "location": "/*:Invoice[...][1]/*:TaxTotal[...][1]/*:TaxSubtotal[...][1]/*:TaxCategory[...][1]",
        "text": "[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is \"Standard rated\" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).",
        "ruleset": "EN16931  model bound to UBL",
        "rule": "..."
      }
    ]
  }
}

Antwortstruktur: allgemeiner Fehler

Wird bei technischen Fehlern zurückgegeben (400, 500).

Feld

Typ

Beschreibung

status

string

Immer error

message

string

Lesbare Fehlerbeschreibung

transactionId

string (UUID)

Eindeutige Transaktionskennung für den Support

Beispiel

{
  "status": "error",
  "message": "Malformatted payload.",
  "transactionId": "b9f8543c-4861-4939-a878-13a341556f92"
}

Validierungsantwort im Detail

ValidationResponse

Feld

Typ

Beschreibung

validatorinfo

string

Bezeichnung der verwendeten Validierungskonfiguration

description

string

Beschreibung des Validierungsvorgangs

schema

string

Verwendeter Schematyp (zum Beispiel UBL)

validationTime

string (date-time)

Zeitstempel der Validierung

validationSummary

object

Zusammenfassung des Validierungsergebnisses

report

array of object

Liste der einzelnen Validierungsergebnisse (Fehler und Warnungen)

ValidationSummary

Feld

Typ

Beschreibung

schemaValidationErrors

boolean

Schema-Validierungsfehler vorhanden

validationErrors

boolean

Geschäftsregel-Validierungsfehler vorhanden

validationWarnings

boolean

Validierungswarnungen vorhanden

isValid

boolean

Gesamtergebnis der Validierung

ValidationReportItem

Feld

Typ

Pflicht

Beschreibung

id

string

Ja

Regelkennung (zum Beispiel BR-CO-14) oder - bei Erfolg

type

string

Nein

Art des Validierungsproblems: validationError⁣odervalidationWarning

flag

string

Nein

Schweregrad: fatal⁣oderwarning

location

string

Nein

XPath-Position des betroffenen Elements im UBL-Dokument

text

string

Ja

Lesbare Beschreibung der verletzten Regel

ruleset

string

Nein

Regelwerk, dem die Validierung entstammt (zum Beispiel EN16931 model bound to UBL)

rule

string

Nein

Technischer Regelausdruck (XPath/Schematron)


Zustellbenachrichtigungen nach dem Versand

Nach erfolgreicher Übermittlung an das Peppol-Netzwerk wird eine Message Delivery Notification (MDN) erzeugt. Ist der Empfänger nicht über Peppol erreichbar, erfolgt eine automatische Fallback-Zustellung per E-Mail.

Diese Benachrichtigungen können über einen HTTP-Callback-Endpunkt oder per E-Mail empfangen werden. Die Callback-Konfiguration wird vom Lobster Onboarding-Team eingerichtet.

Callback-Antwortstruktur (AcknowledgementResponse)

Feld

Typ

Pflicht

Beschreibung

transactionId

string (UUID)

Ja

Eindeutige Transaktionskennung

status

string

Ja

Zustellstatus: delivered, fallback_email_sent oder error

peppolRecipient

string

Nein

Peppol-Teilnehmerkennung (Participant ID) des Empfängers

fallbackEmail

string (email)

Nein

E-Mail-Adresse für die Fallback-Zustellung (sofern zutreffend)

message

string

Nein

Lesbare Beschreibung des Zustellergebnisses

timestamp

string (date-time)

Ja

Zeitstempel der Statusbenachrichtigung

Beispiel: erfolgreiche Peppol-Zustellung

{
  "transactionId": "123e4567-e89b-12d3-a456-426614174000",
  "status": "delivered",
  "peppolRecipient": "0192:123456789",
  "fallbackEmail": null,
  "message": "Invoice successfully delivered via Peppol",
  "timestamp": "2025-08-11T14:32:00Z"
}

Beispiel: Fallback-Zustellung per E-Mail

{
  "transactionId": "123e4567-e89b-12d3-a456-426614174000",
  "status": "fallback_email_sent",
  "peppolRecipient": "0192:123456789",
  "fallbackEmail": "empfaenger@beispiel.de",
  "message": "Peppol delivery failed, invoice sent via fallback email",
  "timestamp": "2025-08-11T14:32:00Z"
}

Fehlerbehebung

Problem

Mögliche Ursache

Lösung

401⁣beimPOST

Ungültige oder fehlende Zugangsdaten

Benutzername und Passwort prüfen. Zugangsdaten beim Lobster Customer Success Team anfordern.

400 mit „Malformatted payload"

Ungültiges XML oder falscher Content-Type

Sicherstellen, dass Content-Type: application/xml⁣gesetzt ist und der Body wohlgeformtes XML enthält.

422 mit Validierungsfehlern

UBL-Dokument verstößt gegen Peppol-BIS- oder EN-16931-Regeln

Die Feld-IDs im report-Array (zum Beispiel BR-CO-14) identifizieren die verletzte Regel. Korrigieren Sie die betroffenen Elemente gemäß der Peppol-BIS-Billing-Dokumentation.

404

Falscher Endpunkt-Pfad

Pfad auf /dw/request/v1/einvoice prüfen.

500

Interner Serverfehler

Die transactionId aus der Antwort an das Lobster-Supportteam übermitteln.

Keine Zustellbenachrichtigung erhalten

Callback-Endpunkt nicht konfiguriert

Callback-Konfiguration mit dem Lobster Onboarding-Team abstimmen.


Weiterführende Informationen