Invoice check
Find the problem before your customer does
An invoice that is rejected two weeks later costs more than one that never went out. This checks the field contract a Peppol receiver enforces, recomputes every total, verifies the payment account and both VAT numbers, and builds the actual UBL document — then tells you exactly what to change.
1 · The invoice
Structured invoice fields, as JSON. This reads invoice data, not documents — there is no OCR here, so a PDF or a scan has to be transcribed first.
Example data.“Jithox BV” and “Acme Trading NV” are a made-up supplier and customer. The two VAT numbers are real Belgian registrations, borrowed only so the register check has something to find — so a signed-in check reports the names the register actually holds for them, not these. The IBAN is the published ISO 13616 specimen for Belgium, not an account anyone can pay. Replace it all with your own invoice.
What this is, and what it is not
It does
- Check every field Peppol BIS Billing 3.0 requires, and build the real UBL document.
- Recompute each line and the document total, and report what does not add up.
- Ask the free EU VIES register whether both VAT numbers are registered.
- Verify the payment account: ISO 13616 structure and ISO 7064 check digits, offline, for 70+ countries. It catches the single mistyped character a format check cannot.
- Prepare a draft message and an XML export you can take away.
It does not
- Read PDFs, scans or photographs. There is no OCR here; bring the fields.
- Send, file, pay or sign anything. Those run in your workspace, each with its own approval.
- Give a legal or tax opinion. These are technical checks and named sources, not advice.
- Turn an unreachable register into a verdict. If VIES cannot answer, the check says unknown — never that the number is good.
- Say a bank account exists, is open, or belongs to the supplier. The IBAN check is arithmetic on the number itself; who owns it is not a question it can answer.
The same check, for your agent
This page calls POST /api/invoice/review. The identical review is published as the MCP tool review_invoice on /api/mcp, listed with its input schema, price and permissions in /mcp.json. A runnable example lives at examples/review-invoice.mjs in the repository.