BR-49: Payment means must state a payment means code (BT-81)

Explained by Matheel from ZATCA's rule text and the condition SDK 3.4.8 executes · Updated

Warning: accepted with a warningStandard tax invoices (B2B)Fields: BG-16, 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

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