Salta al contingut
Log in

DGFiP facturació electrònica i e-Reporting

A partir del setembre de 2026, totes les empreses franceses hauran d’encaminar les seves factures i dades d’IVA a través d’una plataforma certificada. B2Brouter ho simplifica: tu envies les dades de la factura amb una crida REST API, i B2Brouter s’encarrega del registre al PPF, la generació del document (UBL/CII/Factur-X), l’encaminament cap als teus clients i la declaració fiscal a la DGFiP, tot des d’una sola integració.

B2Brouter és una Plateforme Agréée (PA) certificada per a la reforma francesa de facturació electrònica de la DGFiP. Connecta’t via REST API i B2Brouter gestionarà per tu tota la capa de compliance:

Què fa B2Brouter per tuDetalls
Registre al PPFPublica automàticament el teu SIREN/SIRET a l’Annuaire quan actives el servei
Flux 1 — facturació electrònica B2BGenera UBL/CII/Factur-X, transmet al PPF i encaminа a la plataforma del comprador
Flux 6 — cicle de vida de la facturaGestiona els missatges d’estat CDAR (Déposée, Reçue, Approuvée, Refusée, Encaissée)
Flux 10 — e-ReportingAgrega operacions B2C i B2B transfrontereres (intra-UE i extra-UE) en Ledgers diaris enviats al PPF
Recepció Peppol 0225Rep factures de qualsevol plataforma francesa o connectada a Peppol
Generació de documentsTu envies dades de factura en JSON i B2Brouter genera el document UBL/CII/Factur-X compliant i el transmet al PPF. No cal que generis XML pel teu compte
Formats d’entradaJSON REST API, Factur-X PDF/A-3 (amb CII XML incrustat), UBL 2.1 XML, CII XML
Arxiu legalTots els documents transmesos (factures, tax reports, missatges CDAR) s’emmagatzemen a B2Brouter durant el període legal obligatori de 10 anys. No cal cap infraestructura addicional al teu costat

Per integrar-te necessites 4 passos: crear el teu compteactivar DGFiPcrear un contacteenviar la teva primera factura.


Context normatiu: La reforma francesa de facturació electrònica estableix que totes les empreses franceses han d’utilitzar una Plateforme Agréée (PA) certificada o el PPF (Portail Public de Facturation) de l’Estat per transmetre factures i declarar dades d’IVA a la DGFiP a partir del setembre de 2026. Com a PA certificada, B2Brouter gestiona completament la connexió amb el PPF en nom teu: sense SFTP, sense certificats electrònics i sense cap integració directa amb el PPF.

Hi ha dos casos d’ús principals per integrar-se amb B2Brouter per a la facturació electrònica a França:

eDocExchange: per a empreses o grups d’empreses que integren directament el seu programari de gestió (ERP, plataforma comptable) amb B2Brouter. El procés d’onboarding (creació del compte, configuració de Tax Report Settings) normalment es fa una vegada per empresa des de la interfície web. L’operativa del dia a dia, com emetre factures i seguir-ne el cicle de vida, es fa via API. Per afegir més comptes d’empresa al teu grup d’integració, només cal seguir el mateix assistent d’onboarding des del mateix usuari de B2Brouter; no cal cap crida API separada.

eDocSync: per a vendors de programari i proveïdors ERP que volen oferir compliment DGFiP als seus clients des del seu propi producte. És el model white-label / embedded / marque blanche de B2Brouter: B2Brouter opera completament en segon pla, els clients finals només interactuen amb la interfície del vendor i no saben que B2Brouter hi és al darrere. El vendor és responsable del provisionament de comptes, l’enviament de factures i el seguiment del cicle de vida via l’API de B2Brouter. Els clients finals no necessiten login ni subscripció a B2Brouter.

Per a eDocSync, el volum de provisionament de comptes determina el pla adequat:

  • Poques empreses (model reseller): afegeix cada empresa client com a compte dins del teu grup d’integració de B2Brouter des de la interfície web, seguint l’assistent estàndard. Funciona bé per a desenes d’empreses i comparteix una única API key.
  • 100+ empreses: contacta amb el nostre equip comercial o obre un ticket de suport per parlar d’un pla eDocSync dedicat amb provisionament massiu.

En tots dos casos, totes les funcionalitats de compliance específiques de França (registre a l’Annuaire, transmissió Flux 1/6/10, cicle de vida CDAR) funcionen igual.

B2Brouter és una Plateforme Agréée: t’integres amb B2Brouter; no és un relay ni un connector cap a una altra PA. Si el teu SIREN/SIRET ja està registrat amb una altra PA, activar B2Brouter (pas 2) transferirà automàticament l’entrada de l’Annuaire. No pots utilitzar B2Brouter com a passarel·la per enviar factures sota la certificació d’una altra PA.

Encaminament a destinataris d’altres PA: quan el comprador està registrat amb una PA diferent, B2Brouter encamina la factura utilitzant el model estàndard Peppol de quatre cantonades (C2 → C3): el punt d’accés Peppol de B2Brouter (C2) consulta l’adreça Peppol del destinatari a l’Annuaire i entrega el document al punt d’accés del comprador (C3), independentment de quina PA utilitzi. No cal cap configuració extra al teu costat.


Entorns de prova: utilitza sandbox per a les primeres proves d’API i validació de payloads. Els enviaments DGFiP es simulen al sandbox i no cal cap SIRET fictici. Per a proves completes end-to-end amb l’entorn QAS (qualification) de la DGFiP, utilitza l’entorn staging de B2Brouter, tal com s’explica a continuació.

EntornApp de B2BrouterAPI de B2BrouterPortal Chorus Pro
Produccióapp.b2brouter.nethttps://api.b2brouter.netchorus-pro.gouv.fr
Staging (proves)app-staging.b2brouter.nethttps://api-staging.b2brouter.netqualif.chorus-pro.gouv.fr

No barregis entorns. Producció utilitza números SIREN/SIRET reals i connecta amb l’Annuaire de producció de la DGFiP. Staging utilitza identificadors ficticis de prova i connecta amb l’entorn QAS de la DGFiP. API keys, comptes i contactes no es comparteixen entre entorns.

Registra’t a app.b2brouter.net per començar una integració en producció. Quan activis el DGFiP Tax Report Setting, el SIREN/SIRET de la teva empresa es publicarà a l’Annuaire real del PPF i serà visible per qualsevol plataforma de l’ecosistema francès de facturació electrònica.

Aquesta opció està pensada per a factures B2B reals a partir del setembre de 2026. Mentrestant, la DGFiP netejarà els registres del període QAS abans que la reforma entri en vigor, de manera que les factures que enviïs durant el pilot no generaran obligacions de compliment. És el millor punt de partida si ja has escollit B2Brouter i vols provar la integració completa amb dades reals de la teva empresa.

Opció B — Staging (recomanat per a avaluació)

Section titled “Opció B — Staging (recomanat per a avaluació)”

Registra’t a app-staging.b2brouter.net per utilitzar l’entorn de proves de B2Brouter, connectat a l’entorn QAS de la DGFiP.

És la millor opció si:

  • Estàs avaluant diverses plataformes abans de decidir-te
  • El teu SIREN/SIRET ja està publicat a l’Annuaire amb una altra PA i activar B2Brouter en producció en transferiria l’entrada
  • Prefereixes no associar l’identificador de la teva empresa amb activitat de proves

L’entorn staging és autoprovisionat: un cop tinguis identificadors de prova, pots començar proves end-to-end en menys de 24 hores.

Validació del SIRET a staging: a l’entorn staging, qualsevol número vàlid de 14 dígits s’accepta com a SIRET sense validar el checksum. Els identificadors ficticis del CSV QAS de Chorus Pro ja estan preregistrats a l’annuaire QAS de la DGFiP i funcionen end-to-end. En producció sí que es valida el format i checksum del SIRET.

Important: la DGFiP no permet SIREN ni SIRET reals al seu entorn QAS. Has d’utilitzar identificadors ficticis de prova. Pots obtenir-los tu mateix mitjançant el portal QAS de Chorus Pro (gratuït, procés d’uns 5 minuts) o demanar-ne un conjunt preassignat obrint un ticket de suport a l’app de staging.

Un compte per SIREN: B2Brouter crea un compte per SIREN i la clau del VAT number es deriva del SIREN. Si proporciones un SIRET, se n’extreu el SIREN. Dos SIRET diferents de la mateixa empresa (mateix SIREN) es resolen com un mateix compte. Si la teva empresa opera des de diversos establiments (SIRET diferents), aquests es modelen com a unitats organitzatives dins del mateix compte de B2Brouter, no com a comptes separats. Contacta amb Support si necessites configurar facturació multiestabliment. Tingues-ho present quan seleccionis files del CSV: tria SIRET amb SIREN diferents (els primers 9 dígits) per a cada empresa independent que vulguis provar.

Obtenir identificadors de prova via Chorus Pro QAS

Section titled “Obtenir identificadors de prova via Chorus Pro QAS”

El portal Chorus Pro QAS et permet generar un “Matelas de données” (joc de dades), és a dir, un fitxer CSV amb identificadors ficticis SIREN/SIRET preregistrats a l’entorn de proves de la DGFiP. Segueix aquests passos:

  1. Ves a qualif.chorus-pro.gouv.fr → pestanya EntrepriseCréer mon compte.
    • Pots utilitzar una adreça de correu temporal, com ara temp-mail.io.
    • Pots posar qualsevol nom; aquest compte només serveix per obtenir identificadors de prova.
  2. Revisa la teva safata d’entrada per trobar el correu “Initialisation de mot de passe Chorus Pro” i defineix la teva contrasenya. L’enllaç és vàlid durant 60 minuts.
  3. Inicia sessió → ves a DomainesMatelas de données → fes clic a Générer un matelas de données i confirma.
  4. Ves a Consultation du matelas de données. Espera fins que tots dos estats mostrin “Disponible”:
    • Statut pour Chorus Pro: Disponible
    • Statut pour l’annuaire de facturation PPF: Disponible
    • La generació acostuma a trigar pocs minuts. Refresca la pàgina per comprovar-ho.
  5. Fes clic a “Générer et télécharger le fichier CSV du matelas structures et utilisateurs” per descarregar els teus identificadors de prova.

El CSV conté diversos números ficticis SIREN/SIRET en files etiquetades com “Privé” i “Public”. Utilitza només les files de la secció “Privé” per als teus comptes de prova. Les entitats del sector públic (SIREN 'Public') són rebutjades per l’annuaire QAS de la DGFiP; si intentes activar l’e-Reporting en un compte del sector públic rebràs un HTTP 422. És el comportament correcte: les entitats públiques utilitzen Chorus Pro directament, no una PA.

Utilitza un SIREN del sector privat per al compte emissor i un altre per al contacte de prova.

Un cop tinguis els identificadors de prova:

  1. Registra’t a app-staging.b2brouter.net i activa el teu compte.
  2. Crea el compte de la teva empresa utilitzant un SIREN del CSV (vegeu Pas 1).
  3. Subscriu-te a un pla eDocExchange. Les subscripcions a staging són simulades i no tenen cost.
  4. Activa els DGFiP Tax Report Settings (vegeu Pas 2).
    • ⚠️ Després d’activar el DGFiP Tax Report Setting, el registre de la teva empresa a l’Annuaire pot trigar fins a 24 hores a propagar-se, tant a staging com a producció. És una limitació de la infraestructura DGFiP, no un retard de B2Brouter. No podràs enviar factures fins l’endemà.
  5. L’endemà, crea un contacte de prova amb un segon SIREN del CSV (vegeu Pas 3).
  6. Envia la teva primera factura (vegeu Emissió de factures).

L’autenticació utilitza una API key estàtica enviada a la capçalera HTTP X-B2B-API-Key. No hi ha cap flux OAuth2: genera la teva API key des de la interfície de B2Brouter a Settings → API Keys. Guarda-la de manera confidencial i no la incloguis mai en codi client-side. A més, estableix X-B2B-API-Version a cada petició.

Base URL: tots els exemples següents utilitzen https://api-staging.b2brouter.net. Per a producció, substitueix-lo per https://api.b2brouter.net.


Pas 1: recupera o crea el compte de la teva empresa

Section titled “Pas 1: recupera o crea el compte de la teva empresa”

Si ja tens un compte de B2Brouter per a la teva empresa, recupera el seu id amb l’endpoint List Accounts i salta’t el pas de creació.

Si encara no l’has creat, utilitza l’endpoint Create Account (camí eDocSync/API) o l’assistent d’onboarding de la interfície web (camí eDocExchange). Tots dos produeixen el mateix resultat.

En crear un compte d’empresa francesa:

  • cin_scheme: "0002" per a SIREN (9 dígits) o "0009" per a SIRET (14 dígits). Utilitza SIRET quan sigui possible; identifica un establiment concret i és el valor preferit pel PPF.
  • cin_value: el SIREN o SIRET de la teva empresa.
  • tin_value: número d’IVA francès en format FR{kk}{siren}, on kk és el checksum de dos dígits. Aquest camp és opcional en la creació del compte: si l’omets, B2Brouter el derivarà automàticament del SIREN quan activis el DGFiP Tax Report Setting. És obligatori per a la facturació DGFiP, però no l’has de calcular tu.
  • country: "fr".

Exemple de petició:

Finestra del terminal
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"
}
}'

Resposta d’exemple:

{
"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 Account - API Reference


Pas 2: activa Tax Report Settings per a DGFiP

Section titled “Pas 2: activa Tax Report Settings per a DGFiP”

Aquest és el pas clau de l’onboarding. Quan crees un Tax Report Setting amb code: "dgfip", B2Brouter:

  1. Registra la teva empresa a l’Annuaire del PPF: el teu SIREN/SIRET passa a ser visible per a qualsevol plataforma de l’ecosistema francès de facturació electrònica.
  2. Crea un transport Peppol 0225: això permet que la teva empresa rebi factures electròniques de qualsevol plataforma francesa connectada a Peppol.

⚠️ Substitució del transport: Si el teu compte ja té un transport Peppol, es substituirà pel nou transport 0225 (FRCTC Electronic Address) durant l’activació. Si el teu SIREN/SIRET estava registrat prèviament amb una altra PA, B2Brouter tancarà l’entrada existent a l’Annuaire i n’obrirà una de nova. Actualitza qualsevol integració existent que faci referència a l’identificador de l’antic transport.

El start_date determina quan comença la declaració fiscal. A partir d’aquesta data, les factures que emetis generaran tax reports i es transmetran al PPF.

Exemple de petició:

Finestra del terminal
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"
}
}'

Resposta d’exemple:

{
"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"
}
}
CampTipusObligatoriDescripció
codestringHa de ser "dgfip".
start_datedateQuan comença la declaració fiscal. Ha de ser avui o una data futura. Si s’omet, el valor per defecte és demà.
type_operationstringTipus d’operació per defecte per a aquesta empresa: "services", "goods" o "mixed". Determina el codi de procés DGFiP (S1/B1/M1, etc.) utilitzat als tax reports. Tria "mixed" si l’empresa ven tant béns com serveis. Aquest ajust es pot modificar després de l’activació.
naf_codestringEl codi NAF/APE de l’empresa. És el codi de secció de 2 dígits assignat per l’INSEE que identifica l’activitat econòmica principal de l’empresa. La DGFiP l’utilitza per classificar la declaració fiscal.
enterprise_sizestringLa categoria de mida de l’empresa definida per l’INSEE. Valors admesos: "micro", "pme", "eti" o "ge".
reason_vat_exemptstringNoCodi per defecte del motiu d’exempció d’IVA per a l’empresa. Per defecte és "VATEX-FR-FRANCHISE".
emailstringNoCorreu de contacte per a notificacions fiscals.
auto_generatebooleanNoSempre true per a DGFiP per obligació legal. No es pot canviar.
auto_sendbooleanNoTransmet automàticament els tax reports al PPF. Per defecte és true.
enabledbooleanNoIndica si la configuració està activa. Per defecte és true. El registre a l’Annuaire només es produeix quan és true.

Si el registre a l’Annuaire falla, per exemple per SIREN/SIRET invàlid o per una caiguda temporal dels serveis DGFiP, la creació del Tax Report Setting es desfà i es retorna un error. Corregeix el problema i torna-ho a provar.

Tax Report Settings - API Reference


Un contacte B2B francès necessita identificadors d’encaminament i identificació fiscal.

CampValorFinalitat
cin_scheme"0009" (SIRET) o "0002" (SIREN)Identificador de l’organització, utilitzat per cercar el destinatari a l’Annuaire
cin_valueSIRET o SIRENIdentificador registrat a l’Annuaire
tin_scheme9957Tax ID, codi ISO 6523 per a l’identificador fiscal francès
tin_valueFR{kk}{siren}Número d’IVA francès que apareix a l’UBL XML
country"fr"Obligatori per a la lògica d’encaminament DGFiP
currency"EUR"Moneda per defecte per a les factures d’aquest contacte
transport_type_code"peppol"Recomanat per garantir l’entrega via xarxa Peppol
document_type_code"xml.ubl.invoice.frcius.v1"Recomanat: format de factura UBL France CIUS

Transport i tipus de document: per a contactes francesos registrats a l’Annuaire, recomanem establir explícitament transport_type_code: "peppol" i document_type_code: "xml.ubl.invoice.frcius.v1". L’esquema PIN dels participants francesos registrats és 0225 (FRCTC Electronic Address). Pots verificar abans si un contacte està registrat a l’Annuaire fent servir el Directory lookup o el Peppol Directory oficial.

Contactes a Bèlgica, Alemanya i altres països de la UE: per a factures B2B a empreses no franceses, utilitza l’esquema nacional corresponent i el country adequat. Si el destinatari té un access point Peppol actiu, B2Brouter encaminarà la factura via Peppol BIS 3.0. Per a qualsevol transacció amb un contacte amb country diferent de "fr", es generarà automàticament Flux 10 d’e-Reporting transfronterer.

Exemple de petició:

Finestra del terminal
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 Contact - API Reference

Opcional: verifica l’encaminament del destinatari (consulta al directori)

Section titled “Opcional: verifica l’encaminament del destinatari (consulta al directori)”

B2Brouter encamina les factures automàticament. Si vols inspeccionar com s’encaminarà un destinatari abans d’enviar, per exemple per confirmar si està registrat a l’Annuaire, utilitza la consulta al directori:

Finestra del terminal
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 Lookup Directory - API Reference

Verificació a l’Annuaire i generació de tax reports

Section titled “Verificació a l’Annuaire i generació de tax reports”

B2Brouter verifica automàticament si els contactes francesos (country: "fr") estan registrats a l’Annuaire de la DGFiP. Aquesta verificació determina el flux de declaració fiscal:

  • Contacte registrat a l’Annuaire (in_dgfip_annuaire: true o encara no verificat): la factura genera un tax report de Flux 1.
  • Contacte NO registrat a l’Annuaire (in_dgfip_annuaire: false): la factura no genera tax report. Això evita enviaments Flux 1 invàlids a destinataris que el PPF no pot encaminar.
  • Contacte encara no verificat (in_dgfip_annuaire: nil): B2Brouter és permissiu; la factura continua i genera tax report. La verificació es fa de manera asíncrona en segon pla.

Si crees un contacte francès i immediatament hi envies una factura, és possible que la verificació de l’Annuaire encara no hagi acabat. És intencionat: B2Brouter no bloqueja la creació de factures mentre la verificació està pendent. Si després resulta que el contacte no està registrat, les futures factures cap a aquest contacte no generaran tax reports Flux 1 fins que el contacte es registri en una PA.

La comprovació de l’Annuaire només s’aplica a contactes francesos domèstics (country: "fr"). Els contactes no francesos sempre segueixen el camí d’e-Reporting Flux 10 independentment de l’estat de l’Annuaire.


Un cop la teva empresa ha completat l’onboarding i el DGFiP Tax Report Setting està activat, la creació de factures funciona mitjançant l’Invoice API estàndard. B2Brouter gestiona automàticament tots els requisits específics de França: generació de tax reports, format UBL/CII/Factur-X i transmissió al PPF via Flux 1.

Utilitza send_after_import: true per crear i transmetre en un sol pas. Estableix-lo a false si vols crear la factura primer i revisar-la abans d’enviar-la; en aquest cas, la factura quedarà en estat new fins que en desencadenis la transmissió amb una crida separada o des de la interfície de B2Brouter.

Facturació seqüencial: l’API processa una factura per petició. En escenaris batch o massius, itera sobre la llista de factures i crida l’endpoint per a cada document. L’API admet peticions concurrents, de manera que pots paral·lelitzar múltiples POSTs.

El cas més habitual: una factura B2B domèstica francesa amb TVA estàndard del 20%.

Finestra del terminal
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" }
]
}
]
}
}'

L’array tax_report_ids de la resposta conté l’ID del tax report generat. Fes-lo servir per seguir el cicle de vida de l’enviament.

POST Invoice - API Reference

Camps específics de França a les factures

Section titled “Camps específics de França a les factures”

Informació de pagament (camps nadius obligatoris)

Section titled “Informació de pagament (camps nadius obligatoris)”

Tres camps de pagament són obligatoris per a les factures electròniques B2B franceses (IssuedInvoice). Proporciona’ls com a camps directes de l’API:

CampCamp DGFiPDescripcióObligatori
remittance_informationPMDReferència de pagament i mencions legalsSí, per a B2B domèstic i transfronterer
payment_method_textPMTCodi de mètode de pagament i detalls d’IBAN/BICSí, per a B2B domèstic i transfronterer
payment_termsAABData de venciment, penalitzacions per retard i condicions de descompteSí, per a B2B domèstic i transfronterer

Si falta algun d’aquests tres camps, la petició retorna HTTP 422 amb errors explícits per a cada camp absent. La factura no es crea.

Les factures B2C (IssuedSimplifiedInvoice) no requereixen aquests camps.

Importació des d’altres formats (UBL, CII, Factur-X): per a aquestes integracions, utilitza el camp extra_info amb etiquetes estructurades:

#PMD# FA-2026-0048 — Exemplar SAS, RCS Paris 123 456 789
#PMT# Credit Transfer, IBAN FR00 0000 0000 0000 0000 0000 000, BIC XXXXFRPP
#AAB# Net 30 jours. Pénalité de retard : 12% annuel.

B2Brouter extreu aquestes etiquetes i les mapeja automàticament als camps nadius corresponents.

Quan una línia té category: "E" (exempta d’IVA), també has de proporcionar un comment amb el codi d’exempció VATEX-FR-CGI261-* aplicable.

⚠️ Bloqueig silenciós: si s’omet comment en una línia de categoria E, la factura es crea però mai no es transmet al PPF. La resposta contindrà un array errors no buit, així que cal revisar-lo fins i tot en respostes exitoses.

Codis d’exempció d’IVA DGFiP

CodiReferència legalCategoriaDescripció
VATEX-FR-FRANCHISEArt. 293 B CGIZFranchise en base de TVA
VATEX-FR-CNWVATENo establert a França
VATEX-FR-AEEAutoliquidació
VATEX-FR-CGI261-1Art. 261-1° CGIECures i serveis mèdics
VATEX-FR-CGI261-2Art. 261-2° CGIEServeis paramèdics
VATEX-FR-CGI261-3Art. 261-3° CGIEEnsenyament escolar, universitari i formació professional

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

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

Les empreses sota el règim franchise en base de TVA operen a tipus zero (categoria Z), no com a exemptes (E). Per a aquestes factures, estableix percent: 0.0, category: "E" i comment: "VATEX-FR-FRANCHISE" a cada línia d’impost; B2Brouter transcodificarà automàticament la categoria a Z.

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

Per emetre una nota de crèdit, estableix is_amend: true i referencia la factura original amb amended_number i amended_date. B2Brouter generarà un UBL CreditNote amb codi de tipus 381 i inclourà la referència de facturació.

Finestra del terminal
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" }
]
}
]
}
}'

El codi de procés determina el flux cadre del PPF. B2Brouter l’assigna automàticament segons type_operation del Tax Report Setting i les característiques de la factura.

Codi de procésTipus d’operacióDescripció
S1ServicesFactura estàndard de serveis
B1GoodsFactura estàndard de béns
M1MixedFactura estàndard d’operacions mixtes
S2ServicesFactura pagada de serveis
B2GoodsFactura pagada de béns
M2MixedFactura pagada d’operacions mixtes
S4ServicesFactura amb bestretes (serveis)
B4GoodsFactura amb bestretes (béns)
M4MixedFactura amb bestretes (mixt)
S7ServicesRectificació d’una factura registrada (serveis)
B7GoodsRectificació d’una factura registrada (béns)
Document Type CodeFormatDescripció
xml.ubl.invoice.frcius.v1UBL XMLFactura Peppol France CIUS (Flux 1 / Annuaire)
xml.cii.cross_industry_invoice.frcius.v1CII XMLFactura France CIUS CII
pdf.a.invoice.with.xml.cii.cross_industry_invoice.facturx.fr.all_profiles.v1Factur-XPDF/A amb CII XML incrustat

Si el teu sistema ja genera factures Factur-X o UBL XML, pots enviar-les directament amb l’endpoint d’importació:

POST /accounts/{id}/invoices/import

Estableix Content-Type a:

  • application/pdf per a Factur-X
  • application/xml per a UBL 2.1 o CII XML independents

EstatDescripció
sendingLa factura s’ha creat i està en cua per transmetre’s al PPF
sentL’XML de la factura s’ha pujat correctament al PPF
registeredEl PPF ha validat i acceptat la factura
acceptedEl comprador ha aprovat la factura
refusedEl comprador ha rebutjat la factura
allegedly_paidEl comprador ha informat la factura com a cobrada
errorS’ha produït un error durant la transmissió o la validació al PPF. El camp errors conté el motiu del rebuig

Configura endpoints de webhook des de la interfície de B2Brouter a Settings → Webhooks. Un cop configurats, B2Brouter enviarà un HTTP POST al teu endpoint cada vegada que la factura arribi a un nou estat.

Invoice Status WebHooks - API Reference

Finestra del terminal
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'

GET Invoice - API Reference

Descarregar el document original de la factura

Section titled “Descarregar el document original de la factura”

Quan una factura arriba a l’estat sent, la resposta de GET /invoices/{id} inclou el camp download_legal_url. Fes-lo servir per descarregar el document de factura que s’ha transmès.

Finestra del terminal
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}'

El tax report segueix el cicle de vida tècnic de l’enviament al PPF. Tant la generació de l’XML com la transmissió al PPF són asíncrones.

Flux 1 — Factures B2B domèstiques

EstatDescripció
newTax report creat i en cua per a transmissió
sentDocument dipositat al PPF via SFTP
acknowledgedEl PPF ha rebut i validat el fitxer
registeredEstat terminal: factura acceptada i registrada per la DGFiP
refusedEstat terminal: rebutjada per la DGFiP
errorEstat terminal: error de transmissió o processament
annulledLa factura ha estat anul·lada després del registre

Flux 10 — Factures B2B transfrontereres i B2C (e-Reporting)

EstatDescripció
newTax report creat i acumulat per al batch diari de ledger
sentLedger dipositat al PPF via SFTP
acknowledgedEl PPF ha rebut el ledger
registeredEstat terminal: ledger acceptat i registrat per la DGFiP
refusedEstat terminal: ledger rebutjat per la DGFiP
errorEstat terminal: error de transmissió o processament

Consulta l’estat utilitzant el tax report ID obtingut a tax_report_ids a la resposta de la factura:

Finestra del terminal
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 Tax Report - API Reference


El Flux 10 cobreix transaccions fora de l’obligació de facturació electrònica B2B domèstica però que igualment s’han d’informar a la DGFiP. B2Brouter gestiona el Flux 10 automàticament.

Vendes a particulars no registrats a l’IVA a França. Utilitza "type": "IssuedSimplifiedInvoice". El contact_id i els camps de pagament no són obligatoris per a factures B2C.

Operacions transfrontereres (B2B intra-UE i extra-UE)

Section titled “Operacions transfrontereres (B2B intra-UE i extra-UE)”

Les vendes o compres amb empreses establertes fora de França s’han d’informar via Flux 10. Utilitza el tipus estàndard IssuedInvoice o ReceivedInvoice i estableix el country de la contraparte a un valor diferent de "fr". B2Brouter detectarà automàticament la naturalesa transfronterera.

B2Brouter agrupa tots els tax reports Flux 10 d’un dia natural en Ledgers enviats al PPF una vegada al dia. Pots identificar-los perquè tenen ledger_id no nul a la resposta del tax report.


Com a empresa francesa registrada a l’Annuaire amb transport Peppol 0225, rebràs automàticament factures electròniques d’altres plataformes franceses i connectades a Peppol.

Actualitzar l’estat d’una factura rebuda

Section titled “Actualitzar l’estat d’una factura rebuda”

Quan rebis una factura, informa’n l’estat al PPF actualitzant l’estat de la factura:

Finestra del terminal
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"}'

Estats de destí vàlids per a factures rebudes: accepted i refused.

Switch invoice state - API Reference