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.comStaging:
https://connect-test-data-network.lobster-cloud.com
Endpunkt
Eigenschaft | Wert |
|---|---|
Methode |
|
Pfad |
|
Content-Type |
|
Authentifizierung | HTTP Basic Authentication |
Abfrageparameter
Parameter | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| boolean | Nein |
|
|
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
Die Rechnung wird gegen das zutreffende UBL-Schema validiert (Peppol BIS Billing oder nationales CIUS-Profil).
Schlägt die Validierung fehl, wird ein detaillierter Validierungsbericht zurückgegeben (
422).Ist die Validierung erfolgreich und
validateonly=false, wird die Rechnung an das Peppol-Netzwerk weitergeleitet.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.xmlNur 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.xmlAntwortcodes
HTTP-Code | Status | Beschreibung |
|---|---|---|
|
| Validierung erfolgreich. Die Rechnung ist gültig. Bei |
|
| Ungültiges XML-Format oder nicht unterstützter Content-Type. |
| — | Authentifizierung fehlgeschlagen. Prüfen Sie Benutzername und Passwort. |
| — | Endpunkt nicht gefunden. Prüfen Sie den Pfad. |
|
| Validierung fehlgeschlagen. Die Rechnung entspricht nicht dem Peppol-BIS-Billing-Schema. Ein detaillierter Validierungsbericht ist in der Antwort enthalten. |
|
| Interner Serverfehler. |
Antwortstruktur: erfolgreiche Validierung
Wird bei gültiger Rechnung zurückgegeben (200).
Feld | Typ | Beschreibung |
|---|---|---|
| string | Immer |
| string | Lesbare Erfolgsmeldung |
| string (UUID) | Eindeutige Transaktionskennung zur Nachverfolgung |
| 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 |
|---|---|---|
| string | Immer |
| string | Lesbare Fehlermeldung |
| string (UUID) | Eindeutige Transaktionskennung zur Nachverfolgung |
| 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 |
|---|---|---|
| string | Immer |
| string | Lesbare Fehlerbeschreibung |
| 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 |
|---|---|---|
| string | Bezeichnung der verwendeten Validierungskonfiguration |
| string | Beschreibung des Validierungsvorgangs |
| string | Verwendeter Schematyp (zum Beispiel |
| string (date-time) | Zeitstempel der Validierung |
| object | Zusammenfassung des Validierungsergebnisses |
| array of object | Liste der einzelnen Validierungsergebnisse (Fehler und Warnungen) |
ValidationSummary
Feld | Typ | Beschreibung |
|---|---|---|
| boolean | Schema-Validierungsfehler vorhanden |
| boolean | Geschäftsregel-Validierungsfehler vorhanden |
| boolean | Validierungswarnungen vorhanden |
| boolean | Gesamtergebnis der Validierung |
ValidationReportItem
Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | Ja | Regelkennung (zum Beispiel |
| string | Nein | Art des Validierungsproblems: |
| string | Nein | Schweregrad: |
| string | Nein | XPath-Position des betroffenen Elements im UBL-Dokument |
| string | Ja | Lesbare Beschreibung der verletzten Regel |
| string | Nein | Regelwerk, dem die Validierung entstammt (zum Beispiel |
| 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 |
|---|---|---|---|
| string (UUID) | Ja | Eindeutige Transaktionskennung |
| string | Ja | Zustellstatus: |
| string | Nein | Peppol-Teilnehmerkennung (Participant ID) des Empfängers |
| string (email) | Nein | E-Mail-Adresse für die Fallback-Zustellung (sofern zutreffend) |
| string | Nein | Lesbare Beschreibung des Zustellergebnisses |
| 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 |
|---|---|---|
| Ungültige oder fehlende Zugangsdaten | Benutzername und Passwort prüfen. Zugangsdaten beim Lobster Customer Success Team anfordern. |
| Ungültiges XML oder falscher Content-Type | Sicherstellen, dass |
| UBL-Dokument verstößt gegen Peppol-BIS- oder EN-16931-Regeln | Die Feld-IDs im |
| Falscher Endpunkt-Pfad | Pfad auf |
| Interner Serverfehler | Die |
Keine Zustellbenachrichtigung erhalten | Callback-Endpunkt nicht konfiguriert | Callback-Konfiguration mit dem Lobster Onboarding-Team abstimmen. |