Empfang, Integration und Verwaltung eingehender Rechnungen
Diese Anleitung erklärt, wie Sie:
- Rechnungen über verschiedene Kanäle empfangen (Peppol, E-Mail, B2Brouter, Uploads).
- Empfangene Rechnungen in Ihr System integrieren (JSON, PDF, Originaldatei).
- Den Lebenszyklus von Rechnungen verwalten (bestätigen, akzeptieren/ablehnen/bezahlen usw.).
Voraussetzungen
Section titled “Voraussetzungen”- Ein Unternehmen mit einer gültigen Taxcode Identifier (TIN) oder Company Identifier (CIN).
- Ein registriertes Konto in der Testumgebung von B2Brouter: Hier registrieren
- API-Berechtigungen (über ein Support-Ticket anfordern: Ticket eröffnen)
- Falls Unsicherheiten beim Registrierungsprozess bestehen, lesen Sie bitte den Benutzerleitfaden.
Falls Sie das Konto noch erstellen oder Empfangstransporte aktivieren müssen, folgen Sie diesen Anleitungen:
- Erste Schritte (Kontoeinrichtung): https://developer.b2brouter.net/docs/setting_up_guide#/
- Leitfaden zu Transporten: https://developer.b2brouter.net/docs/transports_guide/
Wichtige Konzepte (Verwechslung von IDs vermeiden)
Section titled “Wichtige Konzepte (Verwechslung von IDs vermeiden)”ACCOUNT_IDwird nur in Endpunkten vom Typ/accounts/{ACCOUNT_ID}/...verwendet.INVOICE_IDist die Rechnungskennung, die in Endpunkten vom Typ/invoices/{INVOICE_ID}...verwendet wird.- Bei einer eingehenden Rechnung ist
invoice.contactder Aussteller/Lieferant (nicht Ihr eigenes Konto).
1) Eingehende Rechnungen importieren
Section titled “1) Eingehende Rechnungen importieren”1.1 Eine eingehende Rechnungsdatei (XML) importieren (optional)
Section titled “1.1 Eine eingehende Rechnungsdatei (XML) importieren (optional)”Wenn Sie bereits über die empfangene Rechnungsdatei verfügen (z. B. für Tests, Migrationen oder Datenimporte), können Sie diese mit Import an invoice from a file importieren.
Verwenden Sie den Query-Parameter issued=false, um die Rechnung als ReceivedInvoice zu importieren.
Es ist auch möglich, eine eingehende Rechnung per JSON mit dem Aufruf Create an invoice zu erzeugen. Denken Sie daran, dabei "type": "ReceivedInvoice" anzugeben.
1.2 Rechnungen über Transporte empfangen
Section titled “1.2 Rechnungen über Transporte empfangen”Sobald Transporte für das Konto aktiviert sind, werden Rechnungen automatisch empfangen (zum Beispiel über Peppol oder E-Mail).
2) Eingehende Rechnungen auflisten
Section titled “2) Eingehende Rechnungen auflisten”Beispielanfrage:
curl --request GET \ --url 'https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/invoices?type=ReceivedInvoice' \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json'Beispielantwort (Auszug):
{ "invoices": [ { "id": 105337, "number": "2", "state": "new", "total": 107.1, "currency": "EUR" }, { "id": 105332, "number": "1", "state": "received", "total": 178.5, "currency": "EUR" } ], "total_count": 2, "offset": 0, "limit": 25}Empfangene Rechnungen können unterschiedliche Status haben: importierte Rechnungen erscheinen im Status "new" und Rechnungen, die über Transporte empfangen wurden, normalerweise im Status "received". Sie können auch den Status "invalid" haben, wenn Validierungsprobleme vorliegen.
Um alle verfügbaren Rechnungsstatus anzuzeigen, verwenden Sie den Endpunkt List of available invoice status.
3) Rechnungsdetails abrufen
Section titled “3) Rechnungsdetails abrufen”Um die Rechnung im JSON-Format abzurufen, verwenden Sie den Endpunkt Get an invoice. Fügen Sie einen Query Param hinzu, um die Positionsinformationen einzuschließen:
Beispielanfrage:
curl --request GET \ --url 'https://api-staging.b2brouter.net/invoices/{INVOICE_ID}?include=lines' \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json'4) Die ursprüngliche Rechnungsdatei herunterladen
Section titled “4) Die ursprüngliche Rechnungsdatei herunterladen”Um die ursprünglich empfangene rechtsgültige Rechnung herunterzuladen:
Beispielanfrage:
curl --request GET \ --url https://api-staging.b2brouter.net/invoices/{INVOICE_ID}/as/original \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}'Sie können auch document_type_code als pdf.invoice verwenden, um eine PDF-Ansicht zu generieren, oder einen anderen document_type_code aus Get document types, um die Rechnung in einem beliebigen elektronischen Rechnungsformat zu erhalten.
5) Die Rechnung bestätigen
Section titled “5) Die Rechnung bestätigen”Verwenden Sie den Endpunkt Mark an invoice as acknowledged, um zu verhindern, dass die Rechnung weiterhin in der Liste der empfangenen Rechnungen erscheint.
6) Rechnungsstatus ändern
Section titled “6) Rechnungsstatus ändern”Ändern Sie den Rechnungsstatus, um dem Absender mitzuteilen, dass Sie die Rechnung „akzeptiert“, „abgelehnt“ oder „bezahlt“ haben. Sie können die Rechnung auch als „annotated“ markieren, um sie intern nachzuverfolgen.
Verwenden Sie den Endpunkt Switch invoice state. Sie können den Body-Parameter reason hinzufügen, um den Grund der Ablehnung anzugeben. Wenn die Rechnung per E-Mail eingegangen ist, fügen Sie den Body-Parameter "commit": "with_mail" hinzu, um den Absender zu informieren.
Beispielanfrage:
curl --request POST \ --url https://api-staging.b2brouter.net/invoices/{INVOICE_ID}/mark_as \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json' \ --header 'content-type: application/json' \ --data '{ "state": "refused", "reason": "Missing PO number" }'Beispielantwort:
204 No ContentWeitere Informationen finden Sie in der API-Referenz.