Skip to content
Log in

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:

  1. Ihr Unternehmenskonto einzurichten (Staging & Produktion).
  2. Öffentliche Einrichtungen per SIRET im B2Brouter-Verzeichnis nachzuschlagen.
  3. Kunden- und Organisationseinheitskontakte zu erstellen.
  4. Ihre Rechnungen über Chorus Pro zu generieren, zu senden und zu verfolgen.
  5. Die eingereichte XML-Datei herunterzuladen und zu bestätigen.
  • 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.
  1. Melden Sie sich bei Ihrem B2Brouter-Konto an.
  2. Navigieren Sie zum Tab Developers.
  3. Wählen Sie API Keys.
  4. Klicken Sie auf das Zwischenablage-Symbol, um Ihr API-Token abzurufen.

Ihr Unternehmenskonto abrufen oder erstellen

Section titled “Ihr Unternehmenskonto abrufen oder erstellen”
Terminal window
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)”
Terminal window
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"
}
}'

Sie können prüfen, ob der Empfänger in unserem öffentlichen Verzeichnis vorhanden ist:

Terminal window
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'

Beim Erstellen eines französischen Kunden:

  • Verwenden Sie cin_value für die SIRET-CODE-Nummer.
  • Verwenden Sie cin_scheme zur Identifikation der Schemata-Codeliste. SIRET-CODE ist 0009.
  • transport_type_code sollte fr.chorus sein.
  • document_type_code sollte xml.ubl.invoice.chorus sein.
Terminal window
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.

Terminal window
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"
}
}'

Beim Ausstellen einer Rechnung an einen französischen Kunden müssen alle erforderlichen Felder angegeben werden, darunter:

  • number, date und due_date
  • Mindestens eine invoice_lines_attributes mit taxes_attributes
  • contact_id oder ein vollständiges contact-Objekt
  • ponumber zur Angabe der Bestellreferenz
  • buyer_reference mit dem cin1_value (Code Service) zur Identifikation der Zielabteilung
Terminal window
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"
}
}'
Terminal window
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'
Terminal window
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

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:

Terminal window
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'
Terminal window
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: