Factur-X Validator & Generator (2026 Mandate)
Pricing
from $50.00 / 1,000 invoice validateds
Factur-X Validator & Generator (2026 Mandate)
Validate a Factur-X invoice (PDF/A-3 or bare CII XML) against EN16931 and the French BR-FR business rules, or generate a compliant PDF/A-3 from invoice data. Totals are recalculated server-side and a mismatch is rejected, never silently corrected. Preflight for the 2026 mandate.
Pricing
from $50.00 / 1,000 invoice validateds
Rating
0.0
(0)
Developer
Comall Agency
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Validate or generate Factur-X invoices (PDF/A-3 with an embedded EN16931/CII XML payload) ahead of France's B2B e-invoicing mandate — 1 September 2026 for large and medium companies, 2027 for small businesses.
This Actor is a thin, faithful wrapper around a production validation engine (veraPDF + Saxon under the hood). It does not reimplement any compliance logic, so its results match what that engine already produces in production.
Use cases
- Compliance and finance teams — a real preflight check on outgoing or incoming Factur-X invoices before the deadline, instead of discovering the problem when a customer's system rejects the invoice.
- ERP and invoicing software — validate your generated Factur-X output against EN16931/CII and the French BR-FR rules before shipping it.
- Developers — generate a compliant Factur-X PDF/A-3 from structured invoice data, with server-side total recalculation and internal re-validation before you ever see the file.
What it does
validate — checks an existing PDF or XML invoice against the
Factur-X / EN16931 (CII) rules and the French business rules (BR-FR-*),
and returns a structured compliance report listing errors by rule code.
generate — builds a new, compliant Factur-X PDF from structured
invoice data. Totals are always recalculated server-side from the line
items, and the request is rejected rather than silently corrected if
the totals you send do not match. The generated PDF is re-validated
internally before being returned, so you never receive a non-compliant
document.
Input — validate
{"operation": "validate","fileUrl": "https://example.com/invoice.pdf"}
Use fileUrl or fileBase64 (raw file content, base64-encoded), not
both. The input form ships with a prefilled URL pointing at a real sample
Factur-X invoice — run it as-is to see exactly what a validation report
looks like, then replace it with your own file.
Input — generate
{"operation": "generate","invoiceData": {"numero": "FA-2026-0001","date_emission": "2026-08-26","type_code": "380","devise": "EUR","vendeur": {"nom": "Ma Société SAS","siren_siret": "12345678900012","tva_intracom": "FR12345678900","adresse": { "ligne1": "1 rue Exemple", "code_postal": "75001", "ville": "Paris", "pays": "FR" }},"acheteur": {"nom": "Client SARL","siren_siret": "98765432100019","adresse": { "ligne1": "2 avenue Client", "code_postal": "69001", "ville": "Lyon", "pays": "FR" }},"lignes": [{ "designation": "Prestation de conseil", "quantite": 1, "prix_unitaire_ht": 1000, "taux_tva": 20, "categorie_tva": "S" }],"totaux": { "total_ht": 1000, "total_tva": 200, "total_ttc": 1200 }}}
The totaux block is checked against a server-side recalculation of the
line items. A mismatch returns a TOTALS_MISMATCH rejection instead of a
document — deliberately, because a compliance document built from
inconsistent totals is worse than no document.
Output — validate
{"operation": "validate","ok": true,"result": { "...": "structured compliance report, errors listed by rule code" }}
When the upstream engine returns an error for your file (for example a
file that is too large, or empty), the row instead carries
"ok": false together with httpStatus and the error payload, so you
always get the real reason rather than a fabricated verdict.
Output — generate
{"operation": "generate","ok": true,"pdfKeyValueStoreKey": "invoice-FA-2026-0001.pdf","pdfUrl": "https://api.apify.com/v2/key-value-stores/.../records/invoice-FA-2026-0001.pdf"}
The generated PDF is stored in the run's key-value store under
pdfKeyValueStoreKey, and pdfUrl links straight to it.
Pricing (pay-per-event)
| Event | Price | Charged when |
|---|---|---|
validation | $0.05 | A validation check was performed and returned a real answer — whether the invoice passes or fails. |
generation | $0.08 | A compliant Factur-X PDF was actually produced and returned. |
Charged for a failed check, to be explicit about it: if the engine rejects your file as too large or empty, the validation event is still charged, because the check was genuinely performed on the file you sent. You are paying for the answer, not for a "pass".
Never charged: the upstream service being unreachable, rate-limited or
saturated (those abort the run rather than billing you), and — for
generate — any rejected request where no PDF was produced, including a
totals mismatch.
Limitations — read this before you buy
- Covers the French mandate specifically: EN16931/CII plus the
BR-FR-*business rules. Other countries' e-invoicing formats (FatturaPA, XRechnung profiles beyond CII, Peppol BIS variants) are out of scope. - This Actor calls a live external API it does not run itself, so its availability tracks that service's availability. When that service is down, the run fails loudly and unbilled rather than returning a guess.
- Validation reports what the rules say. It is not tax advice, and passing validation is not a statement about the invoice's commercial or legal correctness.
FAQ
Can I validate an XML file without the PDF wrapper?
Yes — validate accepts both a PDF/A-3 and a bare CII XML file.
What happens if my totals are off by a cent?
generate rejects the request and tells you so, and you are not charged.
Rounding differences between your system and the recalculation are the
most common cause.
Related Actors
- French E-Invoice Partner Resolver — resolve SIRET / SIREN / VAT details for the parties on an invoice.
- EU VAT Number Checker — confirm a customer's VAT number against the official VIES service before you issue a zero-rated invoice.
- IBAN Validator & Formatter — check the payment details carried on the invoice.