Skip to content
Log in

DGFiP e-Rechnungsstellung und e-Reporting

Ab September 2026 müssen alle französischen Unternehmen ihre Rechnungen und MwSt.-Daten über eine zertifizierte Plattform übermitteln. B2Brouter vereinfacht dies: Sie senden Ihre Rechnungsdaten per REST-API-Aufruf, und B2Brouter übernimmt die PPF-Registrierung, die Dokumentenerstellung (UBL/CII/Factur-X), die Weiterleitung an Ihre Kunden und die Steuerberichterstattung an die DGFiP – alles über eine einzige Integration.

B2Brouter ist eine zertifizierte Plateforme Agréée (PA) für die französische DGFiP-E-Rechnungsreform. Verbinden Sie sich über die REST-API, und B2Brouter übernimmt den gesamten Compliance-Stack in Ihrem Namen:

Was B2Brouter für Sie erledigtDetails
PPF-RegistrierungVeröffentlicht Ihre SIREN/SIRET bei Aktivierung automatisch im Annuaire
Flux 1 — B2B-E-RechnungsstellungErstellt UBL/CII/Factur-X, übermittelt an das PPF, leitet an die Plattform des Käufers weiter
Flux 6 — RechnungslebenszyklusVerwaltet CDAR-Statusmeldungen (Déposée, Reçue, Approuvée, Refusée, Encaissée)
Flux 10 — e-ReportingAggregiert B2C- und grenzüberschreitende B2B-Transaktionen (intra-EU und extra-EU) in tägliche Ledger, die an das PPF gesendet werden
Peppol 0225 EmpfangEmpfängt Rechnungen von jeder französischen oder Peppol-verbundenen Plattform
DokumentenerstellungSie senden Rechnungsdaten als JSON – B2Brouter erstellt das konforme UBL/CII/Factur-X-Dokument und übermittelt es an das PPF. Keine XML-Generierung auf Ihrer Seite erforderlich
EingabeformateJSON REST API, Factur-X PDF/A-3 (mit eingebettetem CII XML), UBL 2.1 XML, CII XML
Rechtliche ArchivierungAlle übermittelten Dokumente (Rechnungen, Steuerberichte, CDAR-Nachrichten) werden von B2Brouter für die gesetzlich vorgeschriebene Aufbewahrungsfrist von 10 Jahren gespeichert. Kein zusätzlicher Speicheraufwand auf Ihrer Seite

Für die Integration sind 4 Schritte erforderlich: Konto anlegenDGFiP aktivierenKontakt anlegenerste Rechnung senden.


Regulatorischer Kontext: Die französische E-Rechnungsreform verpflichtet alle französischen Unternehmen, eine zertifizierte Plateforme Agréée (PA) oder das staatliche PPF (Portail Public de Facturation) zu nutzen, um Rechnungen zu übermitteln und MwSt.-Daten an die DGFiP zu melden – ab September 2026. Als zertifizierte PA übernimmt B2Brouter die PPF-Verbindung vollständig in Ihrem Namen – kein SFTP, keine elektronischen Zertifikate, keine direkte PPF-Integration erforderlich.

Es gibt zwei Hauptanwendungsfälle für die Integration mit B2Brouter für die französische E-Rechnungsstellung:

eDocExchange — Für Unternehmen oder Unternehmensgruppen, die ihre Verwaltungssoftware (ERP, Buchhaltungsplattform) direkt mit B2Brouter integrieren. Der Onboarding-Prozess (Kontoerstellung, Konfiguration der Steuerberichtseinstellungen) wird in der Regel einmalig pro Unternehmen über die Web-Oberfläche durchgeführt. Der tägliche Betrieb (Rechnungen ausstellen, Lebenszyklus verfolgen) erfolgt über die API. Um weitere Unternehmenskonten zu Ihrer Integrationsgruppe hinzuzufügen, folgen Sie demselben Onboarding-Assistenten über dasselbe B2Brouter-Benutzerkonto – kein separater API-Aufruf erforderlich.

eDocSync — Für Softwareanbieter und ERP-Hersteller, die ihren eigenen Kunden DGFiP-Compliance innerhalb ihres Produkts anbieten möchten. Dies ist das White-Label / Embedded / Marque Blanche-Modell von B2Brouter: B2Brouter arbeitet vollständig im Hintergrund, Endkunden interagieren ausschließlich mit der Oberfläche des Anbieters und sind sich B2Brouter nicht bewusst. Der Softwareanbieter ist für die Kontobereitstellung, die Rechnungseinreichung und die Lebenszyklus-Verfolgung über die B2Brouter API verantwortlich. Endkunden benötigen keinen B2Brouter-Login oder kein Abonnement.

Für eDocSync bestimmt das Volumen der Kontobereitstellung den richtigen Plan:

  • Wenige Unternehmen (Reseller-Modell): Fügen Sie jedes Kundenunternehmen als Konto in Ihrer B2Brouter-Integrationsgruppe über die Web-Oberfläche hinzu, indem Sie dem Standard-Onboarding-Assistenten folgen. Funktioniert gut für Dutzende von Unternehmen und teilt einen einzigen API-Schlüssel.
  • 100+ Unternehmen: Kontaktieren Sie unser Vertriebsteam oder öffnen Sie ein Support-Ticket, um einen dedizierten eDocSync-Plan mit Massenbereitstellung zu besprechen (volumenbasierte Preisgestaltung für Editoren).

In beiden Fällen funktionieren alle Frankreich-spezifischen Compliance-Funktionen (Annuaire-Registrierung, Flux 1/6/10-Übermittlung, CDAR-Lebenszyklus) identisch.

B2Brouter ist selbst eine Plateforme Agréée: Sie integrieren sich mit B2Brouter – es ist kein Relay oder Connector zu einer anderen PA. Wenn Ihre SIREN/SIRET derzeit bei einer anderen PA registriert ist, überträgt die Aktivierung von B2Brouter (Schritt 2) den Annuaire-Eintrag automatisch. Sie können B2Brouter nicht als Durchleitung verwenden, um Rechnungen unter der Zertifizierung einer anderen PA einzureichen.

Weiterleitung an Empfänger auf anderen PAs: Wenn Ihr Käufer bei einer anderen PA registriert ist, leitet B2Brouter die Rechnung über das standardmäßige Peppol-Vier-Ecken-Modell (C2 → C3) weiter: Der Peppol-Zugangspunkt von B2Brouter (C2) sucht die Peppol-Adresse des Empfängers im Annuaire und liefert das Dokument an den Zugangspunkt des Käufers (C3) – unabhängig davon, welche PA er verwendet. Keine zusätzliche Konfiguration auf Ihrer Seite erforderlich.


Testumgebungen: Verwenden Sie die Sandbox für erste API-Tests und Payload-Validierung – DGFiP-Einreichungen werden in der Sandbox simuliert, keine fiktive SIRET erforderlich. Für vollständige End-to-End-Tests mit der DGFiP-QAS-Umgebung (Qualifikation) verwenden Sie die Staging-Umgebung von B2Brouter wie unten beschrieben.

UmgebungB2Brouter AppB2Brouter APIChorus Pro Portal
Produktionapp.b2brouter.nethttps://api.b2brouter.netchorus-pro.gouv.fr
Staging (Test)app-staging.b2brouter.nethttps://api-staging.b2brouter.netqualif.chorus-pro.gouv.fr

Umgebungen nicht mischen. Die Produktion verwendet echte SIREN/SIRET-Nummern und verbindet sich mit dem DGFiP-Produktions-Annuaire. Staging verwendet fiktive Testidentifikatoren und verbindet sich mit der DGFiP-QAS-Umgebung (Qualifikation). API-Schlüssel, Konten und Kontakte werden nicht zwischen Umgebungen geteilt.

Registrieren Sie sich unter app.b2brouter.net, um eine Produktionsintegration zu starten. Wenn Sie die DGFiP-Steuerberichtseinstellung aktivieren, wird die SIREN/SIRET Ihres Unternehmens im echten PPF-Annuaire veröffentlicht und für jede Plattform im französischen E-Rechnungsökosystem auffindbar.

Diese Option ist für echte B2B-Rechnungen ab September 2026 ausgelegt. In der Zwischenzeit wird die DGFiP QAS-Perioden-Datensätze vor dem Inkrafttreten der Reform löschen – alle Rechnungen, die Sie während Ihres Pilotprojekts senden, begründen keine Compliance-Pflichten. Dies ist der richtige Ausgangspunkt, wenn Sie B2Brouter bereits gewählt haben und die vollständige Integration mit Ihren tatsächlichen Unternehmensdaten testen möchten.

Option B — Staging (empfohlen für die Evaluierung)

Section titled “Option B — Staging (empfohlen für die Evaluierung)”

Registrieren Sie sich unter app-staging.b2brouter.net, um die Testumgebung von B2Brouter zu nutzen, die mit der QAS-Umgebung (Qualifikation) der DGFiP verbunden ist.

Dies ist die beste Option, wenn:

  • Sie mehrere Plattformen evaluieren, bevor Sie sich entscheiden
  • Ihre SIREN/SIRET bereits im Annuaire einer anderen PA veröffentlicht ist (die Aktivierung von B2Brouter in der Produktion würde den Eintrag übertragen)
  • Sie es vorziehen, Ihre Unternehmensidentifikatoren nicht mit Testaktivitäten zu verknüpfen

Die Staging-Umgebung ist selbst bereitgestellt: Sobald Sie Testidentifikatoren haben (siehe unten), können Sie innerhalb von 24 Stunden mit End-to-End-Tests beginnen.

SIRET-Validierung in Staging: In der Staging-Umgebung wird jede gültige 14-stellige Nummer als SIRET ohne Prüfsummenvalidierung akzeptiert. Die fiktiven Identifikatoren aus der Chorus Pro QAS CSV sind im DGFiP-QAS-Annuaire vorregistriert und funktionieren End-to-End. In der Produktion werden SIRET-Format und Prüfsumme validiert.

Wichtig: Die DGFiP erlaubt keine echten SIREN- oder SIRET-Nummern in ihrer QAS-Umgebung. Sie müssen fiktive Testidentifikatoren verwenden. Diese können Sie selbst über das Chorus Pro QAS-Portal erhalten (kostenlos, 5-Minuten-Prozess) oder einen vorher zugewiesenen Satz anfordern, indem Sie ein Support-Ticket in der Staging-App öffnen.

Ein Konto pro SIREN: B2Brouter erstellt ein Konto pro SIREN (der MwSt.-Nummernschlüssel wird aus der SIREN abgeleitet). Wenn Sie eine SIRET angeben, wird die SIREN daraus extrahiert. Zwei verschiedene SIRETs desselben Unternehmens (gleiche SIREN) werden auf dasselbe Konto aufgelöst. Wenn Ihr Unternehmen von mehreren Niederlassungen aus operiert (verschiedene SIRETs), werden diese als Organisationseinheiten innerhalb desselben B2Brouter-Kontos modelliert – nicht als separate Konten. Kontaktieren Sie den Support, wenn Sie die Mehrfachniederlassungs-Rechnungsstellung konfigurieren müssen.

Testidentifikatoren über Chorus Pro QAS erhalten

Section titled “Testidentifikatoren über Chorus Pro QAS erhalten”

Das Chorus Pro QAS-Portal ermöglicht Ihnen, ein „Matelas de données” (Datensatz) zu generieren – eine CSV-Datei mit fiktiven SIREN/SIRET-Identifikatoren, die in der DGFiP-Testumgebung vorregistriert sind. Gehen Sie wie folgt vor:

  1. Gehen Sie zu qualif.chorus-pro.gouv.fr → Tab EntrepriseCréer mon compte.
    • Sie können eine temporäre E-Mail-Adresse verwenden (z. B. temp-mail.io).
    • Verwenden Sie einen beliebigen Namen; dieses Konto dient nur zum Erhalt von Testidentifikatoren.
  2. Prüfen Sie Ihren Posteingang auf die E-Mail „Initialisation de mot de passe Chorus Pro” und legen Sie Ihr Passwort fest (Link 60 Minuten gültig).
  3. Anmelden → DomainesMatelas de donnéesGénérer un matelas de données klicken und bestätigen.
  4. Gehen Sie zu Consultation du matelas de données. Warten Sie, bis beide Statusanzeigen „Disponible” zeigen:
    • Statut pour Chorus Pro: Disponible
    • Statut pour l’annuaire de facturation PPF: Disponible
    • Die Generierung dauert in der Regel einige Minuten. Aktualisieren Sie die Seite, um den Status zu prüfen.
  5. Klicken Sie auf „Générer et télécharger le fichier CSV du matelas structures et utilisateurs”, um Ihre Testidentifikatoren herunterzuladen.

Die CSV enthält mehrere fiktive SIREN/SIRET-Nummern in Zeilen mit der Bezeichnung „Privé” und „Public”. Verwenden Sie nur Zeilen aus dem Abschnitt „Privé” (Privatsektor) für Ihre Testkonten. Öffentliche Sektor-Einheiten (SIREN 'Public') werden vom DGFiP-QAS-Annuaire abgelehnt – der Versuch, e-Reporting für ein öffentliches Konto zu aktivieren, gibt HTTP 422 zurück. Dies ist korrektes Verhalten: öffentliche Einheiten verwenden Chorus Pro direkt, nicht eine PA.

Verwenden Sie eine private SIREN für Ihr Ausstellerkonto und eine weitere für Ihren Testkontakt.

Sobald Sie Ihre Testidentifikatoren haben:

  1. Registrieren Sie sich unter app-staging.b2brouter.net und aktivieren Sie Ihr Konto.
  2. Erstellen Sie Ihr Unternehmenskonto mit einer SIREN aus der CSV (siehe Schritt 1).
  3. Abonnieren Sie einen eDocExchange-Plan (Staging-Abonnements sind simuliert – keine Kosten).
  4. Aktivieren Sie die DGFiP-Steuerberichtseinstellungen (siehe Schritt 2).
    • ⚠️ Nach der Aktivierung der DGFiP-Steuerberichtseinstellung dauert die Annuaire-Registrierung Ihres Unternehmens bis zu 24 Stunden – sowohl in Staging als auch in der Produktion. Dies ist eine DGFiP-Infrastrukturbeschränkung, keine B2Brouter-Verzögerung. Sie können erst am folgenden Tag Rechnungen senden.
  5. Am nächsten Tag: Erstellen Sie einen Testkontakt mit einer zweiten SIREN aus der CSV (siehe Schritt 3).
  6. Senden Sie Ihre erste Rechnung (siehe Rechnungen ausstellen).

Die Authentifizierung verwendet einen statischen API-Schlüssel, der im HTTP-Header X-B2B-API-Key übergeben wird. Es gibt keinen OAuth2-Ablauf – generieren Sie Ihren API-Schlüssel in der B2Brouter-Oberfläche unter Einstellungen → API-Schlüssel. Halten Sie ihn vertraulich und fügen Sie ihn niemals in clientseitigem Code ein. Setzen Sie auch X-B2B-API-Version in jeder Anfrage.

Basis-URL: Alle nachfolgenden Beispiele verwenden https://api-staging.b2brouter.net. Ersetzen Sie für die Produktion durch https://api.b2brouter.net.


Schritt 1: Unternehmenskonto abrufen oder anlegen

Section titled “Schritt 1: Unternehmenskonto abrufen oder anlegen”

Wenn Sie bereits ein B2Brouter-Konto für Ihr Unternehmen haben, rufen Sie dessen id mit dem Endpunkt Konten auflisten ab und überspringen Sie den Erstellungsschritt.

Wenn Sie noch keines angelegt haben, verwenden Sie den Endpunkt Konto erstellen (eDocSync/API-Pfad) oder den Web-Oberflächen-Onboarding-Assistenten (eDocExchange-Pfad). Beide liefern dasselbe Ergebnis.

Beim Erstellen eines französischen Unternehmenskontos:

  • cin_scheme: "0002" für SIREN (9 Stellen) oder "0009" für SIRET (14 Stellen). Verwenden Sie SIRET wenn verfügbar – es identifiziert eine bestimmte Niederlassung und wird vom PPF bevorzugt.
  • cin_value: Die SIREN oder SIRET Ihres Unternehmens.
  • tin_value: Französische MwSt.-Nummer im Format FR{kk}{siren}, wobei kk die zweistellige Prüfsumme ist (z. B. FR32123456789). Dieses Feld ist bei der Kontoerstellung optional: Wenn es weggelassen wird, leitet B2Brouter es automatisch aus der SIREN ab und setzt es, wenn Sie die DGFiP-Steuerberichtseinstellung aktivieren. Es ist für DGFiP-Rechnungsstellung obligatorisch, aber Sie müssen es nicht selbst berechnen.
  • country: "fr".

Beispielanfrage:

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 'Content-Type: application/json' \
--data '{
"account": {
"country": "fr",
"name": "Exemplar SAS",
"address": "10 Rue Imaginaire",
"city": "Paris",
"postalcode": "75001",
"province": "Île-de-France",
"email": "john.doe@example.com",
"tin_value": "FR32123456789",
"tin_scheme": 9957,
"cin_scheme": "0009",
"cin_value": "12345678900012",
"rounding_method": "half_up"
}
}'

Beispielantwort:

{
"account": {
"id": 83428,
"name": "Exemplar SAS",
"tin_value": "FR32123456789",
"tin_scheme": 9957,
"cin_scheme": "0009",
"cin_value": "12345678900012",
"address": "10 Rue Imaginaire",
"city": "Paris",
"postalcode": "75001",
"province": "Île-de-France",
"country": "fr",
"currency": "EUR",
"email": "john.doe@example.com",
"rounding_method": "half_up",
"archived": false,
"created_at": "2026-06-10T09:54:38.000Z",
"updated_at": "2026-06-10T09:54:38.000Z"
}
}

POST Konto - API-Referenz


Schritt 2: Steuerberichtseinstellungen für DGFiP aktivieren

Section titled “Schritt 2: Steuerberichtseinstellungen für DGFiP aktivieren”

Dies ist der entscheidende Onboarding-Schritt. Wenn Sie eine Steuerberichtseinstellung mit code: "dgfip" erstellen, führt B2Brouter automatisch folgende Schritte durch:

  1. Registriert Ihr Unternehmen im PPF-Annuaire – Ihre SIREN/SIRET wird für jede Plattform im französischen E-Rechnungsökosystem auffindbar.
  2. Erstellt einen Peppol 0225-Transport – ermöglicht Ihrem Unternehmen den Empfang elektronischer Rechnungen von jeder Peppol-verbundenen Plattform in Frankreich.

⚠️ Transport-Ersatz: Wenn Ihr Konto bereits einen Peppol-Transport hat, wird dieser während der Aktivierung durch den neuen 0225-Transport (FRCTC Electronic Address) ersetzt. Wenn Ihre SIREN/SIRET zuvor bei einer anderen PA registriert war, schließt B2Brouter den bestehenden Annuaire-Eintrag und öffnet einen neuen. Aktualisieren Sie jede bestehende Integration, die auf die alte Transport-ID verweist.

Das start_date legt fest, wann die Steuerberichterstattung beginnt. Ab diesem Datum erzeugen von Ihnen ausgestellte Rechnungen Steuerberichte und werden über Flux 1 an das PPF übermittelt.

Beispielanfrage:

Terminal window
curl --request POST \
--url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/tax_report_settings \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}' \
--header 'Content-Type: application/json' \
--data '{
"tax_report_setting": {
"code": "dgfip",
"start_date": "2026-09-01",
"type_operation": "services",
"naf_code": "62",
"enterprise_size": "eti",
"email": "jane.doe@example.com"
}
}'

Beispielantwort:

{
"tax_report_setting": {
"code": "dgfip",
"start_date": "2026-09-01",
"auto_generate": true,
"auto_send": true,
"enabled": true,
"type_operation": "services",
"naf_code": "62",
"enterprise_size": "eti",
"email": "jane.doe@example.com",
"locked": false,
"created_at": "2026-06-10T10:15:22.000Z",
"updated_at": "2026-06-10T10:15:22.000Z"
}
}

Felder der DGFiP-Steuerberichtseinstellungen

Section titled “Felder der DGFiP-Steuerberichtseinstellungen”
FeldTypErforderlichBeschreibung
codestringJaMuss "dgfip" sein.
start_dateDatumJaWann die Steuerberichterstattung beginnt. Muss heute oder ein zukünftiges Datum sein. Standardmäßig morgen, wenn weggelassen.
type_operationstringJaStandard-Operationstyp für dieses Unternehmen: "services", "goods" oder "mixed". Bestimmt den DGFiP-Prozesscode (S1/B1/M1 usw.) in Steuerberichten. Wählen Sie "mixed", wenn Ihr Unternehmen sowohl Waren als auch Dienstleistungen verkauft. Diese Einstellung kann nach der Aktivierung aktualisiert werden.
naf_codestringJaDer NAF/APE-Code des Unternehmens (Nomenclature d’Activités Française). Dies ist der von INSEE zugewiesene 2-stellige Abschnittscode, der die Hauptwirtschaftstätigkeit des Unternehmens identifiziert (z. B. "62" für IT- und Softwaredienste, "47" für Einzelhandel, "86" für Gesundheit).
enterprise_sizestringJaDie Größenkategorie des Unternehmens gemäß INSEE. Zulässige Werte: "micro" (< 10 Mitarbeiter, CA ≤ 2 Mio. €), "pme" (10 bis 249 Mitarbeiter, CA ≤ 50 Mio. €), "eti" (250 bis 4.999 Mitarbeiter, CA ≤ 1,5 Mrd. €) oder "ge" (5.000+ Mitarbeiter oder CA > 1,5 Mrd. €).
reason_vat_exemptstringNeinStandard-MwSt.-Befreiungsgrund für dieses Unternehmen. Standardmäßig "VATEX-FR-FRANCHISE". Setzen Sie dies, wenn Ihr Unternehmen unter einem bestimmten MwSt.-Befreiungsregime arbeitet.
emailstringNeinKontakt-E-Mail für steuerliche Benachrichtigungen.
auto_generatebooleanNeinImmer true für DGFiP (gesetzliche Pflicht). Kann nicht geändert werden.
auto_sendbooleanNeinSteuerberichte automatisch an das PPF übermitteln. Standardmäßig true.
enabledbooleanNeinOb die Einstellung aktiv ist. Standardmäßig true. Die Annuaire-Registrierung erfolgt nur bei true.

Wenn die Annuaire-Registrierung fehlschlägt (ungültige SIREN/SIRET oder ein vorübergehender DGFiP-Dienstausfall), wird die Erstellung der Steuerberichtseinstellung zurückgerollt und ein Fehler zurückgegeben. Beheben Sie das Problem und versuchen Sie es erneut.

Steuerberichtseinstellungen - API-Referenz


Ein französischer B2B-Kontakt benötigt Routing-Identifikatoren (wie die Rechnung den Empfänger erreicht) und Steueridentifikation (wie der Empfänger im UBL-XML erscheint).

FeldWertZweck
cin_scheme"0009" (SIRET) oder "0002" (SIREN)Organisations-ID – wird verwendet, um den Empfänger im Annuaire zu suchen
cin_valueSIRET oder SIRENOrganisations-ID – der im Annuaire registrierte Identifikator
tin_scheme9957Steuer-ID – ISO 6523-Code für französischen Fiskalidentifikator
tin_valueFR{kk}{siren} (z. B. "FR78225214234")Steuer-ID – französische MwSt.-Nummer im UBL-XML
country"fr"Erforderlich für DGFiP-Routing-Logik
currency"EUR"Standardwährung für Rechnungen dieses Kontakts
transport_type_code"peppol"Empfohlen – gewährleistet die Lieferung über das Peppol-Netzwerk
document_type_code"xml.ubl.invoice.frcius.v1"Empfohlen – Frankreich CIUS UBL-Rechnungsformat

Beispielanfrage:

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": {
"name": "Client Exemple SARL",
"address": "25 Avenue de la République",
"city": "Lyon",
"postalcode": "69001",
"country": "fr",
"currency": "EUR",
"language": "fr",
"is_client": true,
"cin_scheme": "0009",
"cin_value": "98765432100011",
"tin_scheme": 9957,
"tin_value": "FR05987654321",
"transport_type_code": "peppol",
"document_type_code": "xml.ubl.invoice.frcius.v1"
}
}'

POST Kontakt - API-Referenz

Optional: Empfänger-Routing prüfen (Verzeichnissuche)

Section titled “Optional: Empfänger-Routing prüfen (Verzeichnissuche)”

B2Brouter leitet Rechnungen automatisch weiter. Um vor dem Senden zu prüfen, wie ein Empfänger weitergeleitet wird – z. B. um zu bestätigen, dass er im Annuaire registriert ist – verwenden Sie die Verzeichnissuche:

Terminal window
curl --request GET \
--url https://api-staging.b2brouter.net/directory/fr/0009/98765432100011 \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}'

GET Verzeichnissuche - API-Referenz

Annuaire-Prüfung und Steuerberichtsgenerierung

Section titled “Annuaire-Prüfung und Steuerberichtsgenerierung”

B2Brouter prüft automatisch, ob französische Kontakte (country: "fr") im DGFiP-Annuaire registriert sind. Diese Prüfung bestimmt den Steuerberichterstattungsfluss:

  • Kontakt im Annuaire registriert (in_dgfip_annuaire: true oder noch nicht geprüft): Die Rechnung erzeugt einen Flux 1-Steuerbericht (inländische B2B-E-Rechnungsstellung).
  • Kontakt NICHT im Annuaire registriert (in_dgfip_annuaire: false): Die Rechnung erzeugt keinen Steuerbericht. Dies verhindert ungültige Flux 1-Einreichungen für Empfänger, die das PPF nicht weiterleiten kann.
  • Kontakt noch nicht geprüft (in_dgfip_annuaire: nil): B2Brouter ist permissiv – die Rechnung wird fortgesetzt und erzeugt einen Steuerbericht. Die Prüfung erfolgt asynchron im Hintergrund.

Sobald Ihr Unternehmen eingebunden und die DGFiP-Steuerberichtseinstellung aktiviert ist, erfolgt die Rechnungserstellung über die Standard-Invoice-API. B2Brouter behandelt alle Frankreich-spezifischen Anforderungen automatisch: Steuerberichtsgenerierung, UBL/CII/Factur-X-Formatierung und PPF-Übermittlung über Flux 1.

Verwenden Sie send_after_import: true, um in einem Schritt zu erstellen und zu übermitteln. Setzen Sie es auf false, wenn Sie die Rechnung zuerst erstellen und überprüfen möchten – in diesem Fall verbleibt die Rechnung im Zustand new, bis Sie die Übermittlung über einen separaten Aufruf oder die B2Brouter-Oberfläche auslösen.

Der häufigste Fall: eine inländische französische B2B-Rechnung mit Standard-TVA (20 %).

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": 1313228381,
"number": "FA-2026-0048",
"date": "2026-09-15",
"due_date": "2026-10-15",
"currency": "EUR",
"payment_method": 4,
"remittance_information": "FA-2026-0048 — Exemplar SAS, SAS au capital de 50 000 EUR, RCS Paris 123 456 789",
"payment_method_text": "Virement bancaire, IBAN FR00 0000 0000 0000 0000 0000 000, BIC XXXXFRPP",
"payment_terms": "Net 30 jours à compter de la date de facture. Pénalité de retard : 12% annuel.",
"invoice_lines_attributes": [
{
"quantity": 10.0,
"description": "Consulting services — architecture review",
"price": 150.0,
"unit": 9,
"taxes_attributes": [
{ "name": "TVA", "percent": 20.0, "category": "S" }
]
},
{
"quantity": 5.0,
"description": "Training sessions — API integration",
"price": 200.0,
"unit": 9,
"taxes_attributes": [
{ "name": "TVA", "percent": 20.0, "category": "S" }
]
}
]
}
}'

Das Array tax_report_ids in der Antwort enthält die ID des generierten Steuerberichts. Verwenden Sie sie, um den Einreichungslebenszyklus zu verfolgen (siehe Status eines Steuerberichts prüfen).

POST Rechnung - API-Referenz

Zahlungsinformationen (obligatorische native Felder)

Section titled “Zahlungsinformationen (obligatorische native Felder)”

Drei Zahlungsfelder sind für französische B2B-E-Rechnungen (IssuedInvoice) obligatorisch:

FeldDGFiP-FeldBeschreibungErforderlich
remittance_informationPMDZahlungsreferenz und rechtliche Angaben (Handelsregisternummer, Stammkapital, RCS)Ja – B2B inländisch und grenzüberschreitend
payment_method_textPMTZahlungsmittelcode + IBAN/BIC-DetailsJa – B2B inländisch und grenzüberschreitend
payment_termsAABFälligkeitsdatum, Verzugszinsen, RabattbedingungenJa – B2B inländisch und grenzüberschreitend

Wenn eines der drei Felder fehlt, gibt die Anfrage HTTP 422 mit expliziten Fehlermeldungen für jedes fehlende Feld zurück. Die Rechnung wird niemals erstellt. Korrigieren Sie die fehlenden Felder und übermitteln Sie erneut.

Wenn eine Position category: "E" hat (MwSt.-befreit), müssen Sie auch einen comment mit dem anwendbaren VATEX-FR-CGI261-*-Befreiungscode angeben (DGFiP BT-121):

⚠️ Stille Blockierung: Wenn comment bei einer Kategorie-E-Position weggelassen wird, wird die Rechnung erstellt (HTTP 200), aber nie an das PPF übermittelt. Die Antwort enthält ein nicht leeres errors-Array – prüfen Sie es auch bei erfolgreichen Antworten.

Franchise en base de TVA (VATEX-FR-FRANCHISE)

Section titled “Franchise en base de TVA (VATEX-FR-FRANCHISE)”

Unternehmen unter dem Franchise en base de TVA-Regime verwenden die Kategorie Z (Nullsatz), nicht befreit (Kategorie E). Setzen Sie percent: 0.0 und category: "E" mit comment: "VATEX-FR-FRANCHISE" – B2Brouter übercodiert die Kategorie automatisch auf Z:

{
"taxes_attributes": [
{
"name": "TVA",
"percent": 0.0,
"category": "E",
"comment": "VATEX-FR-FRANCHISE"
}
]
}

Um eine Gutschrift auszustellen, setzen Sie is_amend: true und referenzieren Sie die ursprüngliche Rechnung mit amended_number und amended_date. B2Brouter generiert eine UBL-Gutschrift mit Typcode 381.

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": 1313228381,
"number": "NC-2026-001",
"date": "2026-09-25",
"due_date": "2026-10-25",
"is_credit_note": true,
"is_amend": true,
"amended_number": "FA-2026-0048",
"amended_date": "2026-09-15",
"currency": "EUR",
"payment_method": 4,
"remittance_information": "NC-2026-001 — annule et remplace FA-2026-0048. Exemplar SAS",
"payment_method_text": "Virement bancaire, IBAN FR00 0000 0000 0000 0000 0000 000, BIC XXXXFRPP",
"payment_terms": "Remboursement sous 30 jours.",
"invoice_lines_attributes": [
{
"quantity": -1.0,
"description": "Annulation partielle — Consulting services",
"price": 500.0,
"unit": 9,
"taxes_attributes": [
{ "name": "TVA", "percent": 20.0, "category": "S" }
]
}
]
}
}'

Der Prozesscode bestimmt den PPF-Flux-Rahmen. B2Brouter weist ihn automatisch basierend auf type_operation in der Steuerberichtseinstellung und den Rechnungsmerkmalen zu.

ProzesscodeOperationstypBeschreibung
S1DienstleistungenStandardrechnung für Dienstleistungen
B1WarenStandardrechnung für Waren
M1GemischtStandardrechnung für gemischte Operationen
S2DienstleistungenBezahlte Rechnung für Dienstleistungen
B2WarenBezahlte Rechnung für Waren
M2GemischtBezahlte Rechnung für gemischte Operationen
S4DienstleistungenRechnung mit Anzahlungen (Dienstleistungen)
B4WarenRechnung mit Anzahlungen (Waren)
M4GemischtRechnung mit Anzahlungen (gemischt)
S7DienstleistungenKorrektur einer registrierten Rechnung (Dienstl.)
B7WarenKorrektur einer registrierten Rechnung (Waren)
Dokumenttyp-CodeFormatBeschreibung
xml.ubl.invoice.frcius.v1UBL XMLFrankreich CIUS Peppol-Rechnung (Flux 1 / Annuaire)
xml.cii.cross_industry_invoice.frcius.v1CII XMLFrankreich CIUS CII-Rechnung
pdf.a.invoice.with.xml.cii.cross_industry_invoice.facturx.fr.all_profiles.v1Factur-XPDF/A mit eingebettetem CII XML

Wenn Ihr System bereits Factur-X oder UBL XML-Rechnungen generiert, reichen Sie diese direkt über den Dokumentimport-Endpunkt ein:

POST /accounts/{id}/invoices/import

Setzen Sie Content-Type auf:

  • application/pdf — für Factur-X (PDF/A-3 mit eingebettetem CII XML)
  • application/xml — für eigenständiges UBL 2.1 oder CII XML

StatusBeschreibung
sendingDie Rechnung wurde erstellt und wartet auf PPF-Übermittlung.
sentDas Rechnungs-XML wurde erfolgreich zum PPF hochgeladen (Flux 1-Einlage bestätigt).
registeredDas PPF hat die Rechnung validiert und akzeptiert (CDV Flux 1 positiv).
acceptedDer Käufer hat die Rechnung genehmigt.
refusedDer Käufer hat die Rechnung abgelehnt.
allegedly_paidDer Käufer hat die Rechnung als bezahlt gemeldet (entspricht CDAR 212 – Encaissée).
errorBei der Übermittlung oder PPF-Validierung ist ein Fehler aufgetreten. Das Feld errors in der Rechnungsantwort enthält den PPF-Ablehnungsgrund. Löschen Sie die Rechnung, beheben Sie das Problem und senden Sie eine neue ein.

Konfigurieren Sie Webhook-Endpunkte in der B2Brouter-Oberfläche unter Einstellungen → Webhooks. B2Brouter sendet einen HTTP POST an Ihren Endpunkt, wenn die Rechnung einen neuen Status erreicht.

Rechnungsstatus-Webhooks - API-Referenz

Terminal window
curl --request GET \
--url https://api-staging.b2brouter.net/invoices/{INVOICE_ID} \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}' \
--header 'Accept: application/json'

Originales Rechnungsdokument herunterladen

Section titled “Originales Rechnungsdokument herunterladen”

Nachdem eine Rechnung den Status sent erreicht hat, enthält die Antwort von GET /invoices/{id} ein Feld download_legal_url. Verwenden Sie es, um das übermittelte Rechnungsdokument herunterzuladen:

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}'

Der Steuerbericht verfolgt den technischen Lebenszyklus der Einreichung an das PPF. Sowohl die XML-Generierung als auch die PPF-Übermittlung sind asynchron.

Flux 1 – Inländische B2B-Rechnungen:

StatusBeschreibung
newSteuerbericht erstellt, wartet auf Übermittlung
sentDokument via SFTP beim PPF eingereicht
acknowledgedPPF hat die Datei empfangen und validiert (CDV-Bedingung 500 – Reçue)
registeredTerminal – Rechnung von der DGFiP akzeptiert und registriert (CDV-Bedingung 300)
refusedTerminal – Von der DGFiP abgelehnt (CDV-Bedingung 301)
errorTerminal – Übertragungs- oder PPF-Verarbeitungsfehler
annulledRechnung nach Registrierung storniert

Flux 10 – Grenzüberschreitende B2B- und B2C-Rechnungen (e-Reporting):

StatusBeschreibung
newSteuerbericht erstellt, für den täglichen Ledger-Batch akkumuliert
sentLedger via SFTP beim PPF eingereicht
acknowledgedPPF hat den Ledger empfangen (CDV-Bedingung 500 – Reçue)
registeredTerminal – Ledger von der DGFiP akzeptiert und registriert (CDV-Bedingung 300)
refusedTerminal – Von der DGFiP abgelehnt (CDV-Bedingung 301)
errorTerminal – Übertragungs- oder PPF-Verarbeitungsfehler

Fragen Sie den Status mit der Steuerbericht-ID aus tax_report_ids in der Rechnungsantwort ab:

Terminal window
curl --request GET \
--url https://api-staging.b2brouter.net/tax_reports/{TAX_REPORT_ID} \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}'

GET Steuerbericht - API-Referenz


Flux 10 deckt Transaktionen ab, die außerhalb des Geltungsbereichs der inländischen B2B-E-Rechnungspflicht liegen, aber dennoch an die DGFiP gemeldet werden müssen. B2Brouter verwaltet Flux 10 automatisch.

Verkäufe an nicht MwSt.-registrierte Privatpersonen in Frankreich. Verwenden Sie "type": "IssuedSimplifiedInvoice".

Grenzüberschreitende Transaktionen (B2B intra-EU und extra-EU)

Section titled “Grenzüberschreitende Transaktionen (B2B intra-EU und extra-EU)”

Verkäufe an oder Käufe von Unternehmen außerhalb Frankreichs müssen über Flux 10 gemeldet werden. Verwenden Sie den Standard-Typ IssuedInvoice oder ReceivedInvoice und setzen Sie das country der Gegenpartei auf den entsprechenden Nicht-"fr"-Wert. B2Brouter erkennt den grenzüberschreitenden Charakter automatisch.

B2Brouter gruppiert alle Flux 10-Steuerberichte eines Kalendertages in Ledger, die einmal täglich (geplant um 02:00 Uhr Serverzeit) an das PPF gesendet werden.


Als französisches Unternehmen, das im Annuaire mit einem Peppol 0225-Transport registriert ist, empfangen Sie automatisch elektronische Rechnungen von anderen französischen und Peppol-verbundenen Plattformen.

Status empfangener Rechnungen aktualisieren

Section titled “Status empfangener Rechnungen aktualisieren”

Wenn Sie eine Rechnung erhalten, melden Sie ihren Status dem PPF, indem Sie den Rechnungsstatus aktualisieren:

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

Gültige Zielstatus für empfangene Rechnungen: accepted (205 Approuvée), refused (210 Refusée).

Rechnungsstatus wechseln - API-Referenz