Payment Receipts (REP / Type P)

Issue a CFDI type P with Complemento de Pago 2.0 to acknowledge receipt of one or more payments against previously issued PPD invoices. Use the same single endpoint as all other invoice types.

POST /v1/issued-invoices

cfdi_use is not sent on the receiver for type P: the REP complement always uses CP01 by SAT rule.


Example

curl -X POST https://api.example.com/v1/issued-invoices \
  -u "$API_KEY:" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "9b1c0e2a-4d3f-4a1b-8c2d-1e2f3a4b5c6d",
    "type":      "P",
    "series":    "P",
    "folio":     "88",
    "issuer": {
      "fiscal_regime":  "601",
      "place_of_issue": "06600"
    },
    "receiver": {
      "rfc":           "EKU9003173C9",
      "name":          "ESCUELA KEMPER URGATE",
      "postal_code":   "06600",
      "fiscal_regime": "601"
    },
    "payments": [
      {
        "paid_at":          "2026-07-01T12:00:00",
        "payment_form":     "03",
        "currency":         "MXN",
        "amount":           8120.00,
        "operation_number": "SPEI-20260701-0001",
        "documents": [
          {
            "uuid":             "B4E2CBF2-E0E3-4AEF-8F97-9C6E77B29C1B",
            "series":           "A",
            "folio":            "1024",
            "currency":         "MXN",
            "installment":      1,
            "previous_balance": 8120.00,
            "amount_paid":      8120.00,
            "outstanding":      0.00,
            "tax_object":       "02",
            "taxes": [
              {
                "type":   "iva",
                "factor": "rate",
                "rate":   0.160000,
                "base":   7000.00,
                "nature": "transfer"
              }
            ]
          }
        ]
      }
    ]
  }'

Response: 201 Created with the same shape as other types. type will be P; payment_form and payment_method will be null at the top level (payment form is per-event in the complement; SAT requires PUE on all REPs and it is not surfaced separately).


Fields for type P

Receiver

Field Type Required Description
receiver object yes Receiver of the payment receipt.
receiver.rfc string yes Receiver RFC, 12–13 characters.
receiver.name string yes Receiver legal name.
receiver.postal_code string yes Receiver tax domicile postal code.
receiver.fiscal_regime string yes Receiver c_RegimenFiscal code.

Payment events (payments[])

Field Type Required Description
payments[].paid_at string yes Payment datetime, format YYYY-MM-DDTHH:MM:SS.
payments[].payment_form string yes c_FormaPago code for this payment event.
payments[].currency string no ISO 4217 currency. Defaults to MXN.
payments[].exchange_rate number conditional Exchange rate to MXN. Required when payments[].currency is not MXN.
payments[].amount number yes Total amount of this payment event. Must be > 0.
payments[].operation_number string no Bank or transfer operation number for reference.
payments[].documents array yes PPD invoices covered by this payment. Minimum 1.

Document fields (payments[].documents[])

Field Type Required Description
documents[].uuid uuid yes SAT UUID of the PPD invoice being settled.
documents[].series string no Series of the original invoice, for reference.
documents[].folio string no Folio of the original invoice, for reference.
documents[].currency string no Currency of the original invoice. Defaults to MXN.
documents[].equivalence number no Exchange equivalence factor between payment and document currencies, when they differ.
documents[].installment integer yes Installment number for this document (NumParcialidad). Starts at 1.
documents[].previous_balance number yes Outstanding balance before this payment (ImpSaldoAnt).
documents[].amount_paid number yes Amount applied to this document (ImpPagado).
documents[].outstanding number yes Remaining balance after this payment (ImpSaldoInsoluto).
documents[].tax_object string yes Tax object indicator. Allowed: 01, 02, 03, 04.
documents[].taxes array no Tax breakdown for the amount paid. Required when tax_object is 02.
documents[].taxes[].type string required with taxes Tax type: iva, isr, or ieps.
documents[].taxes[].factor string required with taxes Tax factor: rate, quota, or exempt.
documents[].taxes[].rate number required with taxes Tax rate as a decimal.
documents[].taxes[].base number required with taxes Tax base amount (Base).
documents[].taxes[].nature string no transfer or retention.

Related pages