# BR-31 Kortingsbedrag op documentniveau is verplicht

Elke korting op documentniveau (BG-20) moet een kortingsbedrag op documentniveau (BT-92) bevatten.

## Probleembeschrijving

> **FOUT**: Bedrijfsregel van EN 16931 (CEN)

## Context en betekenis

Dit is een kernregel van EN 16931. Een korting op documentniveau (BG-20) verlaagt het factuurtotaal zonder btw (BT-109) en de btw-grondslag; zonder bedrag kan de ontvanger de totalen niet narekenen. In UBL 2.1 is cbc:Amount in cac:AllowanceCharge al schema-verplicht; ontbreekt het, dan meldt de validator eerst een XML-schemafout. BR-31 ziet u vooral in CII, wanneer ram:SpecifiedTradeAllowanceCharge alleen een percentage (ram:CalculationPercent) en geen ram:ActualAmount bevat.

## Oplossing

Voeg cbc:Amount toe aan de cac:AllowanceCharge op documentniveau waar cbc:ChargeIndicator false is (CII: ram:ActualAmount in ram:SpecifiedTradeAllowanceCharge). Is alleen een percentage bekend, bereken het bedrag dan als basisbedrag × percentage ÷ 100.

- [XML valideren](/nl/xrechnung-validator?source=resource&rule=BR-31)
- [Factuur converteren](/nl/pdf-to-xrechnung?source=resource&rule=BR-31)

## Geldige voorbeelden

- BT-92 = 20,00 bij een korting op documentniveau

## Ongeldige voorbeelden

- CII-documentkorting met reden en percentage maar zonder ram:ActualAmount (BT-92); in UBL geeft een cac:AllowanceCharge zonder cbc:Amount al een XML-schemafout

## Codevoorbeelden

### Geldig XML
```
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>2.00</ram:CalculationPercent>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:ActualAmount>20.00</ram:ActualAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
```

### Ongeldig XML
```
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>2.00</ram:CalculationPercent>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
```

## Betrokken velden

- [BT-92 Kortingsbedrag op documentniveau](/resources/xrechnung/bt-92-document-level-allowance-amount)

## Gerelateerde regels

- [BR-32](/resources/kosit-validator-errors/br-32-document-allowance-vat-category-required)
- [BR-33](/resources/kosit-validator-errors/br-33-document-allowance-reason-required)
- [BR-36](/resources/kosit-validator-errors/br-36-document-charge-amount-required)

## Validatietools

- [Officiële KoSIT-validator](https://github.com/itplr-kosit/validator): Draai de officiële KoSIT-validator met de XRechnung-configuratie om EN 16931- en XRechnung-regels te controleren.
- [PDF naar XRechnung converteren](/pdf-to-xrechnung): Vind validatiefouten tijdens de conversie en controleer elke correctie.

## Gerelateerde bronnen

- [Officiële specificatie](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Alle validatiefouten](/resources/kosit-validator-errors): Overzicht van de hier uitgelegde validatieregels uit EN 16931, XRechnung en Peppol.
