Invoices and credit notes
Check UBL Invoice and CreditNote XML against the supported Peppol BIS Billing 3 rulesets. Use the free browser tool or send a request from your application.
Financewolf
E-invoice validation
Check UBL invoices and credit notes against EN 16931 and Peppol BIS Billing 3 rules. Find the failure, understand the rule and fix the source document.
No account needed to try it. Raw invoice XML is never stored.
invoice.xml
UBL Invoice / validation completed
BR-CO-10
Line amounts do not add up
The document-level line total must match the sum of the individual line net amounts.
Read the rule explanationDocument validation
One validation result brings the document checks and rule findings together, with the detail you need to take the next step.
Check UBL Invoice and CreditNote XML against the supported Peppol BIS Billing 3 rulesets. Use the free browser tool or send a request from your application.
See XML syntax, UBL schema, EN 16931 and Peppol rule results separately. Distinguish an invalid document from a validation service failure.
Read the rule identifier and finding, then follow a reviewed explanation where available. Fix the source document and validate it again.
Download result JSON and a readable report. Signed-in and API results are saved for 30 days, with the option to delete them sooner.
Your first validation
Try the sample or upload invoice or credit note XML, up to 5 MiB. The free validator works without an account.
Follow the verdict through each validation layer. Open the available rule explanations to understand what needs to change.
Update your source document, rerun validation and download the results. Open the readable report to print or save it as a PDF.
Rule explanations
Start with the rule, follow its meaning and work back to your document. Explanations come from the same reviewed catalogue as the validator.
BR-CO-10
The document-level line total must match the sum of the individual line net amounts.
BR-01
Invoice and CreditNote documents need a non-empty CustomizationID identifying their specification.
PEPPOL-EN16931-R004
This rule checks the Peppol Billing identifier prefix and rejects a double-colon sequence in the identifier.
Other rules retain their engine finding and identifier. Explanations are shown where reviewed guidance is available.
Developer workflow
Send XML over HTTPS and receive structured results. List saved validations, read their findings and delete results through the same API.
Required key scope:financewolf:einvoices:write
curl --request POST 'https://api.ironfang.uk/financewolf/v1/einvoices/validate' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/json' \
--header 'Idempotency-Key: invoice-2026-001' \
--data-binary '@invoice.xml'Content-Type: application/json
{
"operation_id": "019f29a4-3158-7b81-8f64-f1072146de30",
"status": "completed",
"outcome": "valid",
"ruleset": {
"id": "fwrs_example_invoice_2026a"
},
"findings": [],
"findings_summary": {
"returned": 0, "total": 0,
"cap": 1000, "truncated": false
}
}Send your XML file as the request body. The optional Idempotency-Key lets you retry the same request without a second validation or charge. Invalid documents also return 200, with outcome: invalid and their findings.
Required key scope:financewolf:einvoices:read
curl 'https://api.ironfang.uk/financewolf/v1/einvoices/results' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Accept: application/json'Content-Type: application/json
Cache-Control: no-store
{
"results": [
{
"operation_id": "019f29a4-3158-7b81-8f64-f1072146de30",
"outcome": "valid",
"ruleset_id": "fwrs_example_invoice_2026a",
"created_at": "2026-09-02T09:15:04Z",
"expires_at": "2026-10-02T09:15:04Z",
"available": true
}
],
"retention_days": 30
}Returns up to 20 results, newest first. If next_cursor is returned, pass its value as ?before=NEXT_CURSOR to request the next page.
Illustrative responses. Authenticated results are saved for 30 days. Raw XML is never stored.
Questions
Less to operate. More to ship.
Try the sample, understand the findings and bring validation into your workflow.
No account needed for the free validator. Create an account for saved history and API integration.