Read an incoming e-invoice
You receive XRechnungen or ZUGFeRD PDFs and want the data in your own system.
Steps
- 1
Send the file base64-encoded to the parse endpoint, together with its filename.
- 2
The format is detected; the response carries the structured data plus diagnostics.
- 3
Before booking, check that amounts and tax rates match your order.
The call
POST /api/v1/invoice/parse
bash
1curl -X POST https://service.invoice-api.xhub.io/api/v1/invoice/parse \2 -H "Authorization: Bearer $INVOICE_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHVibDpJbnZvaWNlIHhtbG5zOnVibD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6SW52b2ljZS0yIiB4bWxuczpjYWM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vbkFnZ3JlZ2F0ZUNvbXBvbmVudHMtMiIgeG1sbnM6Y2JjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25CYXNpY0NvbXBvbmVudHMtMiI+CiAgPGNiYzpDdXN0b21pemF0aW9uSUQ+dXJuOmNlbi5ldTplbjE2OTMxOjIwMTcjY29tcGxpYW50I3Vybjp4ZWlua2F1Zi5kZTprb3NpdDp4cmVjaG51bmdfMy4wPC9jYmM6Q3VzdG9taXphdGlvbklEPgogIDxjYmM6UHJvZmlsZUlEPnVybjpmZGM6cGVwcG9sLmV1OjIwMTc6cG9hY2M6YmlsbGluZzowMToxLjA8L2NiYzpQcm9maWxlSUQ+CiAgPGNiYzpJRD5SRS0yMDI1LTAwMTwvY2JjOklEPgogIDxjYmM6SXNzdWVEYXRlPjIwMjUtMDEtMTU8L2NiYzpJc3N1ZURhdGU+CiAgPGNiYzpEdWVEYXRlPjIwMjUtMDItMTU8L2NiYzpEdWVEYXRlPgogIDxjYmM6SW52b2ljZVR5cGVDb2RlPjM4MDwvY2JjOkludm9pY2VUeXBlQ29kZT4KICA8Y2JjOkRvY3VtZW50Q3VycmVuY3lDb2RlPkVVUjwvY2JjOkRvY3VtZW50Q3VycmVuY3lDb2RlPgogIDxjYmM6QnV5ZXJSZWZlcmVuY2U+QlVZRVItUkVGLTAwMTwvY2JjOkJ1eWVyUmVmZXJlbmNlPgogIDxjYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CiAgICA8Y2FjOlBhcnR5PgogICAgICA8Y2JjOkVuZHBvaW50SUQgc2NoZW1lSUQ9IkVNIj5pbmZvQG11c3Rlci5kZTwvY2JjOkVuZHBvaW50SUQ+CiAgICAgIDxjYWM6UGFydHlOYW1lPjxjYmM6TmFtZT5NdXN0ZXIgR21iSDwvY2JjOk5hbWU+PC9jYWM6UGFydHlOYW1lPgogICAgICA8Y2FjOlBvc3RhbEFkZHJlc3M+CiAgICAgICAgPGNiYzpTdHJlZXROYW1lPk11c3RlcnN0cmHDn2UgMTwvY2JjOlN0cmVldE5hbWU+CiAgICAgICAgPGNiYzpDaXR5TmFtZT5CZXJsaW48L2NiYzpDaXR5TmFtZT4KICAgICAgICA8Y2JjOlBvc3RhbFpvbmU+MTAxMTU8L2NiYzpQb3N0YWxab25lPgogICAgICAgIDxjYWM6Q291bnRyeT48Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5ERTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT48L2NhYzpDb3VudHJ5PgogICAgICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICAgICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgICAgIDxjYmM6Q29tcGFueUlEPkRFODExMTI4MTM1PC9jYmM6Q29tcGFueUlEPgogICAgICAgIDxjYWM6VGF4U2NoZW1lPjxjYmM6SUQ+VkFUPC9jYmM6SUQ+PC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PjxjYmM6UmVnaXN0cmF0aW9uTmFtZT5NdXN0ZXIgR21iSDwvY2JjOlJlZ2lzdHJhdGlvbk5hbWU+PC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDwvY2FjOlBhcnR5PgogIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogIDxjYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiAgICA8Y2FjOlBhcnR5PgogICAgICA8Y2JjOkVuZHBvaW50SUQgc2NoZW1lSUQ9IkVNIj5idWNoaGFsdHVuZ0BiZWlzcGllbC1hZy5kZTwvY2JjOkVuZHBvaW50SUQ+CiAgICAgIDxjYWM6UGFydHlOYW1lPjxjYmM6TmFtZT5CZWlzcGllbCBBRzwvY2JjOk5hbWU+PC9jYWM6UGFydHlOYW1lPgogICAgICA8Y2FjOlBvc3RhbEFkZHJlc3M+CiAgICAgICAgPGNiYzpTdHJlZXROYW1lPkJlaXNwaWVsd2VnIDQyPC9jYmM6U3RyZWV0TmFtZT4KICAgICAgICA8Y2JjOkNpdHlOYW1lPk3DvG5jaGVuPC9jYmM6Q2l0eU5hbWU+CiAgICAgICAgPGNiYzpQb3N0YWxab25lPjgwMzMxPC9jYmM6UG9zdGFsWm9uZT4KICAgICAgICA8Y2FjOkNvdW50cnk+PGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+REU8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+PC9jYWM6Q291bnRyeT4KICAgICAgPC9jYWM6UG9zdGFsQWRkcmVzcz4KICAgICAgPGNhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgICA8Y2JjOkNvbXBhbnlJRD5ERTEzNjY5NTk3NjwvY2JjOkNvbXBhbnlJRD4KICAgICAgICA8Y2FjOlRheFNjaGVtZT48Y2JjOklEPlZBVDwvY2JjOklEPjwvY2FjOlRheFNjaGVtZT4KICAgICAgPC9jYWM6UGFydHlUYXhTY2hlbWU+CiAgICAgIDxjYWM6UGFydHlMZWdhbEVudGl0eT48Y2JjOlJlZ2lzdHJhdGlvbk5hbWU+QmVpc3BpZWwgQUc8L2NiYzpSZWdpc3RyYXRpb25OYW1lPjwvY2FjOlBhcnR5TGVnYWxFbnRpdHk+CiAgICA8L2NhYzpQYXJ0eT4KICA8L2NhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOlBheW1lbnRNZWFucz4KICAgIDxjYmM6UGF5bWVudE1lYW5zQ29kZT41ODwvY2JjOlBheW1lbnRNZWFuc0NvZGU+CiAgICA8Y2FjOlBheWVlRmluYW5jaWFsQWNjb3VudD4KICAgICAgPGNiYzpJRD5ERTg5MzcwNDAwNDQwNTMyMDEzMDAwPC9jYmM6SUQ+CiAgICAgIDxjYWM6RmluYW5jaWFsSW5zdGl0dXRpb25CcmFuY2g+PGNiYzpJRD5DT0JBREVGRlhYWDwvY2JjOklEPjwvY2FjOkZpbmFuY2lhbEluc3RpdHV0aW9uQnJhbmNoPgogICAgPC9jYWM6UGF5ZWVGaW5hbmNpYWxBY2NvdW50PgogIDwvY2FjOlBheW1lbnRNZWFucz4KICA8Y2FjOlRheFRvdGFsPgogICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xOTAuMDA8L2NiYzpUYXhBbW91bnQ+CiAgICA8Y2FjOlRheFN1YnRvdGFsPgogICAgICA8Y2JjOlRheGFibGVBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMDAwLjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xOTAuMDA8L2NiYzpUYXhBbW91bnQ+CiAgICAgIDxjYWM6VGF4Q2F0ZWdvcnk+CiAgICAgICAgPGNiYzpJRD5TPC9jYmM6SUQ+CiAgICAgICAgPGNiYzpQZXJjZW50PjE5LjAwPC9jYmM6UGVyY2VudD4KICAgICAgICA8Y2FjOlRheFNjaGVtZT48Y2JjOklEPlZBVDwvY2JjOklEPjwvY2FjOlRheFNjaGVtZT4KICAgICAgPC9jYWM6VGF4Q2F0ZWdvcnk+CiAgICA8L2NhYzpUYXhTdWJ0b3RhbD4KICA8L2NhYzpUYXhUb3RhbD4KICA8Y2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KICAgIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJFVVIiPjEwMDAuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PgogICAgPGNiYzpUYXhFeGNsdXNpdmVBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMDAwLjAwPC9jYmM6VGF4RXhjbHVzaXZlQW1vdW50PgogICAgPGNiYzpUYXhJbmNsdXNpdmVBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMTkwLjAwPC9jYmM6VGF4SW5jbHVzaXZlQW1vdW50PgogICAgPGNiYzpQYXlhYmxlQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTE5MC4wMDwvY2JjOlBheWFibGVBbW91bnQ+CiAgPC9jYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogIDxjYWM6SW52b2ljZUxpbmU+CiAgICA8Y2JjOklEPjE8L2NiYzpJRD4KICAgIDxjYmM6SW52b2ljZWRRdWFudGl0eSB1bml0Q29kZT0iSFVSIj4xMDwvY2JjOkludm9pY2VkUXVhbnRpdHk+CiAgICA8Y2JjOkxpbmVFeHRlbnNpb25BbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMDAwLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICAgIDxjYWM6SXRlbT4KICAgICAgPGNiYzpEZXNjcmlwdGlvbj5CZXJhdHVuZ3NsZWlzdHVuZzwvY2JjOkRlc2NyaXB0aW9uPgogICAgICA8Y2JjOk5hbWU+QmVyYXR1bmdzbGVpc3R1bmc8L2NiYzpOYW1lPgogICAgICA8Y2FjOkNsYXNzaWZpZWRUYXhDYXRlZ29yeT4KICAgICAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgICAgICA8Y2JjOlBlcmNlbnQ+MTkuMDA8L2NiYzpQZXJjZW50PgogICAgICAgIDxjYWM6VGF4U2NoZW1lPjxjYmM6SUQ+VkFUPC9jYmM6SUQ+PC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgICA8L2NhYzpJdGVtPgogICAgPGNhYzpQcmljZT48Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTAwLjAwPC9jYmM6UHJpY2VBbW91bnQ+PC9jYWM6UHJpY2U+CiAgPC9jYWM6SW52b2ljZUxpbmU+CjwvdWJsOkludm9pY2U+",6 "filename": "eingang.xml"7}'Where this goes wrong
With ZUGFeRD the truth is in the embedded XML, not in the visible PDF. Reading the PDF with OCR risks taking over the wrong numbers.
Other recipes
- Invoice to a public authority (XRechnung with Leitweg-ID)
- Generate and send a ZUGFeRD PDF
- Validate an existing invoice before it goes out
- Model credit notes and cancellations correctly
- Convert an XRechnung into ZUGFeRD
- Attach a proof of performance to the invoice
- Error handling and retry strategy in production