Leistungsnachweis an die Rechnung hängen
Ihr Kunde verlangt den Stundennachweis zur Rechnung — in derselben Datei, nicht als zweite Mail.
Vorgehen
- 1
Träger-PDF bereitlegen: die ZUGFeRD- oder Factur-X-Datei, die ein generate- oder convert-Aufruf zurückgegeben hat. Nur ein PDF/A-3-Träger behält seine Konformität.
- 2
Den Nachweis base64-kodieren und als contentBase64 in attachments[] legen, zusammen mit filename, mimeType, description und relationship: Supplement (auf dieser Route ohnehin die Vorgabe).
- 3
Der Schlüssel braucht die Berechtigung pdf:invoice:attach. Sie hängt am einzelnen API-Key und wird je Schlüssel freigeschaltet; fehlt sie, antwortet der Dienst mit 403 und „Missing entitlement: pdf:invoice:attach“ — so gemessen am 2026-09-15. Wenn dein Schlüssel sie nicht hat, frag uns danach; die Tarife stehen auf der Preisseite.
- 4
Antwort ist das fertige PDF in data (Base64), dazu pdfA3Conformant und attachmentCount. Dekodieren, speichern, versenden.
Der Aufruf
POST /api/v1/invoice/attachments
1curl -X POST https://service.invoice-api.xhub.io/api/v1/invoice/attachments \2 -H "Authorization: Bearer $INVOICE_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "pdf": "JVBERi0xLjcKJYGBgYEKCjUgMCBvYmoKPDwKL0xlbmd0aCAxODk0Ci9G…",6 "attachments": [7 {8 "filename": "leistungsnachweis.pdf",9 "mimeType": "application/pdf",10 "contentBase64": "JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMg…",11 "description": "Leistungsnachweis März 2026",12 "relationship": "Supplement"13 }14 ]15}'Lange Base64-Werte sind hier gekürzt (…). Setze dort deine eigenen Dateien ein — das Träger-PDF und den Anhang.
Wo es schiefgeht
Zwei Stellen. Der Träger muss PDF/A-3 sein — sonst kommt pdfA3Conformant: false zurück: die Anhänge stecken drin, aber die Datei ist keine konforme Archivdatei mehr. Und Anhängen macht aus einem beliebigen PDF keine ZUGFeRD-Rechnung: es entstehen keine fx-XMP-Metadaten, und der Anhang wird nicht als Rechnungs-XML gekennzeichnet. Wer eine E-Rechnung braucht, erzeugt oder wandelt sie.