# BR-O-01 Factuur met categorie O vereist precies één specificatieregel "Niet onderworpen aan btw"

Een factuur met een factuurregel (BG-25), een korting op documentniveau (BG-20) of een toeslag op documentniveau (BG-21) waarvan de btw-categoriecode (BT-151, BT-95 of BT-102) "Niet onderworpen aan btw" (O) is, moet precies één btw-specificatie (BG-23) bevatten waarvan de btw-categoriecode (BT-118) "Niet onderworpen aan btw" (O) is.

## Probleembeschrijving

> **FOUT**: Btw-categorieregel van EN 16931

## Context en betekenis

Categorie O ("Niet onderworpen aan btw") betreft prestaties buiten de reikwijdte van de btw; deze regel zorgt ervoor dat er precies één O-regel in de btw-specificatie is, zodat het btw-totaal klopt. In de praktijk ontstaat de fout als posten buiten de btw in een E- of Z-regel worden samengevat in plaats van in een O-regel.

## Oplossing

Voeg één enkele cac:TaxTotal/cac:TaxSubtotal (BG-23) toe met cac:TaxCategory/cbc:ID = O die alle niet-aan-btw-onderworpen bedragen samenvat; splits categorie O niet over meerdere regels in de btw-specificatie.

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

## Geldige voorbeelden

- Eén O-regel (BT-151 = O) samengevat door één BG-23-specificatieregel met BT-118 = O

## Ongeldige voorbeelden

- Een O-regel (BT-151 = O) maar geen BG-23-specificatieregel met BT-118 = O

## Codevoorbeelden

### Geldig XML
```
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>O</cbc:ID>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

### Ongeldig XML
```
<cac:InvoiceLine>
  <cac:Item>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>O</cbc:ID>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
</cac:InvoiceLine>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
</cac:TaxTotal>
```

## Betrokken velden

- [BG-23 Btw-specificatie](/resources/xrechnung/bt-116-vat-category-taxable-amount)
- [BT-118 Btw-categoriecode](/resources/xrechnung/bt-118-vat-category-code)
- [BT-151 Btw-categoriecode van het gefactureerde artikel](/resources/xrechnung/bt-151-invoice-line-vat-category-code)

## Gerelateerde regels

- [BR-O-08](/resources/kosit-validator-errors/br-o-08-not-subject-taxable-amount-sum)
- [BR-O-11](/resources/kosit-validator-errors/br-o-11-forbids-other-vat-breakdowns)
- [BR-CO-18](/resources/kosit-validator-errors/br-co-18-vat-breakdown-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.
