einvoice / EN 16931 / XRechnung rule reference
BR-DE-1
So beheben Sie den Fehler
Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.
Deutsche Fassung: Amtlicher KoSIT-Text (official KoSIT assert text).
An invoice must contain PAYMENT INSTRUCTIONS (BG-16).
- Requires
- An invoice must contain PAYMENT INSTRUCTIONS (BG-16).
- Business terms
BG-16- Syntax
- Binds the UBL-2.1 Invoice / CreditNote syntax and the UN/CEFACT-CII syntax
- Location (UBL-2.1 path)
cac:PaymentMeans- Fix (Deutsch)
- Ergänzen Sie das erforderliche Element bei `cac:PaymentMeans`: Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.
- Fix
- Add the required element at `cac:PaymentMeans`: An invoice must contain PAYMENT INSTRUCTIONS (BG-16).
- Severity
- fatal
- Provenance source
xrechnung-ubl- Provenance assert
Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.
The Location above is a UBL-2.1 path, and no UN/CEFACT-CII path for this rule is published here; Fix and Fix (Deutsch), verbatim from remediation_catalog.json and not reworded here; the UN/CEFACT-CII binding of this rule is differentially proven against the official KoSIT XRechnung 2.5.0 (XRechnung 3.0.2) Schematron.
Korrektur prüfen: Laden Sie die geänderte Rechnung in den Browser-Validator unter /einvoice/validate/ — er führt dieselbe Engine lokal im Browser aus, ohne Upload, und meldet BR-DE-1 nicht mehr, sobald die Korrektur greift.
Where to check the fix: paste the corrected invoice into the browser validator at /einvoice/validate/ — it runs this same engine locally in your browser, with no upload, and stops reporting BR-DE-1 once the edit lands.
The same invoice, failing and fixed
Neither block below is hand-written. Both are cut verbatim from a vendored KoSIT test instance — one this engine already grades clean under --profile xrechnung — at the element this rule's own Schematron context names. The failing variant is that element with one mechanical change, spliced back into the whole instance and re-graded: it is published only because the engine reported BR-DE-1 for the changed document and did not report it for the untouched one. Both official XRechnung syntaxes are shown, because the same rule id is asserted in each: UBL (the KoSIT default) and UN/CEFACT CII (the syntax inside a ZUGFeRD / Factur-X PDF).
UBL — fails
The cac:PaymentMeans element of the vendored UBL instance 01.06_minimal_test_ubl.xml, with exactly one change: the whole cac:PaymentMeans element is deleted from the invoice.
<!-- BR-DE-1: the whole cac:PaymentMeans element (BG-16) is absent here; nothing else in the document was changed -->
UBL — passes
<cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>DE79000000001234567890</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
What the engine reports for the failing UBL invoice
{
"element": "cac:PaymentMeans",
"field": "cac:PaymentMeans",
"fix_hint": "Add the required element at `cac:PaymentMeans`: An invoice must contain PAYMENT INSTRUCTIONS (BG-16).",
"location": "cac:PaymentMeans",
"message": "An invoice (INVOICE) must contain information on PAYMENT INSTRUCTIONS (BG-16).",
"rule": "BR-DE-1",
"severity": "fatal",
"terms": [
"BG-16"
],
"title": "An invoice must contain PAYMENT INSTRUCTIONS (BG-16)."
}
Rule ids reported for the failing document: BR-DE-1. For the corrected document: none. (BR-DE-TMP-32, an information-level finding about the delivery date, is reported for both documents and is not affected by this edit.)
CII — fails
The ram:SpecifiedTradeSettlementPaymentMeans element of the vendored CII instance 01.06_minimal_test_uncefact.xml, with exactly one change: the whole ram:SpecifiedTradeSettlementPaymentMeans element is deleted from the invoice.
<!-- BR-DE-1: the whole ram:SpecifiedTradeSettlementPaymentMeans element (BG-16) is absent here; nothing else in the document was changed -->
CII — passes
<ram:SpecifiedTradeSettlementPaymentMeans>
<!-- BT-81 -->
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<!-- BT-84 -->
<ram:IBANID>DE79000000001234567890</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
</ram:SpecifiedTradeSettlementPaymentMeans>
The CII run reports BR-DE-1 at ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans and, for the corrected document, none — the same rule id, a different syntax and a different element path.
The rule as the vendored Schematron states it
- UBL context
/ubl:Invoice | /cn:CreditNote- UBL assert
cac:PaymentMeans- CII context
/rsm:CrossIndustryInvoice- CII assert
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans- Artifact
corpus/xrechnung-schematron/schematron/ubl/XRechnung-UBL-validation.sch
Reproduce it yourself: put the failing block into 01.06_minimal_test_ubl.xml in place of its cac:PaymentMeans element and run einvoice validate invoice.xml --profile xrechnung --format json, or paste the file into the browser validator, which runs the same engine locally with no upload.
Everything here is free and open source — pick up whatever helps, at your own pace:
- Licensing — free and open source under Apache-2.0 for everyone, including closed-source embedding: use, modify and ship it inside a commercial product with no fee and no license key.
- German remediation (
--lang de) — the German fix for this rule is in the section above; the CLI surfaces it in place of the English message with--lang de. - Quickstart / free on-ramp — the README, a copy-paste CI-gate recipe, and a 5-minute worked walkthrough.