CFDI40105
El campo FormaPago no contiene el valor "99" (…, MetodoPago PPD).
In English With MetodoPago PPD (paid in instalments or later), FormaPago must be 99 (to be defined): the actual payments go in payment receipts.
Why it fails
- The invoice is paid later, but the software fills FormaPago with the form the customer usually pays with (03, transfer).
How to fix it
Give FormaPago 99 with PPD, and issue a payment receipt (Pagos 2.0) with the real form when the money arrives; or use PUE if the invoice is paid when issued.
What the rule checks
As the rule set's publisher wrote it. The rule runs on every element the context matches, and fails where the test is false; the validator reports the line of that element.
/cfdi:Comprobante
not(@MetodoPago = 'PPD') or not(@FormaPago) or @FormaPago = '99'
Checked with CFDI 4.0