Docs

3 API3.3

3.3

XML übermitteln: POST /invoices/xml

UBL-, CII- oder FA(3)-XML.

  • In der Sandbox

In einfachen Worten

Dieser Aufruf übermittelt eine Rechnung, die schon als fertige XML-Datei vorliegt. Sie erhält eine Sicherheitsprüfung und die eigenen Validatoren des Übermittlungswegs und geht in die Warteschlange, wenn sie besteht.

POST /invoices/xml nimmt eine fertige UBL-, CII- oder FA(3)-Datei an. Es findet kein Mapping statt. Der Service prüft die Datei auf Sicherheit und Typ, lässt die offiziellen Validatoren des Übermittlungswegs laufen, reiht sie dann ein und sendet sie unverändert. Bei FA(3) sind die Prüfungen das Schema plus die Datei- und Datumsregeln von KSeF.

Hinweis

Ein 202 bedeutet, dass die Datei die Sicherheitsprüfung bestanden hat und eingereiht ist. Um eine Datei vor dem Senden zu prüfen, senden Sie die Rechnung als JSON an POST /validate.

Die Anfrage

TeilBedeutung
Query-Parameter routePflicht. Einer der fünf Übermittlungswege.
Query-Parameter invoice_refPflicht. Die eigene Beleg-ID des ERP, bis zu 100 Zeichen.
Query-Parameter clientOptional. Ein Kundenschlüssel darf ihn weglassen oder seinen eigenen Kunden nennen.
Header Idempotency-KeyPflicht, 8 bis 100 Zeichen.
Header Content-Typeapplication/xml oder text/xml. application/pdf wird auf dieselbe Weise gespeichert und eingereiht.

Welche Datei jeder Übermittlungsweg annimmt:

ÜbermittlungswegNimmt an
DE-XRECHNUNGUBL, CII
FR-PAUBL, CII
PEPPOLUBL
RO-EFACTURAUBL
PL-KSEFFA(3)

Eine angenommene Datei

Das Beispiel ist fa3-pl-ksef.xml, eine polnische FA(3)-Datei mit erfundenen Beteiligten. Der Zustand ist queued.

curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/xml?route=PL-KSEF&invoice_ref=INV-2026-0042" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/xml" \
  -H "Idempotency-Key: order-2026-0042" \
  --data-binary @fa3-pl-ksef.xml
Antwort202 Accepted
{
  "links": {
    "self": "/invoices/inv_d249e33382ce2911876b7295",
    "events": "/invoices/inv_d249e33382ce2911876b7295/events"
  },
  "id": "inv_d249e33382ce2911876b7295",
  "state": "queued"
}
Aufgezeichnet am 7. Okt. 2026.

Eine Datei, die zweimal gesendet wurde

Dieselbe Datei, die für denselben Kunden und Übermittlungsweg erneut gesendet wird, ist die Rechnung, die bereits vorliegt. Die Antwort enthält duplicate_of, die ID der ersten Rechnung, und nichts Neues wird gesendet. Eine Übermittlung, die mit rejected, validation_failed oder cancelled endete, zählt nicht, die Datei kann also erneut gesendet werden.

Abgewiesene Dateien

XML, das wohlgeformt, aber keine Rechnung ist, erhält 422 mit EI-XML-TYPE.

curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/xml?route=PEPPOL&invoice_ref=INV-2026-0051" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/xml" \
  -H "Idempotency-Key: order-2026-0051" \
  --data-binary @not-an-invoice.xml
Antwort422 Unprocessable Content
{
  "type": "https://eurinvoice.com/problems/validation-failed",
  "title": "The invoice did not pass the checks",
  "errors": [
    {
      "code": "EI-XML-TYPE",
      "fix_hint": "Send the invoice itself, in the format agreed for the route.",
      "who_fixes": "erp",
      "source": "XML-safety",
      "message": "The file is not an invoice in a format this route accepts. Please send the invoice in the agreed format."
    }
  ],
  "status": 422
}
Aufgezeichnet am 7. Okt. 2026. Die Datei ist [not-an-invoice.xml](/samples/not-an-invoice.xml).

Eine Datei mit einem DOCTYPE erhält 422 mit EI-XML-DTD, bevor irgendein Validator sie liest. Eine Datei, die nicht wohlgeformt ist, erhält EI-XML-SYNTAX.

curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/xml?route=PEPPOL&invoice_ref=INV-2026-0052" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/xml" \
  -H "Idempotency-Key: order-2026-0052" \
  --data-binary @with-doctype.xml
Antwort422 Unprocessable Content
{
  "type": "https://eurinvoice.com/problems/validation-failed",
  "title": "The invoice did not pass the checks",
  "errors": [
    {
      "code": "EI-XML-DTD",
      "fix_hint": "Export the invoice without the DOCTYPE line. If the ERP adds one on purpose, raise it with the ERP vendor: no e-invoicing format uses it.",
      "who_fixes": "erp",
      "source": "XML-safety",
      "message": "The invoice file contains a DOCTYPE declaration, which e-invoices never use, so we refused it for security before reading it. Export it again without the DOCTYPE line."
    }
  ],
  "status": 422
}
Aufgezeichnet am 7. Okt. 2026. Die Datei ist [with-doctype.xml](/samples/with-doctype.xml).

Ein Inhaltstyp, der weder XML noch PDF ist, erhält 415.

curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/xml?route=PEPPOL&invoice_ref=INV-2026-0053" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: text/plain" \
  -H "Idempotency-Key: order-2026-0053" \
  --data-binary @hello.txt
Antwort415 Unsupported Media Type
{
  "type": "https://eurinvoice.com/problems/unsupported-media",
  "title": "Not UBL, CII or FA(3)",
  "status": 415
}
Aufgezeichnet am 7. Okt. 2026.

Ein fehlender oder zu kurzer Idempotency-Key erhält 400.

curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/xml?route=PEPPOL&invoice_ref=INV-2026-0054" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/xml" \
  --data-binary @ubl-peppol.xml
Antwort400 Bad Request
{
  "detail": "Idempotency-Key must be between 8 and 100 characters.",
  "type": "https://eurinvoice.com/problems/bad-request",
  "title": "The request could not be read",
  "status": 400
}
Aufgezeichnet am 7. Okt. 2026.

Antworten

StatusBedeutung
202Angenommen und eingereiht. Location enthält die URL der Rechnung.
400Ein Query-Parameter oder der Idempotency-Key fehlt oder ist falsch.
401Kein Schlüssel oder ein unbekannter Schlüssel.
403Dem Schlüssel fehlt der Scope submit, oder er nennt einen anderen Kunden (forbidden).
409Der Schlüssel wurde mit einem anderen Body verwendet (idempotency-conflict), oder seine erste Anfrage läuft noch (request-in-progress).
413Der Body ist größer als 5 MB (payload-too-large).
415Der Inhaltstyp ist weder XML noch PDF (unsupported-media).
422Eine abgewiesene Datei: EI-XML-DTD, EI-XML-SYNTAX oder EI-XML-TYPE.
429Zu viele Anfragen für den Schlüssel. Warten Sie Retry-After Sekunden.
503Eine andere Anfrage für dasselbe Dokument wird noch gespeichert (busy). Versuchen Sie es nach Retry-After Sekunden erneut.

Auf dieser Seite