02/SaaS · E-invoicing compliance
Nette Factures
France’s 2026–2027 e-invoicing reform, automated for merchants.
- Role
- Product, architecture and full-stack development, solo
- Period
- Sep – Oct 2026
- Status
- In review on the Shopify App Store
Private code — demo on request. The repository is private. I am happy to demo the app on a call or in an interview.
Ask for a demo
- lines of code
- ~70 k
- test files
- 260
- sources supported by the architecture
- 4
- legal archive
- 10 yrs
Context
With the 2026–2027 reform, French businesses must receive and then issue electronic invoices and report their sales data (e-reporting). For a small online merchant, it is one more regulatory project.
The problem
An invoice is a legal document: continuous numbering, amounts exact to the cent, a tamper-proof archive, the EN16931 format. A rounding gap or a hole in the numbering is not a cosmetic bug.
What I did
- Reading the regulation and turning it into testable business rules.
- Architecture of the domain, the persistence layer and the archive.
- Building the Shopify app (in review), the “direct sales” web app and the WooCommerce plugin (not deployed yet).
- Test suite and App Store review preparation.
Architecture & technical choices
- 01
A pure invoicing domain
The core is TypeScript with no I/O at all: EN16931 rules, CII XML serialisation, amounts in integer cents and VAT in basis points. Never floats, and everything is testable in isolation.
- 02
An immutable archive
Every document is frozen as a canonical JSON snapshot, hashed with SHA-256 and chained to the previous one. PostgreSQL triggers forbid any change, and continuous numbering is assigned under a row lock in the same transaction.
- 03
A multi-source architecture
A SourceGateway / SourceFactory interface lets Shopify, WooCommerce, Stripe and manual entry share the same core. After the refactor, the Shopify output stayed byte-for-byte identical.
- 04
Factur-X end to end
PDF/A-3 rendered with Gotenberg, embedded EN16931 XML, B2B transmission through an accredited platform, fingerprint checked on every download. The WooCommerce plugin pairs through an HMAC signature, revised after two security reviews.
Highlights
- Strict import validation: a file goes through entirely or not at all.
- E-reporting prepared period by period according to the VAT regime.
- About 220 commits.
Stack
- TypeScript
- React 18
- React Router 7
- Shopify App Bridge
- Polaris
- Shopify UI extensions
- Prisma
- PostgreSQL (triggers, séquences)
- pg-boss
- Zod
- Gotenberg
- Factur-X / CII
- Stripe API
- WooCommerce (PHP)
- Vitest
- Docker
- Caddy
- S3 Object Lock
Gallery (10)
Screenshots taken from demo stores, with fictitious data. Select an image to enlarge it.