Rule reference

BR-41 The invoice line allowance at lines[0].allowances[0], on line 1 (id "1"), has no usable amount (BT-136): you supplied missing

The invoice line allowance at lines[0].allowances[0], on line 1 (id "1"), has no usable amount (BT-136): you supplied missing. Each BG-27 group must have one, and at line level the consequence is immediate — the line net amount is BT-129 x (BT-146 / BT-149) − Σ BT-136 + Σ BT-141, so an entry with no amount silently contributes nothing and the line total the buyer sees is not the one you meant to send.

This rule is implemented and its error payload below is real, but the long-form write-up — normative text, worked example, divergence note — is not written yet. Everything the library knows about this rule is on this page. Ask and we will prioritise it.

Business term
BT-136
Severity
fatal

What the library returns

The exact object in result.errors when this rule fires. Generated by running @attestwire/en16931, not transcribed:

TeachingError
{
  "rule": "BR-41",
  "field": "BT-136",
  "severity": "fatal",
  "message": "The invoice line allowance at lines[0].allowances[0], on line 1 (id \"1\"), has no usable amount (BT-136): you supplied missing. Each BG-27 group must have one, and at line level the consequence is immediate — the line net amount is BT-129 x (BT-146 / BT-149) − Σ BT-136 + Σ BT-141, so an entry with no amount silently contributes nothing and the line total the buyer sees is not the one you meant to send.",
  "fix": "Set lines[0].allowances[0].amount to a positive number. Line level entries have no VAT category of their own: they inherit the line's, which is why a line discount changes BT-131 rather than appearing in the VAT breakdown on its own account.",
  "example": "\"allowances\": [{ \"amount\": 12.50, \"reason\": \"Damaged goods\" }]",
  "xpath": "/ubl:Invoice/cac:InvoiceLine[1]/cac:AllowanceCharge[1]/cbc:Amount",
  "docsUrl": "https://attestwire.com/rules/BR-41"
}

xpath locates the element in the generated UBL document, which is where a KoSIT or Peppol validator will report the same problem.

A passing value

the shape this field expects
"allowances": [{ "amount": 12.50, "reason": "Damaged goods" }]

The fix

Set lines[0].allowances[0].amount to a positive number. Line level entries have no VAT category of their own: they inherit the line's, which is why a line discount changes BT-131 rather than appearing in the VAT breakdown on its own account.

Arrived from a stack trace? The docsUrl on every error links straight here. Something wrong on this page — tell us.