einvoice_data_invalid
HTTP 422 · code: "einvoice_data_invalid" · type: https://docs.formfeed.dev/errors/einvoice-data-invalid
Das Rendering erzeugt eine E-Rechnung, und aus seinen Rechnungsdaten lässt sich keine gültige bauen. Die Antwort kommt von einer von zwei Stellen:
- Bevor etwas gerendert wird. Der
_invoice-Block indatafehlt, ein Feld fehlt, ein Code steht nicht in seiner Liste, oder eine Summe geht nicht auf.errorsnennt jeden Befund mitpath,messageund, wo eine gilt, derruleder EN 16931 oder der französischen Spezifikationen, die er verletzt;detailwiederholt den ersten. Es wird nichts gerendert, gezählt oder berechnet. Bei einem Batch nenntindexden ersten fehlerhaften Eintrag, und nichts wird eingereiht. - Nach dem Rendern. Der Block hat diese Prüfung bestanden, und der Validator hat die fertige Datei trotzdem abgelehnt. Das Problem trägt dann
einvoice, den Bericht des Validators, undrender_id. Das Rendering istfailedund behält den Bericht. Es wird keine Datei gespeichert, und es wird kein gewöhnliches PDF stattdessen ausgeliefert. Ein fehlgeschlagenes Rendering kostet nichts.
Beispiel
Vor dem Rendern abgelehnt:
{
"type": "https://docs.formfeed.dev/errors/einvoice-data-invalid",
"title": "E-invoice data invalid",
"status": 422,
"detail": "_invoice.totals.grand is 1142.41, but tax_basis plus tax_total is 1142.40 (BR-CO-15) (and 1 more)",
"code": "einvoice_data_invalid",
"errors": [
{
"path": "data._invoice.totals.grand",
"message": "_invoice.totals.grand is 1142.41, but tax_basis plus tax_total is 1142.40 (BR-CO-15)",
"rule": "BR-CO-15"
},
{
"path": "data._invoice.totals.due",
"message": "_invoice.totals.due is 1142.40, but grand less prepaid plus rounding is 1142.41 (BR-CO-16)",
"rule": "BR-CO-16"
}
],
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}
Nach dem Rendern vom Validator abgelehnt:
{
"type": "https://docs.formfeed.dev/errors/einvoice-data-invalid",
"title": "E-invoice data invalid",
"status": 422,
"detail": "The e-invoice breaks 1 rule of EN 16931",
"code": "einvoice_data_invalid",
"location": null,
"render_id": "rnd_7da09ab6cd9946b798c187c2a9350852",
"einvoice": {
"profile": "en16931",
"flavour": "factur-x",
"spec_version": "1.09",
"xml_url": null,
"validation": {
"valid": false,
"schematron": "Factur-X 1.09.2 (Mustang 2.26.0)",
"pdfa": null,
"messages": [
{
"part": "xml",
"severity": "error",
"rule": "…",
"message": "…",
"location": "/rsm:CrossIndustryInvoice/…"
}
]
},
"display": null
},
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}
Häufige Ursachen
- Die Daten haben keinen
_invoice-Block. Eine Vorlage, deren Einstellungen eine E-Rechnung festlegen, braucht ihn in jedem PDF-Rendering (pathistdata._invoice). - Eine Summe, die nicht auf den Cent aufgeht (
BR-CO-10bisBR-CO-16), oder eine Umsatzsteueraufschlüsselung, die nicht zu den Positionen passt. Formfeed berechnet und rundet nichts für Sie. - Ein Betrag mit mehr als zwei Nachkommastellen, etwa eine Positionssumme, die nie gerundet wurde.
- Ein Code, der nicht in seiner Liste steht: eine Einheit als
hoursstattHUR(BR-CL-23), ein Land, eine Währung. - Ein Feld fehlt, das die Norm verlangt: das Fälligkeitsdatum oder die Zahlungsbedingungen einer Rechnung mit Zahlbetrag (
BR-CO-25), die IBAN einer Überweisung (BR-61), eine Kennung des Verkäufers (BR-CO-26). - Eine Rechnung zwischen zwei französischen Unternehmen ohne die Felder, die Frankreich verlangt, oder im Profil
basic, das Frankreichs Reform nicht annimmt. - Das Profil
basicmit einemtotals.roundingungleich 0, das dieses Profil nicht übertragen kann.
So beheben Sie es
- Korrigieren Sie die Felder, die
errorsnennt. Pfade beginnen beidata._invoice, und Listeneinträge zählen ab 0:data._invoice.lines[0].unit_codeist die Einheit der ersten Position. Die Feldreferenz sagt, was jedes Feld aufnimmt. - Finden Sie die Befunde, bevor Sie die Anfrage senden: Der Abschnitt E-Rechnung der Seiteneinrichtung im Editor listet sie für den Datensatz auf dem Bildschirm, und
formfeed validateprüft jeden Datensatz einer Vorlage offline. Beide führen die Prüfung aus, die auch die API ausführt. - Trägt das Problem
einvoice, lesen Sieeinvoice.validation.messages: Jeder Befund hat seineruleund seinelocation, einen XPath in das XML. Das fehlgeschlagene Rendering behält denselben Bericht, inGET /v1/renders/{id}und im Render-Protokoll. Wenn die Daten aus Ihrer Sicht stimmen, senden Sie dierender_idan support@formfeed.dev. - Welche Umsatzsteuerkategorie und welcher Satz für einen Umsatz gelten, ist eine Frage für Ihre Steuerberatung. Formfeed prüft nur, ob der Block zu Ihren Angaben passt.
- Soll diese Anfrage aus einer Vorlage, die eine E-Rechnung festlegt, ein gewöhnliches PDF erzeugen, senden Sie
"post": { "einvoice": false }.
Wiederholen?
Nein. Dieselbe Anfrage liefert bei einer Wiederholung dieselbe Antwort; ändern Sie zuerst die Daten. Senden Sie die korrigierte Anfrage mit einem neuen Idempotency-Key oder ohne: Eine 4xx-Antwort wird 24 Stunden unter ihrem Schlüssel gespeichert, der alte Schlüssel liefert also wieder dieses Problem. Siehe Wiederholen.