Ledgerdroprules

62 checks

Every rule this checker applies

Your invoice came back with a rule code and nothing else. Here is what each one means, in one sentence โ€” and, just as important, where the rule comes from, because that decides who can waive it.

Check an invoice โ†’

Before the list: what a green result does and does not mean

"No violations" has two different meanings, and they are easy to confuse. One is checked and clean. The other is this rulebook does not apply to this file โ€” a Polish KSeF invoice is not an EN 16931 document, so EN 16931 rules say nothing about it. The check page always prints which rulebook it used, for exactly this reason.

This is also a subset, not the complete EN 16931 rule set. What is implemented are the rules whose verdict is unambiguous: required fields, and arithmetic that must add up. Rules that depend on code lists we cannot verify offline are left out rather than guessed โ€” a check that fires on a correct invoice is worse than no check at all.

EN 16931 โ€” the European norm

BR-22
Every line needs an invoiced quantity
BR-23
Every line needs a unit of measure
BR-24
Every line needs a net amount
BR-25
Every line needs an item name
BR-26
Every line needs an item net price
BR-27
An item net price must not be negative
BR-64
Every invoice line needs an item name
BR-AE-05
Reverse-charge line must have rate 0
BR-AE-09
Reverse-charge VAT must be zero
BR-CL-01
Document type code must be from UNTDID 1001
BR-CL-04
Currency must be a three-letter ISO 4217 code
BR-CL-14
Country must be an ISO 3166-1 alpha-2 code
BR-CL-17
VAT category code must be from UNCL5305
BR-CL-18
Line VAT category code must be from UNCL5305
BR-CO-04
Every line needs a VAT category code
BR-CO-09
VAT identifier must start with a country code
BR-CO-10
Line amounts must sum to the line total
BR-CO-13
Total without VAT follows from lines, allowances and charges
BR-CO-14
VAT breakdown must sum to the VAT total
BR-CO-15
Total with VAT is net plus VAT
BR-CO-16
Amount due follows from the total less prepayments
BR-CO-17
VAT per rate is that rate applied to that base, rounded
BR-CO-18
At least one VAT breakdown group
BR-CO-26
Seller must be identifiable (VAT ID or legal registration)
BR-E-05
Exempt line must have rate 0
BR-E-09
Exempt VAT must be zero
BR-E-10
Exempt breakdown must state the reason
BR-G-05
Export line must have rate 0
BR-G-09
Export VAT must be zero
BR-IC-05
Intra-community line must have rate 0
BR-IC-09
Intra-community VAT must be zero
BR-O-05
Out-of-scope line takes no VAT rate at all
BR-O-09
Out-of-scope VAT must be zero
BR-O-11
Out-of-scope cannot be mixed with other VAT categories
BR-S-08
Taxable amount per rate matches the lines at that rate
BR-S-09
VAT per rate is that rate applied to that base
BR-Z-05
Zero-rated line must have rate 0
BR-Z-09
Zero-rated VAT must be zero
BR-Z-10
Zero rated must not state an exemption reason

Factur-X / ZUGFeRD extensions

BR-FXEXT-05
Line subtype must be DETAIL, GROUP or INFORMATION
BR-FXEXT-06
Every line needs a subtype once sub-lines are used
BR-FXEXT-08
A subtotal line must equal the lines beneath it
BR-FXEXT-11
A parent line reference must point at a real line

National rules

AU-ABN
Australian Business Number check digit โ€” Peppol delivers to Australian businesses on this number
BE-KBO
Belgian enterprise number check digit โ€” Belgium identifies companies by it
BR-DE-15
XRechnung needs a Leitweg-ID (BT-10)
BR-DEC-12
Monetary amounts carry at most two decimals
CH-UID
Swiss UID check digit โ€” this is the one number Swiss registers go by
DE-PROFILE
In Germany this profile does not count as an e-invoice (BMF, 15 Oct 2025)
DK-CVR
Danish CVR check digit โ€” a Danish company has only this one number, and Peppol finds the recipient by it
FI-YTUNNUS
Finnish business ID check digit โ€” the VAT number is this number with FI in front
FR-SIREN
SIREN/SIRET check digit โ€” France routes invoices on this number
HR-OIB
Croatian OIB check digit โ€” everything in Croatia hangs on this number
JP-HOUJIN
Japanese corporate number check digit โ€” the qualified invoice issuer number is this number with a T in front
NO-ORGNR
Norwegian organisation number check digit โ€” the VAT number and the Peppol address are both built on it
SE-ORGNR
Swedish organisation number check digit โ€” the VAT number is this number with SE in front and 01 behind

Identifiers and money

IBAN-CHECK
Payee IBAN check digits โ€” a payment sent to a wrong IBAN does not arrive
PEPPOL-ENDPOINT
Peppol delivery address โ€” Peppol routes on this number, so a wrong one means the invoice never arrives
VAT-CHECKSUM
VAT identifier fails its own check digit

Notes, not violations

CCY-RETIRED
Currency code has been withdrawn
FX-PROFILE
Factur-X gateway profile โ€” EN 16931 rules do not apply
PRE-EN16931
This format predates EN 16931 โ€” the EN rules do not apply to it

Try it

Drop one invoice on the check page โ€” free, no account. For a whole folder at once there is the main page: up to 10 invoices per export and 20 a day on the free tier.