Rechnungen an Chorus Pro senden
In Frankreich müssen alle Rechnungen an Kunden im öffentlichen Sektor elektronisch über Chorus Pro eingereicht werden, das offizielle B2G-E-Invoicing-Portal der Regierung (Erlass Nr. 2016-1478). Seit April 2020 gilt dies für jede zentrale, regionale und kommunale Verwaltung — unabhängig davon, ob Sie ein französisches Unternehmen oder ein internationaler Lieferant sind.
Dieser Leitfaden zeigt, wie Sie die B2Brouter API verwenden, um:
- Ihr Unternehmenskonto einzurichten (Staging & Produktion).
- Öffentliche Einrichtungen per SIRET im B2Brouter-Verzeichnis nachzuschlagen.
- Kunden- und Organisationseinheitskontakte zu erstellen.
- Ihre Rechnungen über Chorus Pro zu generieren, zu senden und zu verfolgen.
- Die eingereichte XML-Datei herunterzuladen und zu bestätigen.
Voraussetzungen
Section titled “Voraussetzungen”- Französisches Unternehmen mit gültiger USt-IdNr./SIRET-Nummer.
- Testumgebung (Staging)
- Registrieren Sie sich unter app-staging.b2brouter.net, um die API auszuprobieren.
- Öffnen Sie nach der Registrierung ein Support-Ticket im Staging, um Ihren API-Schlüssel und die Berechtigungen anzufordern.
- Produktionsintegration & eDocExchange-Abonnement
- Für den produktiven Betrieb registrieren Sie sich unter app.b2brouter.net.
- Abonnieren Sie ein eDocExchange-Produkt oder kontaktieren Sie unser Vertriebsteam unter https://www.b2brouter.net/global/contact/, um Pläne zu besprechen, Ihren Vertrag zu unterzeichnen und dedizierten Integrationssupport zu erhalten.
API-Zugangsdaten erhalten
Section titled “API-Zugangsdaten erhalten”- Melden Sie sich bei Ihrem B2Brouter-Konto an.
- Navigieren Sie zum Tab Developers.
- Wählen Sie API Keys.
- Klicken Sie auf das Zwischenablage-Symbol, um Ihr API-Token abzurufen.
Ihr Unternehmenskonto abrufen oder erstellen
Section titled “Ihr Unternehmenskonto abrufen oder erstellen”1. Ihre Unternehmens-ID abrufen
Section titled “1. Ihre Unternehmens-ID abrufen”curl --request GET \ --url 'https://api-staging.b2brouter.net/accounts?offset=0&limit=25' \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json'2. Ein Unternehmenskonto erstellen (falls erforderlich)
Section titled “2. Ein Unternehmenskonto erstellen (falls erforderlich)”curl --request POST \ --url https://api-staging.b2brouter.net/accounts \ --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 '{ "account": { "country": "fr", "rounding_method": "half_up", "tin_value": "FR46458880332", "tin_scheme": 9957, "name": "Exemplar SAS", "address": "10 Rue Imaginaire", "city": "Paris", "postalcode": "75001", "province": "Île-de-France", "email": "john.doe@example.com" } }'Empfängerinformationen überprüfen
Section titled “Empfängerinformationen überprüfen”Sie können prüfen, ob der Empfänger in unserem öffentlichen Verzeichnis vorhanden ist:
curl --request GET \ --url https://api-staging.b2brouter.net/directory/fr/0009/13001533200013 \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'Content-Type: application/json'Einen Kontakt erstellen
Section titled “Einen Kontakt erstellen”Beim Erstellen eines französischen Kunden:
- Verwenden Sie
cin_valuefür die SIRET-CODE-Nummer. - Verwenden Sie
cin_schemezur Identifikation der Schemata-Codeliste. SIRET-CODE ist 0009. transport_type_codesolltefr.chorussein.document_type_codesolltexml.ubl.invoice.chorussein.
curl --request POST \ --url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/contacts \ --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 '{ "contact": { "language": "en", "is_client": true, "is_provider": true, "terms": "custom", "public_sector": true, "name": "UNIVERSITE D AIX MARSEILLE", "address": "58 BD CHARLES LIVON", "city": "MARSEILLE 7", "postalcode": "13007", "country": "fr", "currency": "EUR", "transport_type_code": "fr.chorus", "document_type_code": "xml.ubl.invoice.chorus", "cin_value": "13001533200013", "cin_scheme": "0009" } }'Einen Organisationseinheits-Kontakt erstellen
Section titled “Einen Organisationseinheits-Kontakt erstellen”Um eine bestimmte Abteilung oder einen Dienst abzurechnen, erstellen Sie einen Unterkontakt unter der Haupteinheit mit parent_id und fügen Sie den Chorus-Pro-„Service-Code” (cin1_scheme / cin1_value) hinzu.
curl --request POST \ --url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/contacts \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'Content-Type: application/json' \ --data '{ "contact": { "parent_id": 1313228381, "name": "Factures marché FCM ROP cadre A2", "address": "58 BD CHARLES LIVON", "city": "MARSEILLE 7", "postalcode": "13007", "country": "fr", "cin1_scheme": "8017", "cin1_value": "ESR_MISSION_FACTURES_DEPLACEMENTS" } }'Eine Rechnung erstellen und senden
Section titled “Eine Rechnung erstellen und senden”Beim Ausstellen einer Rechnung an einen französischen Kunden müssen alle erforderlichen Felder angegeben werden, darunter:
number,dateunddue_date- Mindestens eine
invoice_lines_attributesmittaxes_attributes contact_idoder ein vollständigescontact-Objektponumberzur Angabe der Bestellreferenzbuyer_referencemit demcin1_value(Code Service) zur Identifikation der Zielabteilung
curl --request POST \ --url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/invoices \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'content-type: application/json' \ --data '{ "send_after_import": true, "invoice": { "type": "IssuedInvoice", "contact_id": 1313228399, "bank_account": { "type": "iban", "iban": "FR7630006000011234567890189" }, "terms": "custom", "invoice_lines_attributes": [ { "unit": 5, "quantity": 135, "price": 25, "description": "Cocktail Dinatoire", "taxes_attributes": [ { "name": "TVA", "category": "S", "percent": 10 } ], "article_code": "14", "position": 1 } ], "number": "00002", "date": "2025-06-18", "due_date": "2025-07-18", "currency": "EUR", "ponumber": "0123456", "buyer_reference": "ESR_MISSION_FACTURES_DEPLACEMENTS" } }'Rechnungsstatus prüfen
Section titled “Rechnungsstatus prüfen”Status einer einzelnen Rechnung prüfen
Section titled “Status einer einzelnen Rechnung prüfen”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'Status mehrerer Rechnungen prüfen
Section titled “Status mehrerer Rechnungen prüfen”curl --request GET \ --url 'https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/invoices?offset=0&limit=25&state_updated_at_from=2025-06-12' \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json'Echtzeit-Statusaktualisierungen mit Webhooks
Section titled “Echtzeit-Statusaktualisierungen mit Webhooks”Anstatt zu pollen, abonnieren Sie Push-Benachrichtigungen über Webhooks. Sobald sich der Status einer Rechnung ändert, sendet B2Brouter einen HTTP-POST an Ihren Endpunkt.
Rechnungsstatus-WebHooks - API-Referenz
Die originale Rechnungs-XML herunterladen
Section titled “Die originale Rechnungs-XML herunterladen”Nach dem Senden enthält die GET /invoices/{id}-Antwort ein Feld download_legal_url. Verwenden Sie es, um die genaue an Chorus Pro eingereichte XML-Datei abzurufen:
curl --request GET \ --url https://api-staging.b2brouter.net{download_legal_url} \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'Accept: application/xml'Rechnung als bestätigt markieren
Section titled “Rechnung als bestätigt markieren”curl --request POST \ --url https://api-staging.b2brouter.net/invoices/{INVOICE_ID}/ack \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'X-B2B-API-Version: {YOUR_API_VERSION}' \ --header 'accept: application/json'Weitere Hilfe: