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 erledigt | Details |
|---|---|
| PPF-Registrierung | Veröffentlicht Ihre SIREN/SIRET bei Aktivierung automatisch im Annuaire |
| Flux 1 — B2B-E-Rechnungsstellung | Erstellt UBL/CII/Factur-X, übermittelt an das PPF, leitet an die Plattform des Käufers weiter |
| Flux 6 — Rechnungslebenszyklus | Verwaltet CDAR-Statusmeldungen (Déposée, Reçue, Approuvée, Refusée, Encaissée) |
| Flux 10 — e-Reporting | Aggregiert B2C- und grenzüberschreitende B2B-Transaktionen (intra-EU und extra-EU) in tägliche Ledger, die an das PPF gesendet werden |
| Peppol 0225 Empfang | Empfängt Rechnungen von jeder französischen oder Peppol-verbundenen Plattform |
| Dokumentenerstellung | Sie 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 |
| Eingabeformate | JSON REST API, Factur-X PDF/A-3 (mit eingebettetem CII XML), UBL 2.1 XML, CII XML |
| Rechtliche Archivierung | Alle ü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 anlegen → DGFiP aktivieren → Kontakt anlegen → erste 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.
Für wen ist dieser Leitfaden?
Section titled “Für wen ist dieser Leitfaden?”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.
Vor dem Start: Umgebung wählen
Section titled “Vor dem Start: Umgebung wählen”| Umgebung | B2Brouter App | B2Brouter API | Chorus Pro Portal |
|---|---|---|---|
| Produktion | app.b2brouter.net | https://api.b2brouter.net | chorus-pro.gouv.fr |
| Staging (Test) | app-staging.b2brouter.net | https://api-staging.b2brouter.net | qualif.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.
Option A — Produktionspilot
Section titled “Option A — Produktionspilot”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:
- Gehen Sie zu qualif.chorus-pro.gouv.fr → Tab Entreprise → Cré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.
- 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).
- Anmelden → Domaines → Matelas de données → Générer un matelas de données klicken und bestätigen.
- 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.
- 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:
- Registrieren Sie sich unter app-staging.b2brouter.net und aktivieren Sie Ihr Konto.
- Erstellen Sie Ihr Unternehmenskonto mit einer SIREN aus der CSV (siehe Schritt 1).
- Abonnieren Sie einen eDocExchange-Plan (Staging-Abonnements sind simuliert – keine Kosten).
- 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.
- Am nächsten Tag: Erstellen Sie einen Testkontakt mit einer zweiten SIREN aus der CSV (siehe Schritt 3).
- Senden Sie Ihre erste Rechnung (siehe Rechnungen ausstellen).
API-Anmeldedaten
Section titled “API-Anmeldedaten”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 durchhttps://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 FormatFR{kk}{siren}, wobeikkdie 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:
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" }}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:
- Registriert Ihr Unternehmen im PPF-Annuaire – Ihre SIREN/SIRET wird für jede Plattform im französischen E-Rechnungsökosystem auffindbar.
- 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:
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”| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| code | string | Ja | Muss "dgfip" sein. |
| start_date | Datum | Ja | Wann die Steuerberichterstattung beginnt. Muss heute oder ein zukünftiges Datum sein. Standardmäßig morgen, wenn weggelassen. |
| type_operation | string | Ja | Standard-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_code | string | Ja | Der 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_size | string | Ja | Die 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_exempt | string | Nein | Standard-MwSt.-Befreiungsgrund für dieses Unternehmen. Standardmäßig "VATEX-FR-FRANCHISE". Setzen Sie dies, wenn Ihr Unternehmen unter einem bestimmten MwSt.-Befreiungsregime arbeitet. |
| string | Nein | Kontakt-E-Mail für steuerliche Benachrichtigungen. | |
| auto_generate | boolean | Nein | Immer true für DGFiP (gesetzliche Pflicht). Kann nicht geändert werden. |
| auto_send | boolean | Nein | Steuerberichte automatisch an das PPF übermitteln. Standardmäßig true. |
| enabled | boolean | Nein | Ob 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
Schritt 3: Kontakt anlegen
Section titled “Schritt 3: Kontakt anlegen”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).
| Feld | Wert | Zweck |
|---|---|---|
cin_scheme | "0009" (SIRET) oder "0002" (SIREN) | Organisations-ID – wird verwendet, um den Empfänger im Annuaire zu suchen |
cin_value | SIRET oder SIREN | Organisations-ID – der im Annuaire registrierte Identifikator |
tin_scheme | 9957 | Steuer-ID – ISO 6523-Code für französischen Fiskalidentifikator |
tin_value | FR{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:
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" } }'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:
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: trueoder 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.
Rechnungen ausstellen
Section titled “Rechnungen ausstellen”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.
Standard-B2B-Rechnung
Section titled “Standard-B2B-Rechnung”Der häufigste Fall: eine inländische französische B2B-Rechnung mit Standard-TVA (20 %).
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).
Frankreich-spezifische Rechnungsfelder
Section titled “Frankreich-spezifische Rechnungsfelder”Zahlungsinformationen (obligatorische native Felder)
Section titled “Zahlungsinformationen (obligatorische native Felder)”Drei Zahlungsfelder sind für französische B2B-E-Rechnungen (IssuedInvoice) obligatorisch:
| Feld | DGFiP-Feld | Beschreibung | Erforderlich |
|---|---|---|---|
remittance_information | PMD | Zahlungsreferenz und rechtliche Angaben (Handelsregisternummer, Stammkapital, RCS) | Ja – B2B inländisch und grenzüberschreitend |
payment_method_text | PMT | Zahlungsmittelcode + IBAN/BIC-Details | Ja – B2B inländisch und grenzüberschreitend |
payment_terms | AAB | Fälligkeitsdatum, Verzugszinsen, Rabattbedingungen | Ja – 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.
MwSt.-befreite Positionen (Kategorie E)
Section titled “MwSt.-befreite Positionen (Kategorie E)”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
commentbei einer Kategorie-E-Position weggelassen wird, wird die Rechnung erstellt (HTTP 200), aber nie an das PPF übermittelt. Die Antwort enthält ein nicht leereserrors-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" } ]}Gutschrift
Section titled “Gutschrift”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.
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" } ] } ] } }'Prozesscodes
Section titled “Prozesscodes”Der Prozesscode bestimmt den PPF-Flux-Rahmen. B2Brouter weist ihn automatisch basierend auf type_operation in der Steuerberichtseinstellung und den Rechnungsmerkmalen zu.
| Prozesscode | Operationstyp | Beschreibung |
|---|---|---|
| S1 | Dienstleistungen | Standardrechnung für Dienstleistungen |
| B1 | Waren | Standardrechnung für Waren |
| M1 | Gemischt | Standardrechnung für gemischte Operationen |
| S2 | Dienstleistungen | Bezahlte Rechnung für Dienstleistungen |
| B2 | Waren | Bezahlte Rechnung für Waren |
| M2 | Gemischt | Bezahlte Rechnung für gemischte Operationen |
| S4 | Dienstleistungen | Rechnung mit Anzahlungen (Dienstleistungen) |
| B4 | Waren | Rechnung mit Anzahlungen (Waren) |
| M4 | Gemischt | Rechnung mit Anzahlungen (gemischt) |
| S7 | Dienstleistungen | Korrektur einer registrierten Rechnung (Dienstl.) |
| B7 | Waren | Korrektur einer registrierten Rechnung (Waren) |
Dokumentformate
Section titled “Dokumentformate”| Dokumenttyp-Code | Format | Beschreibung |
|---|---|---|
xml.ubl.invoice.frcius.v1 | UBL XML | Frankreich CIUS Peppol-Rechnung (Flux 1 / Annuaire) |
xml.cii.cross_industry_invoice.frcius.v1 | CII XML | Frankreich CIUS CII-Rechnung |
pdf.a.invoice.with.xml.cii.cross_industry_invoice.facturx.fr.all_profiles.v1 | Factur-X | PDF/A mit eingebettetem CII XML |
Factur-X und UBL XML importieren
Section titled “Factur-X und UBL XML importieren”Wenn Ihr System bereits Factur-X oder UBL XML-Rechnungen generiert, reichen Sie diese direkt über den Dokumentimport-Endpunkt ein:
POST /accounts/{id}/invoices/importSetzen 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
Rechnungslebenszyklus
Section titled “Rechnungslebenszyklus”Rechnungsstatus
Section titled “Rechnungsstatus”| Status | Beschreibung |
|---|---|
| sending | Die Rechnung wurde erstellt und wartet auf PPF-Übermittlung. |
| sent | Das Rechnungs-XML wurde erfolgreich zum PPF hochgeladen (Flux 1-Einlage bestätigt). |
| registered | Das PPF hat die Rechnung validiert und akzeptiert (CDV Flux 1 positiv). |
| accepted | Der Käufer hat die Rechnung genehmigt. |
| refused | Der Käufer hat die Rechnung abgelehnt. |
| allegedly_paid | Der Käufer hat die Rechnung als bezahlt gemeldet (entspricht CDAR 212 – Encaissée). |
| error | Bei 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. |
Rechnungsstatus verfolgen
Section titled “Rechnungsstatus verfolgen”Webhooks (empfohlen)
Section titled “Webhooks (empfohlen)”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
Polling
Section titled “Polling”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:
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}'Status eines Steuerberichts prüfen
Section titled “Status eines Steuerberichts prüfen”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:
| Status | Beschreibung |
|---|---|
new | Steuerbericht erstellt, wartet auf Übermittlung |
sent | Dokument via SFTP beim PPF eingereicht |
acknowledged | PPF hat die Datei empfangen und validiert (CDV-Bedingung 500 – Reçue) |
registered | ✅ Terminal – Rechnung von der DGFiP akzeptiert und registriert (CDV-Bedingung 300) |
refused | ❌ Terminal – Von der DGFiP abgelehnt (CDV-Bedingung 301) |
error | ❌ Terminal – Übertragungs- oder PPF-Verarbeitungsfehler |
annulled | Rechnung nach Registrierung storniert |
Flux 10 – Grenzüberschreitende B2B- und B2C-Rechnungen (e-Reporting):
| Status | Beschreibung |
|---|---|
new | Steuerbericht erstellt, für den täglichen Ledger-Batch akkumuliert |
sent | Ledger via SFTP beim PPF eingereicht |
acknowledged | PPF hat den Ledger empfangen (CDV-Bedingung 500 – Reçue) |
registered | ✅ Terminal – Ledger von der DGFiP akzeptiert und registriert (CDV-Bedingung 300) |
refused | ❌ Terminal – Von der DGFiP abgelehnt (CDV-Bedingung 301) |
error | ❌ Terminal – Übertragungs- oder PPF-Verarbeitungsfehler |
Polling
Section titled “Polling”Fragen Sie den Status mit der Steuerbericht-ID aus tax_report_ids in der Rechnungsantwort ab:
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
e-Reporting (Flux 10)
Section titled “e-Reporting (Flux 10)”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.
B2C-Transaktionen
Section titled “B2C-Transaktionen”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.
Flux 10 Ledger
Section titled “Flux 10 Ledger”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.
Rechnungen empfangen
Section titled “Rechnungen empfangen”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:
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
Weitere Ressourcen
Section titled “Weitere Ressourcen”- API-Referenz
- Leitfaden für Steuerberichtseinstellungen
- Chorus Pro Leitfaden (B2G) — für Rechnungen an französische Behörden
- Support
- DGFiP — Französische E-Rechnungsreform