France E-Invoice Validator API - Factur-X, UBL & CII avatar

France E-Invoice Validator API - Factur-X, UBL & CII

Pricing

from $4.00 / 1,000 invoice validateds

Go to Apify Store
France E-Invoice Validator API - Factur-X, UBL & CII

France E-Invoice Validator API - Factur-X, UBL & CII

Validate French UBL, CII and Factur-X invoices against pinned France_RFE 1.4.0.02, EN 16931 and EXTENDED-CTC-FR rules, offline, in one batch. Optional batch compliance report (JSON, HTML, text) for the 1 September 2026 e-invoicing mandate, before PDP / PA or Chorus Pro submission.

Pricing

from $4.00 / 1,000 invoice validateds

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

0

Monthly active users

7 days ago

Last modified

Share

France_RFE EN 16931 Factur-X Rules Compliance report

Technical validation only. ACCEPTED means the submitted invoice passed the pinned offline checks described below. It does not establish legal or tax validity, issuer authenticity, approved-platform acceptance, successful transmission, or recipient acceptance.

France e-invoice validator (facture electronique) for the French B2B e-invoicing reform: validate UBL 2.1, UN/CEFACT CII D22B, and Factur-X 1.09 invoices against the pinned FNFE-MPE France_RFE 1.4.0.02 rules, EN 16931, and EXTENDED-CTC-FR profiles - offline, in one batch API call, before you hand them to a PDP / PA platform or Chorus Pro. Every evaluated document receives a deterministic result, structured findings with rule IDs, the input SHA-256, and the exact rule versions used. Optionally, the run ends with a batch compliance report (JSON, HTML, text) that tells you which invoices are ready and which rules block the rest.

Since 1 September 2026 every VAT-registered business in France must be able to receive electronic invoices, and large and mid-sized companies must issue them; SMEs and micro-enterprises follow on 1 September 2027. This Actor is the technical preflight for that calendar: it checks the files, not the legal obligation (see the mandate note in the compliance report).

Run the live Actor

What you can build with it

✅ 1. A pre-submission gate in your invoicing flow

Call the Actor from your ERP, accounting stack, Make, n8n, or an AI agent with the invoices of the day. Send ACCEPTED documents to your platform; hold REJECTED ones with their rule IDs and locations for the team that owns the data. One malformed file never blocks the batch.

{
"documents": [
{ "documentId": "INV-2026-0912", "url": "https://files.example.com/inv-2026-0912.xml" },
{ "documentId": "INV-2026-0913", "base64": "<base64 Factur-X PDF>" }
],
"resultDetail": "FINDINGS",
"includeComplianceReport": true
}

📋 2. A mandate readiness check for a whole batch

Upload up to 100 invoices (20 of them Factur-X PDF/A-3) and switch on includeComplianceReport. The report answers the questions a finance lead or an expert-comptable actually asks: how many are ready, which rules fail most often, what to fix first - with the French 2026-2027 calendar attached for context.

🧾 3. Factur-X PDF/A-3 quality assurance

Hybrid PDFs are checked with veraPDF for PDF/A-3 conformance, the embedded XML is extracted safely, attachment and XMP consistency are verified, then the Factur-X and France_RFE rules run. Optional raw reports (storePdfaReport, storeExtractedInvoiceXml) stay off unless you ask for them.

🤝 4. Supplier and client onboarding audits

Agencies, accounting firms, and platform integrators validate a supplier's sample invoices once, forward the HTML compliance report, and onboard only when the sample is clean. Stable documentId values keep the results traceable in your own system.

Batch compliance report

Set includeComplianceReport: true and the run writes three records to its key-value store once at least one document was evaluated:

RecordContent
COMPLIANCE_REPORTJSON: summary (requested, evaluated, accepted, rejected, readiness rate, by format and profile), one entry per document with readiness (READY_FOR_SUBMISSION_PREFLIGHT, NEEDS_FIXES, NOT_EVALUATED), severity counts, top findings and error code; rule breakdown across the batch (documents and occurrences per rule, sorted by severity); next steps; mandate calendar; pinned versions
COMPLIANCE_REPORT.htmlPrintable, script-free page of the same content, ready to forward
COMPLIANCE_REPORT.txtPlain-text digest for email, Slack, or ticketing

The report is built only from the delivered result rows; it does not re-read the invoices. Findings quoted in it can contain offending invoice values, so treat it like the dataset itself. OUTPUT.complianceReport records whether the report was stored and how it was billed.

Pricing and cost examples

Pay-per-event. Prices below are the FREE-tier rates effective 16 September 2026 (until 15 September 2026 the live price is $0.004 per evaluated invoice with no start fee). Paid Apify plans get automatic tier discounts of up to 30%.

EventPriceNotes
✅ Invoice evaluated (invoice-validated)$0.01Once per ACCEPTED or REJECTED result; NOT_EVALUATED is free
📋 Compliance report (compliance-report)$0.25Once per run when requested; priced from 16 September 2026, included free until then
▶️ Actor start$0.02 per GBOnce per run; the default 1.5 GB run bills two start events ($0.04)

Worked examples at the 16 September prices:

  • Three invoices before sending, no report: ≈ $0.07
  • Daily batch of 25 invoices with the compliance report: ≈ $0.54 per run → ≈ $12 per month on working days
  • Full 100-invoice onboarding audit with the report: ≈ $1.29

The Actor reads the live price from the Store at run time and records it in OUTPUT.billing; it refuses to run only if the price is outside a plausible range.

Supported routes

InputProfilesRequired checks
UBL 2.1 InvoiceEN 16931, EXTENDED-CTC-FRUBL XSD, EN 16931 or EXTENDED-CTC-FR profile rules, French BR-FR rules
UBL 2.1 CreditNoteEN 16931, EXTENDED-CTC-FRUBL XSD, EN 16931 or EXTENDED-CTC-FR profile rules, French BR-FR rules
CII D22B XMLEN 16931, EXTENDED-CTC-FRUN/CEFACT CII XSD, profile rules, French BR-FR rules
Factur-X XMLEN16931, EXTENDEDCII or Factur-X profile XSD, profile rules, French BR-FR rules
Factur-X PDF/A-3EN16931, EXTENDEDveraPDF PDF/A-3, safe embedded XML extraction, attachment and XMP consistency, Factur-X checks, then France_RFE checks

The active business-rule package is the FNFE-MPE France_RFE v1.4.0.02 release for the French reform effective 1 September 2026. The production image does not download rules at runtime.

For Factur-X PDF only, the attachment relationship accepts Data, Alternative, and the Source value used by the official France_RFE examples. Source is enabled only for the Factur-X XMP namespace, the canonical factur-x.xml filename, and supported EN16931 or EXTENDED profiles. Other relationship values remain rejected.

Quick start

The default input uses a public fixture pinned to an immutable commit:

{
"documents": [
{
"documentId": "france-en16931-ubl-sample",
"fileName": "ubl-21-en16931.xml",
"url": "https://raw.githubusercontent.com/akretion/factur-x/5edb9af9186e5f06f446372688e6fdbbd0b790d3/tests/fixtures/xml/ubl-21-en16931.xml"
}
],
"resultDetail": "FINDINGS",
"maxFindingsPerDocument": 100,
"storeXmlReport": false,
"storeHtmlReport": false,
"storePdfaReport": false,
"storeExtractedInvoiceXml": false
}

Send each document through exactly one source field:

  • url: public or signed HTTPS URL
  • xml: inline XML
  • base64: base64 XML or PDF
  • console file upload
  • a record in a customer-selected Apify key-value store

The input and output schemas are agent-readable and work with the Apify API, MCP clients, Make, n8n, webhooks, and standard SDKs.

Result contract

One dataset item is returned for every submitted entry. A technically rejected invoice is a completed evaluation, not a processing failure.

ProcessingConformanceMeaninginvoice-validated event
SUCCEEDEDACCEPTEDEvery required pinned technical layer passedCharged
SUCCEEDEDREJECTEDThe invoice was evaluated and one or more required rules failedCharged
FAILEDNOT_EVALUATEDA source, format, engine, timeout, or safety failure prevented a decisionNot charged

The common family schema includes:

  • processingStatus
  • conformanceStatus
  • validationScope
  • externalStateStatus
  • rulesetEffectiveAt
  • validationFamily
  • syntax
  • profile
  • scenario
  • versions
  • counts
  • findings
  • sha256
  • error

Each finding includes a severity, validation stage, rule ID, message, and location when the upstream report provides one. previewConformanceStatus remains NOT_EVALUATED until a future France_RFE package is deliberately added as a separate preview ruleset.

externalStateStatus is always NOT_EVALUATED_EXTERNAL_STATE because approved-platform, transmission, registry, delivery, and recipient state are outside offline preflight.

Real run examples

These compact examples are taken from a real three-document Actor run.

Pricing

See "Pricing and cost examples" at the top of this page. In short: one invoice-validated event per ACCEPTED or REJECTED result, NOT_EVALUATED is free, dataset delivery never adds a second charge, and the optional compliance-report event is billed once per run when requested. One malformed or unavailable source does not kill the remaining batch.

Optional reports

All optional records are off by default:

  • storeXmlReport: normalized active-rule report
  • storeHtmlReport: script-free human-readable report
  • storePdfaReport: sanitized veraPDF report for a Factur-X PDF
  • storeExtractedInvoiceXml: complete XML extracted from a Factur-X PDF

Reports can contain invoice values and follow the retention settings of the customer's Apify account.

Security and limits

  • Validation runs locally inside the Actor container.
  • No invoice is sent to a third-party validation service.
  • HTTPS downloads block private, local, reserved, and cloud metadata targets.
  • DTDs, entities, and external XML resources are blocked.
  • XML Schema parsing disables network resolution.
  • Java validation stages use bounded heap, timeouts, and bounded reports.
  • PDF parsing runs in an isolated process with CPU, memory, file, and descriptor limits.
  • Raw invoice content is not copied to the output dataset or application logs.
  • Each XML is limited to 5 MiB.
  • Each PDF is limited to 20 MiB and 100 pages.
  • A run can evaluate up to 100 documents, including at most 20 PDFs and 100 MiB total input.
  • Finding fields and the total returned findings payload are bounded.

Validation findings can quote an offending invoice value. Treat results and optional reports as sensitive accounting data.

Pinned stack

ComponentVersion or identity
France_RFEv1.4.0.02
France_RFE commite9520ce398cc99bed4bab493773a494af8ca5aff
France_RFE tag archive SHA-2565d30054c99d970457ca50c89ce895770cae695f5fe8d73750433079f9f1ec3a1
XP Z12-012 profile generation1.4
EN 16931 Schematron1.3.16
UBL2.1
UN/CEFACT CIID22B
Factur-X1.09
Factur-X EXTENDED schema patch1.09.2
Mustangproject2.24.0
SaxonJ-HE in Mustangproject12.8
veraPDF1.30.2

Docker builds verify every downloaded archive or executable against a fixed SHA-256. Every executed XSD and XSLT also has its own SHA-256 in the manifest and is verified again before use. A mismatch stops validation.

Release gates

The release fixture runner downloads the immutable France_RFE tag archive, verifies its SHA-256, and extracts official FNFE examples only inside a temporary test directory. It checks:

  • official EN 16931 UBL invoice: ACCEPTED
  • official EN 16931 UBL credit note: ACCEPTED
  • official EN 16931 CII invoice: ACCEPTED
  • official EXTENDED-CTC-FR UBL invoice: ACCEPTED
  • official EXTENDED-CTC-FR CII invoice: ACCEPTED
  • official Factur-X EXTENDED XML: ACCEPTED
  • official Factur-X EXTENDED PDF/A-3 using AFRelationship Source: ACCEPTED
  • deliberately corrupted official UBL invoice: REJECTED
  • unsupported Factur-X attachment relationships: REJECTED

The unit suite also verifies root syntax routing, exact specification identifiers, unsupported-profile rejection, source safety, independent batch errors, bounded findings, non-root runtime, and pay-per-event guards.

Official example files are downloaded only for release testing and are not included in the production image.

Current scope

This Actor does not:

  • transmit an invoice through an approved platform
  • call the French public invoicing portal or prove platform acceptance
  • verify tax treatment, legal validity, fraud, duplicates, or payment approval
  • verify digital signatures or issuer identity
  • prove that visible PDF text equals embedded XML values
  • validate invoice lifecycle CDAR messages
  • accept Factur-X MINIMUM, BASIC WL, or BASIC as France reform invoice profiles

Official references

This Actor is also exposed to AI agents through Apify's MCP server (mcp.apify.com): an agent can discover it by search and run it with the same pay-per-event billing, with no separate integration.

Complete live example records (accepted, rejected, and unevaluated) with the dataset schema: sample repository.

E-invoice validator family

Same engine, same output contract, one validator per market: XRechnung & ZUGFeRD (Germany) | Peppol BIS Billing | Poland KSeF FA(3) | Italy FatturaPA Parsing: ZUGFeRD & Factur-X PDF to JSON parser