Counterfoil rule note
Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.
If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.
Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-61/
Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL
Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.
If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) must be present. The message starts with "If" and says "shall be present". It capitalizes "Local credit transfer" and "Non-SEPA international credit transfer". It ends with a period. It does not say "shall be provided" or "shall specify". The context is the payment means. The published test checks that a payee financial account id exists when the payment means code is 30 or 58, and it passes when the code is neither. The code comparisons have spaces around = and !=. The test keeps a single space before the closing parenthesis after the 58 comparison. That single space is not a repeated space. The positive branch calls exists. The other branch does not. It is not a non-blank check.
When the payment means type code is 30 or 58, send a payment account identifier (BT-84) as the payee financial account id.
Illustration of the condition in the official statement. Not an example published by the source.
Fails the stated condition. The payment means code is 30 or 58, and no payee financial account id exists.
Passes the stated condition. The payment means code is 30 or 58 and a payee financial account id exists, or the code is neither 30 nor 58.
Copied from the source. Not reimplemented on this page.
cac:PaymentMeans
(exists(cac:PayeeFinancialAccount/cbc:ID) and ((normalize-space(cbc:PaymentMeansCode) = '30') or (normalize-space(cbc:PaymentMeansCode) = '58') )) or ((normalize-space(cbc:PaymentMeansCode) != '30') and (normalize-space(cbc:PaymentMeansCode) != '58'))
All rule notes · JSON · Markdown · llms.txt · Invoice page · Privacy