BR-23: what it means and how to fix it

Each invoice line must have a unit of measure code for its quantity.

RuleBR-23
StandardEN 16931-1, the European standard for electronic invoices
SeverityError (the invoice is not conformant)
ConcernsBT-130: Invoiced quantity unit of measure code

How to fix it

Add a UN/ECE Recommendation 20 unit code: C62 (piece), HUR (hour), DAY, KGM, LTR, MTR …

Where the field is in the XML

TermCII (XRechnung-CII, ZUGFeRD, Factur-X)UBL (XRechnung-UBL, Peppol)
BT-130
Invoiced quantity unit of measure code
ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCodecac:InvoiceLine/cbc:InvoicedQuantity/@unitCode

Check your own file for this rule

Up to 5 MB. Read in memory for this one request and not stored.

From your code

curl -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/xml" \
  --data-binary @invoice.xml "https://tools.funwords.eu/einvoice/validate"

The answer lists every broken rule with its number, the field, a message with the figures from your file and the fix. E-invoice API: validate, convert to JSON, and create XRechnung or ZUGFeRD XML from JSON.

Questions

What does BR-23 mean?

Each invoice line must have a unit of measure code for its quantity. It is a rule of EN 16931-1, the European standard for electronic invoices.

How do I fix BR-23?

Add a UN/ECE Recommendation 20 unit code: C62 (piece), HUR (hour), DAY, KGM, LTR, MTR …

Is BR-23 an error or a warning?

An error: a validator reports the invoice as not conformant, and a recipient that validates incoming e-invoices can reject it.

Rule numbers are those of EN 16931-1; the explanation is ours. Not tax or legal advice.