BR-49: Payment means must state a payment means code (BT-81)
Checks that each cac:PaymentMeans contains cbc:PaymentMeansCode. As executed, the check only runs when the document contains a @name attribute matching '01' followed by five digits, i.e. a standard tax invoice subtype on cbc:InvoiceTypeCode (e.g. name="0100000"); the official text and displayed test do not mention this condition.
How to fix it
Add a UNCL4461 code (see BR-CL-16) inside each cac:PaymentMeans, e.g. <cac:PaymentMeans><cbc:PaymentMeansCode>10</cbc:PaymentMeansCode></cac:PaymentMeans>.
ZATCA's official text
[BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).
Source: ZATCA SDK 3.4.8 · EN 16931 (CEN) rules
Fails when (the condition ZATCA's SDK runs)
boolean(//*[matches(@name, '01\d{5}')]) and not(exists(cbc:PaymentMeansCode))
Related rules
- BR-KSA-16 · Payment means code must be a valid UNTDID 4461 code
- BR-46 · Each VAT breakdown needs a VAT amount (BT-117)
- BR-47 · Each VAT breakdown needs a VAT category code (BT-118)
- BR-48 · Each VAT breakdown needs a VAT rate (BT-119) unless category is O
- BR-52 · Each additional document reference needs an ID (BT-122)
- BR-53 · With a tax currency (BT-6), give the VAT total in it (BT-111)
Validate your invoice against ZATCA's rules
Paste the XML and see every error and warning. It runs in your browser; the invoice goes nowhere.
Validate an invoice or try Matheel