Skip to main content
POST
Register a payment of PPD invoices and stamp its Complemento de Pago (CFDI tipo P)

Authorizations

X-API-Key
string
header
required

API Key for authentication (format: sk_...)

Headers

x-timbrix-client
string
required
X-Timbrix-Client
string

Canal de origen del CFDI: web, api, sdk, cli o mcp.

X-Organization-Id
string

Required for Supabase session auth. Ignored when authenticating with an API key (the organization resolves from the key).

Body

application/json
date
string
required

Fecha y hora del pago en la Ciudad de México (sin zona horaria)

Example:

"2026-10-15T12:00:00"

paymentForm
string
required

Forma de pago del catálogo c_FormaPago del SAT (sin 99)

Example:

"03"

documents
object[]
required

Facturas PPD que liquida este pago (1 a 50)

customerId
string

Cliente registrado. Si se omite, el receptor del complemento sale de la primera factura. Si se envía, su RFC debe ser el de todas las facturas.

currency
string

Default: MXN. Debe ser la moneda de las facturas.

Example:

"MXN"

exchange
number

Tipo de cambio a MXN. Obligatorio si currency no es MXN; se ignora con MXN.

Example:

18.5

operationNumber
string

Número o referencia de la operación

Example:

"SPEI-123"

payerBankRfc
string

RFC del banco del que paga

payerAccount
string

Cuenta del que paga

payeeBankRfc
string

RFC del banco que recibe

payeeAccount
string

Cuenta que recibe

series
string

Serie del complemento. Default: P

Example:

"P"

folioNumber
string

Folio del complemento. Si se omite, Timbrix usa el siguiente de la organización.

Example:

"12"

substitutes
string

Folio fiscal (UUID) del complemento de pago que este sustituye (CfdiRelacionados 04). Debe liquidar las mismas facturas; cada una conserva su número de parcialidad. Si el original sigue vigente, cancélalo después con motivo 01.

Example:

"5f0e7c4b-2a8d-4c1e-9b3a-7d6f1e2c3b4a"

idempotencyKey
string

Llave para reintentar sin timbrar dos veces el mismo complemento

Example:

"pago-8421"

Response

id
string
required

Timbrix invoice record ID

Example:

"0f2a1c3e-1a2b-4c3d-9e8f-1234567890ab"

uuid
string
required

Folio fiscal UUID asignado por el SAT vía PAC

Example:

"d3bfbc57-44af-4390-a064-f0afab85e5df"

status
enum<string>
required

Estado fiscal del CFDI registrado en Timbrix: vigente o cancelado. Antes de TIM-243 este campo era siempre "valid". Con una cancelación pendiente (cancellationStatus: pendiente) cuyo plazo de respuesta del receptor ya venció, el SAT pudo haberlo cancelado automáticamente; confírmalo en el portal del SAT.

Available options:
vigente,
cancelado
Example:

"vigente"

cancellationStatus
enum<string> | null
required

Latest cancellation attempt's status, only while the invoice is still vigente. null if never attempted or already cancelado. A pendiente past the receptor's response deadline may already be cancelado at the SAT. en_proceso: the cancellation was sent and its outcome is being confirmed with the SAT; don't treat the CFDI as vigente yet.

Available options:
pendiente,
rechazada,
en_proceso
cancellationDesynced
boolean
required

true when a cancellation was accepted but the invoice status update failed to apply — indicates the invoice may already be cancelled at the SAT even though it still shows vigente here; needs manual reconciliation.

Example:

false

type
enum<string>
required

I = Ingreso, E = Egreso, T = Traslado, P = Pago

Available options:
I,
E,
T,
P
Example:

"I"

series
string
required
Example:

"A"

folioNumber
string
required
Example:

"1"

total
number
required
Example:

116

date
string
required
Example:

"2026-07-30T22:50:00"

xml
string
required

XML del CFDI timbrado (UTF-8)

createdAt
string
required
Example:

"2026-07-30T22:50:03.412Z"

environment
enum<string>
required

Ambiente en el que se timbró el CFDI. Los CFDI de sandbox no tienen validez fiscal ante el SAT.

Available options:
sandbox,
production
Example:

"production"

channel
enum<string> | null
required

Canal de origen declarado por el cliente con el header X-Timbrix-Client (api si no se envió). null para CFDI anteriores a este campo.

Available options:
web,
api,
sdk,
cli,
mcp
Example:

"mcp"

rfcReceptor
string
required

RFC del receptor del CFDI

Example:

"GODE561231GR8"

Relaciones de este CFDI (CfdisRelacionados). Con tipo 04 apunta al CFDI que sustituye.

substitutedBy
object[]
required

CFDI cuya relación 04 apunta a este comprobante (sustitutos emitidos).

paymentMethod
enum<string> | null
required

Método de pago; null en Traslado, Pago y facturas anteriores a este campo.

Available options:
PUE,
PPD
Example:

"PPD"

balance
object | null
required

Saldo pendiente de una factura PPD (total menos complementos de pago vigentes o en timbrado); null en las demás.

Example:

160

payment
object

Solo en complementos de pago (type P): el pago y las facturas que liquida.