Your first validation
- Open the free validator and try the sample or upload XML, up to 5 MiB.
- Read the verdict and each layer: XML, UBL schema, EN 16931 and Peppol. A service failure is not an invalid invoice.
- Follow a rule explanation where available, fix your source document and validate again.
- Download JSON and an unsigned readable report. Open the report to print or save it as a PDF.
Rule explanations
- BR-CO-10: Line amounts do not add up
The document-level line total must match the sum of the individual line net amounts.
- BR-CO-13: The total before VAT is inconsistent
The total before VAT starts from the line total, subtracts document allowances and adds document charges.
- BR-01: The specification identifier is missing
Invoice and CreditNote documents need a non-empty CustomizationID identifying their specification.
- PEPPOL-EN16931-R004: Check the billing specification identifier
This rule checks the Peppol Billing identifier prefix and rejects a double-colon sequence in the identifier.
- PEPPOL-EN16931-R020: Add the seller electronic address
The seller Party must include an EndpointID. This rule checks its presence; other rules check its scheme and value.
- FW-XML-001: The XML could not be read safely
The document has malformed XML, an unsupported encoding or a prohibited XML construct. No later validation layer can run until this is fixed.
This initial collection covers the failures in our reviewed validation fixtures. Other rules retain their engine finding and identifier; we do not guess at a fix.
Saved results and privacy
Anonymous XML and results are processed transiently. When signed in or using an API key, result JSON and findings are stored for 30 days, and you can delete them sooner. Raw invoice XML is never stored. Downloaded copies stay under your control.
After deletion or expiry, a small operation record retains hashes, ruleset, outcome, timestamps and usage metadata until organisation erasure. This prevents an old retry from running or charging again. Reusing its Idempotency-Key returns 410 result_gone; request a new validation with a new key only when intended.
Use the API
POST XML to /financewolf/v1/einvoices/validate. Authenticated results are listed at /financewolf/v1/einvoices/results; GET or DELETE a result by operation ID. Read requires financewolf:einvoices:read; validation and deletion require financewolf:einvoices:write.
OpenAPI contract - API key and integration examples - Privacy policy
Validation checks the supported structured-document rules. It does not certify legal or tax compliance, establish participant registration, send invoices or provide a UK 2029 compliance guarantee.
