Skip to content

Build1 publisher3 min readPublished

France's e-invoicing deadline is really a bill for supplier data nobody verified

Receiving becomes mandatory for VAT-liable French firms on 1 September 2026. The older problem: supplier records carry a SIREN, VAT number and IBAN that nothing has checked against a live authority.

The Engineer · Build desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened

  • On 1 September 2026, receiving an electronic invoice becomes mandatory for every VAT-liable company in France; issuance is phased behind it, with large and mid-size companies from that same date and SMEs and micro-enterprises from 1 September 2027 (art. 91, Loi de finances pour 2024).
  • Belgium's B2B e-invoicing mandate has been live since 1 January 2026.
  • Belgium's mandate started eight months before the French receiving date.
  • According to the Sirenic post on dev.to, the mandate makes a pre-existing gap impossible to ignore: a French supplier record coming out of an ERP, a CRM or a PDF just parsed by an LLM has a SIREN, a VAT number and an IBAN, and the agent is about to send an invoice to or move money towards a legal entity it has never checked.
  • A ceased company keeps a perfectly well-formed, checksum-valid SIREN; nothing in the string indicates it stopped trading.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

France's schedule is fixed: from 1 September 2026, receiving an electronic invoice becomes mandatory for every VAT-liable company in the country, with issuance phased behind it, large and mid-size companies from the same date and SMEs and micro-enterprises from 1 September 2027, under article 91 of the Loi de finances pour 2024 [1]. Belgium's B2B mandate has been live since 1 January 2026, eight months ahead of the French receiving date [2][3].

The format work is the visible part and the smaller part. A post from Sirenic on dev.to makes the more useful point: the mandate does not create a problem so much as remove the excuse for an old one, because a supplier record leaving an ERP, a CRM or an LLM-parsed PDF carries a SIREN, a VAT number and an IBAN that nothing in the pipeline has checked against an authority [4].

Three failure modes sit in that record. A company that stopped trading in March keeps a well-formed, checksum-valid SIREN [5]. An intra-EU VAT number that was valid when someone exported the supplier master may not be valid today, and VIES is the authority whose answer moves [6]. IBAN mod-97 tells you the string is well formed, not that the bank code maps to an institution that exists [7]. Each has a public answer, and per the same post, collecting all three normally means three integrations, two accounts and a SOAP client [8].

Sirenic's answer is one GET on /v1/facturation/dossier at $0.03, returning legal identity and obligation dates, the computed intra-EU VAT number checked live against VIES, an IBAN check against official bank registries, and a verdict [9]. The verdict shape is worth copying whether or not you buy the service: a boolean, pret_a_facturer, plus raisons as a closed list of codes, four blocking (entreprise_cessee, tva_invalide_vies, tva_non_calculable, iban_invalide) and the rest informational (diffusion_partielle, tva_non_verifiable, iban_non_fourni, banque_non_identifiee, preparation_degradee) [10][11]. An agent branches on the code instead of asking a model what a sentence meant [10].

One design decision earns its own paragraph. A VIES outage returns tva_non_verifiable, informational, never a false tva_invalide_vies, on the stated grounds that an API which renders "the tax authority did not answer" as "this VAT number is invalid" will eventually block payment to a supplier who did nothing wrong [12].

A second endpoint, /v1/facture/verifier at $0.02, added on 16 August according to the post, cross-checks the identifiers printed on a received invoice against each other; because the French VAT key is deterministic, it catches a VAT number that is perfectly VIES-valid but belongs to a different company than the SIREN on the invoice, which a plain VIES lookup cannot see [13]. Both calls together cost $0.05 per counterparty [14]; a 10,000-supplier master runs $300 at the dossier price [15].

The commercial mechanics are unusual and carry their own cost. There is no account and no API key: the first call returns 402 with a base64 quote in a PAYMENT-REQUIRED header covering amount, asset, network and expiry, which the caller signs in USDC or EURC on Base and replays with a PAYMENT-SIGNATURE header [16]. Errors are quoted before input validation, so a 400 or 404 costs nothing, which has to be structural because on-chain micro-payments cannot be refunded [17]. Every paid 2xx carries a detached Ed25519 signature over the sha256 digest of the exact bytes returned [18]. In exchange for skipping onboarding, you put a funded wallet key inside the accounts-payable path and your audit trail becomes a signature you verify yourself.

Watch whether the raisons enum stays closed, since adding a code is a breaking change for every agent branching on it; whether receipt-side identifier cross-checking becomes standard before the SME issuance date of 1 September 2027 [1]; and how much of this ERP vendors absorb natively once receiving is compulsory, at which point a per-call fee for three registry lookups is a stopgap rather than a line item.

Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories