InvoiceValidator.eu

NL-R-008

fatalPeppol BIS Billing 3.0profileCIIUBL

For suppliers in the Netherlands, if the customer is in the Netherlands, the payment means code (cac:PaymentMeans/cbc:PaymentMeansCode) MUST be one of 30, 48, 49, 57, 58 or 59

Why it fails

The payment means code is outside the set the Netherlands accepts for domestic invoices.

How to fix it

Use 30 (credit transfer), 48 (card), 49 (direct debit), 57 (standing order), 58 (SEPA credit transfer) or 59 (SEPA direct debit).

What the validator checks

CII — context /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[$supplierCountryIsNL and $customerCountryIsNL]

normalize-space(ram:TypeCode) = '30' or normalize-space(ram:TypeCode) = '48' or normalize-space(ram:TypeCode) = '49' or normalize-space(ram:TypeCode) = '57' or normalize-space(ram:TypeCode) = '58' or normalize-space(ram:TypeCode) = '59'

UBL — context cac:PaymentMeans[$supplierCountryIsNL and $customerCountryIsNL]

normalize-space(cbc:PaymentMeansCode) = '30' or normalize-space(cbc:PaymentMeansCode) = '48' or normalize-space(cbc:PaymentMeansCode) = '49' or normalize-space(cbc:PaymentMeansCode) = '57' or normalize-space(cbc:PaymentMeansCode) = '58' or normalize-space(cbc:PaymentMeansCode) = '59'

Related rules

Part of NL-R — Netherlands.

Check your own invoice against NL-R-008

…or paste the XML instead

Nothing is stored, and the whole invoice is checked, not just this rule. A PDF only works if it is Factur-X / ZUGFeRD — a PDF with the invoice XML inside it.

This is a Peppol BIS Billing 3.0 rule: an invoice can be perfectly valid EN 16931 and still be rejected by it.