Skip to main content

When to use the payment complement?

When you issue an invoice with payment method PPD (Installment or Deferred Payment), you are indicating that the client will pay later. For each payment you receive, you must issue a Payment Complement.
If the client pays at the time of purchase, use PUE and you do not need a payment complement.

Full flow

1

Issue the invoice with PPD

Use PaymentForm: "99" (to be defined) when you don’t yet know how the client will pay.
2

The client makes the payment

Whether by transfer, check, card, etc.
3

Issue the Payment Complement

Create a CFDI of type P related to the original invoice.
Considerations for the general node of the CFDI:
  • Do not include concepts or the Items node.
  • Do not include PaymentMethod.
  • Do not include PaymentForm.
  • Do not include Currency.
  • CfdiType must be "P" (Payment).
  • In the Receiver node, CfdiUse must be "CP01".

Issue the payment complement

Example using API Web.
Full example
The value NameId: "14" sets the PDF name to “Complemento de pago”.
Facturama identifies an operation by the combination of Folio and Date. To avoid duplicate vouchers, generate both values once when the operation starts and reuse them unchanged on every retry. See Idempotency and retries for more details.

Payment complement elements

string
required
Date and time the beneficiary receives the payment.
string
required
Code of the form in which the payment is made.
string
required
Code of the currency used to make the payment, per the ISO 4217 specification.
number
Exchange rate of the currency on the date the payment was made. Conditional attribute: it is required when Currency is other than MXN.
number
required
Payment amount.
string
Check number, authorization number, reference number, SPEI tracking key, capture line, or any similar reference number that identifies the operation covering the payment.

Extra information

string
RFC of the entity issuing the source account: the operator, the bank, the financial institution, or the electronic wallet issuer. If the entity is foreign, register XEXX010101000.
string
Number of the account the payment was made from.
string
Number of the account where the payment was received.
string
Name of the originating bank.
string
RFC of the entity operating the destination account: the operator, the bank, the financial institution, or the electronic wallet issuer.

Payments in foreign currency

If the payment is in USD or another currency, use Currency and include the exchange rate in ExchangeRate:
string
required
Required attribute that expresses the identifier of the document related to the payment.
number
required
Required attribute that expresses the installment number corresponding to the payment.
string
Optional attribute that specifies the voucher series for the taxpayer’s internal control.
string
Optional attribute that specifies the voucher folio for the taxpayer’s internal control.
string
required
Required attribute that identifies the currency code used in the amounts of the related document.
number
Conditional attribute that expresses the exchange rate for the currency registered in the related document. It is required when the currency of the related document differs from the payment currency.
number
required
Required attribute that expresses the outstanding balance of the previous installment.
number
required
Required attribute that expresses the amount paid for the related document.
number
required
Required attribute that expresses the difference between the previous balance and the payment amount.
string
required
Required attribute that expresses whether the payment of the related document is subject to tax.
object[]