Check the mandate
Look up country and transaction metadata before transformation. The MVP supports Belgium B2B Peppol-style invoices.
Turn existing invoice JSON into country-specific e-invoice workflows: mandate checks, validation, structured transformation, routing, status tracking, and audit evidence. Belgium is implemented first.
POST /v1/invoices/send -> profile: BE_B2B_PEPPOL_MVP -> format: PEPPOL_BIS_BILLING_3_UBL_LIKE -> network: PEPPOL_MOCK STATUS accepted provider_reference MOCK-PEPPOL-9A42F7C13B10 AUDIT invoice_received validation_passed transformed submitted accepted
Three steps from your billing system to a structured e-invoice workflow.
Look up country and transaction metadata before transformation. The MVP supports Belgium B2B Peppol-style invoices.
Validate VAT IDs, buyer routing ID, VAT rates, line totals, tax totals, and payable totals, then generate sandbox UBL-like XML.
Submit through a deterministic mock Peppol provider, track status, and store chronological audit events with payload hashes.
The product promise is not "generate an invoice." It is a reusable workflow for each mandate: know the rule, validate before rejection, transform into the required structure, route to the right network, and keep evidence when finance asks what happened.
PDF and email workflows do not solve structured B2B exchange. Platforms need buyer routing IDs, tax-total validation, delivery status, and evidence without replacing the billing system.
The implemented Belgium MVP validates normalized invoice JSON, transforms valid invoices into sandbox UBL-like XML, submits through a mock Peppol provider, and stores status plus audit hashes.
Snapshot as of May 17, 2026. Country rules need legal review before production. This repository currently implements Belgium only; the other country cards show the product roadmap and why the architecture is valuable beyond one mandate.
Machine-readable codes for missing VAT IDs, invalid VAT rates, routing gaps, and total mismatches.
XML is generated with structured APIs and clearly marked as sandbox output, not certified production UBL.
The mock provider preserves the shape needed for real access point integration later.
Invoices, validation results, transformed XML, submissions, and audit events are persisted with SHA-256 hashes where practical.
FastAPI, Pydantic v2, SQLAlchemy, Alembic, PostgreSQL, Docker Compose, pytest, ruff, mypy, API key auth, request IDs, and OpenAPI docs.
DATA MODEL Invoice InvoiceSubmission ValidationResult AuditEvent CountryProfile SECURITY NOTES X-API-Key required on /v1 VAT IDs masked in logs Payload size checks No secrets in code
Start free in the sandbox. Upgrade when you are ready to integrate the workflow into a real product. Billing and metering are not implemented in this repository yet.
For developers evaluating the workflow locally.
For SaaS teams testing e-invoicing readiness.
For platforms preparing production integration.
For ERP, marketplace, and multi-country platforms.
| Feature | Sandbox | Launch | Growth | Platform |
|---|---|---|---|---|
| Monthly invoice workflows | Demo/local | 5,000 | 25,000 | Custom |
| Belgium B2B MVP profile | Yes | Yes | Yes | Yes |
| UBL-like transform | Yes | Yes | Yes | Yes |
| Mock Peppol submission | Yes | Yes | Yes | Yes |
| Audit trail | Yes | Yes | Yes | Yes |
| Webhook delivery | No | Planned | Planned | Custom |
| Real Peppol provider | No | No | Planning | Custom integration |
| Support | Docs | Priority | Custom |
No. The current version is a sandbox MVP with UBL-like XML and a mock Peppol provider.
ERP systems, accounting SaaS, billing platforms, B2B marketplaces, and cross-border sellers.
The MVP treats PDF as not compliant for the Belgium B2B profile. This is about structured invoice workflows.
The architecture is designed for additional profiles, but Poland KSeF is not implemented in this repository.
Validate invoice JSON, transform it into sandbox UBL-like XML, simulate routing, track status, and store audit evidence.