> ## Documentation Index
> Fetch the complete documentation index at: https://developers.tesoria.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagos SPEI y CEP

> Obtén la clave de rastreo y el CEP de cada pago que salió por SPEI desde Tesoria.

Cuando un pago sale por SPEI desde Tesoria, su transacción trae un bloque `spei` con todo lo necesario para identificarlo ante Banxico.

```json theme={null}
"spei": {
  "tracking_key": "TES66FA0E1F2A3B4C0012AB0004A",
  "operation_date": "2026-09-30",
  "sender": { "clabe": "646180000000000001", "bank_code": "90646", "bank_name": "STP", "name": "Mi Empresa SA de CV" },
  "beneficiary": { "clabe": "012180000000000002", "bank_code": "40012", "bank_name": "BBVA MEXICO", "name": "Estacionamientos del Centro SA de CV" },
  "numeric_reference": 300926,
  "cep": { "available": true, "url": "https://www.banxico.org.mx/cep/go?..." }
}
```

* `tracking_key`: la clave de rastreo del SPEI.
* `operation_date`: el día de operación con el que Banxico registra la transferencia.
* `sender` y `beneficiary`: las cuentas **tal como viajó la orden**. Si después cambias la CLABE del contacto, esta transacción sigue diciendo a dónde fue el dinero.
* `cep.url`: el enlace al CEP en Banxico.

Si la transacción no salió por SPEI desde Tesoria (por ejemplo, un cargo que vino en el estado de cuenta), `spei` es `null`.

## Cuándo está el CEP

Banxico publica el CEP **entre 1 y 4 horas después** de que el pago se liquida. Mientras tanto verás `cep.available: false` y `url: null`.

Cuando el CEP queda disponible, la transacción se actualiza (cambia su `updated_at`). Por eso, si sincronizas con `updated_since` (ver [Sincronizar transacciones](/guias/sincronizar-transacciones)), el misma transacción te vuelve a llegar ya con su CEP. No necesitas reintentar por tu cuenta.

## Ejemplo: los pagos SPEI de hoy con CEP

```bash theme={null}
curl "https://api.tesoria.ai/transactions?type=expense&sort=updated_at&updated_since=2026-10-01T00:00:00-06:00" \
  -H "Authorization: Bearer tsr_live_TU_LLAVE"
```

Quédate con los que traen `spei.cep.available: true`.

## Ligar cada pago con lo que mandaste

Si nos mandas cuentas por pagar desde tu sistema, cada transacción dice qué pagó **con tus propios identificadores**, en `payables[].external_ids`. En una sola consulta tienes, por cada pago: tu identificador, la clave de rastreo y el CEP.

```json theme={null}
"payables": [
  { "id": "66fa0e1f2a3b4c0012ab0004", "amount": 6942.5,
    "external_ids": ["1234|2026-09-29 00:00:00|2026-09-29 23:59:59"] }
],
"spei": { "tracking_key": "TES66FA0E1F2A3B4C0012AB0004A", "cep": { "available": true, "url": "…" } }
```

Un pago puede cubrir varios de tus elementos (por ejemplo, varios días del mismo proveedor): por eso es una lista.

La clave de rastreo **no existe** cuando nos mandas la cuenta por pagar: nace cuando el pago sale, y cambia si hay que reintentarlo. Por eso no viene en la respuesta de tu envío; tu `external_id` sí, y con él la encuentras aquí.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.