Conciliar PayIns en México significa hacer coincidir la Transacción de crédito que produce una colección SPEI en tu Cobre Balance con la entidad o solicitud que liquida — usando metadata.account_reference, un campo obligatorio en toda Transacción spei_credit. Que esa colección también haya involucrado un Movimiento de Dinero primero (Direct Link R2P SPEI) o no (una CLABE permanente vinculada a un Cobre Balance o CLABE Virtual) cambia de dónde proviene ese valor de account_reference, pero no el hecho de que siempre es la llave sobre la que concilias.
Movimientos de Dinero vs. Transacciones#
| Identificador | Prefijo | Se genera cuando | Representa |
|---|
| ID del Movimiento de Dinero | mm_ | Se crea una colección Direct Link R2P SPEI | La intención de cobro y su estado del ciclo de vida |
| ID de la Transacción | trx_ | El PayIn se completa y se acreditan los fondos | El registro contable real que afecta el balance |
Siempre proporciona external_id al crear un Movimiento de Dinero de PayIn de Direct Link. Se retorna en la respuesta y es la forma más simple de hacer coincidir una colección de Cobre con tu factura u orden interna — pero es un campo del Movimiento de Dinero, no de la Transacción resultante. Más abajo se explica cómo se identifica la Transacción en sí.
Esto no aplica a un crédito SPEI vinculado a una CLABE — consulta más abajo. Esos no tienen Movimiento de Dinero ni external_id.
Ejemplo — cómo se desarrolla un PayIn de Direct Link R2P SPEI y su Transacción, paso a paso:1
Se crea el Movimiento de Dinero
Cobre genera una
CLABE dinámica de corta duración para esta solicitud específica (
metadata.virtual_account, con una validez predeterminada de 5 minutos) y se la entrega al pagador.
{
"id": "mm_8pf9xbiJkAdiAO",
"external_id": "ORDER-MX-2026-010",
"type": "direct_link",
"geo": "mex",
"status": {
"state": "initiated",
"code": "",
"description": ""
},
"source_id": "cp_5YFeIDhNkz",
"destination_id": "acc_XI7W2HQYuE",
"currency": "mxn",
"amount": 10000,
"metadata": {
"r2p_rail": "spei",
"virtual_account": "706180301111111111"
},
"created_at": "2025-11-06T16:44:10Z",
"updated_at": "2025-11-06T16:44:10Z"
}
2
El pagador envía la transferencia SPEI a la CLABE dinámica — se aplica la Transacción de crédito
{
"id": "trx_j51T77qTrVj0lH8TAQlq",
"type": "spei_credit",
"account_id": "acc_XI7W2HQYuE",
"amount": 10000,
"previous_balance": 0,
"current_balance": 10000,
"currency": "mxn",
"credit_debit_type": "credit",
"transaction_date": "2025-11-06T16:44:24Z",
"created_at": "2025-11-06T16:44:24Z",
"metadata": {
"account_reference": "706180301111111111",
"sender_account_number": "002180700856249796",
"sender_name": "JOHN,DOE/SMITH",
"reference": "91025",
"tracking_key": "085905789870328253",
"description": "Transferencia interbancaria"
}
}
Las Transacciones spei_credit no tienen ningún campo money_movement_id. El metadata.account_reference de la Transacción (706180301111111111) coincide con el metadata.virtual_account del Movimiento de Dinero — ese es el campo sobre el que haces coincidir ambos.3
El Movimiento de Dinero llega a completed
{
"id": "mm_8pf9xbiJkAdiAO",
"external_id": "ORDER-MX-2026-010",
"type": "direct_link",
"geo": "mex",
"status": {
"state": "completed",
"code": "",
"description": ""
},
"source_id": "cp_5YFeIDhNkz",
"destination_id": "acc_XI7W2HQYuE",
"currency": "mxn",
"amount": 10000,
"metadata": {
"r2p_rail": "spei",
"virtual_account": "706180301111111111"
},
"created_at": "2025-11-06T16:44:10Z",
"updated_at": "2025-11-06T16:44:24Z"
}
Un crédito SPEI vinculado a una CLABE (sin Direct Link) produce exactamente la misma forma de Transacción y también se identifica por account_reference — pero no hay ningún Movimiento de Dinero detrás, y la CLABE es permanente en lugar de generarse por solicitud. Más abajo se explica cómo distinguir ambos casos.
Tipos de Transacción de Crédito en México#
| Tipo de Transacción | Método de cobro | ¿Respaldado por un Movimiento de Dinero? |
|---|
spei_credit | Transferencia SPEI a una CLABE vinculada a un Cobre Balance o CLABE Virtual | No — ver más abajo |
spei_credit | Colección Direct Link R2P SPEI | Sí |
mex_credit | Crédito de Connect Account (reportado por el banco) | Sí |
internal_spei_credit / internal_credit | Transferencia interna entre cuentas alojadas en Cobre | Sí |
Las Transacciones de crédito SPEI llevan la cuenta e identificación del remitente directamente en metadata, lo que hace que los reembolsos en México sean una operación de un solo endpoint — ver más abajo.metadata.account_reference es un campo obligatorio en toda Transacción spei_credit, sin importar si hay un Movimiento de Dinero involucrado o no. Siempre es tu llave de conciliación para este tipo de transacción.
Los créditos SPEI vinculados a una CLABE no crean un Movimiento de Dinero#
Una CLABE vinculada a un Cobre Balance, o una CLABE Virtual, está disponible para recibir transferencias SPEI en cualquier momento — igual que una Cobre Key estática en Colombia, no hay una solicitud iniciada por Cobre que rastrear. Debido a esto, no se crea ningún Movimiento de Dinero: la transferencia simplemente produce una Transacción spei_credit directamente en tu Cobre Balance.Ejemplo — una Transacción spei_credit de una colección SPEI vinculada a una CLABE:{
"id": "trx_h5G3wRz88mAxVe2",
"type": "spei_credit",
"account_id": "acc_6euTJ0ikgi",
"amount": 100,
"previous_balance": 0,
"current_balance": 100,
"currency": "mxn",
"credit_debit_type": "credit",
"transaction_date": "2025-10-09T19:26:13Z",
"created_at": "2025-10-09T19:26:14Z",
"metadata": {
"account_reference": "706180301111111100",
"intended_beneficiary_id": "ND",
"reference": "91025",
"intended_beneficiary_name": "PEXTO MEXICO",
"sender_account_number": "002180700856249796",
"description": "Transferencia interbancaria",
"sender_name": "JOHN,DOE/SMITH",
"tracking_key": "085905789870328253",
"sender_id": "GAAP920820PP7"
}
}
No hay ningún money_movement_id en esta Transacción. metadata.account_reference (706180301111111100 en este ejemplo — la CLABE permanente que recibió los fondos) es tu llave de conciliación. account_id, reference y tracking_key son campos de apoyo útiles, pero account_reference es sobre lo que debes basar tu lógica de coincidencia.
En cambio, una colección Direct Link R2P SPEI sí crea primero un Movimiento de Dinero — es un flujo de solicitud de pago, no una cuenta permanente esperando recibir fondos. Su Transacción spei_credit resultante también se concilia mediante metadata.account_reference, pero ese valor es el virtual_account generado dinámicamente por el propio Movimiento de Dinero (una CLABE de corta duración creada solo para esta solicitud) en lugar de una permanente. Haz coincidir metadata.account_reference de la Transacción con metadata.virtual_account del Movimiento de Dinero para vincular ambos.
Ciclo de Vida del PayIn e Impacto en el Balance#
Para colecciones respaldadas por un Movimiento de Dinero (Direct Link R2P SPEI), una Transacción solo se crea cuando el Movimiento de Dinero llega a completed:| Estado terminal | ¿Se crea una Transacción? | Impacto neto en el balance |
|---|
completed | Sí — 1 crédito (spei_credit) | Positivo (fondos recibidos) |
rejected / failed | No | Ninguno |
Los créditos SPEI vinculados a una CLABE no pasan por este ciclo de vida en absoluto — ver más arriba.
Los Reembolsos También Afectan la Conciliación#
México reembolsa un crédito SPEI a través de un endpoint dedicado: Devolver un Movimiento de Dinero (POST /money_movements_return). Como las Transacciones de crédito SPEI conservan los datos de la cuenta del remitente, Cobre crea automáticamente la contraparte de destino y un nuevo Movimiento de Dinero spei_return, produciendo una Transacción spei_debit en tu Cobre Balance — ambas con metadata.money_movement_id, a diferencia del spei_credit original. Al conciliar un período, no asumas que el impacto en el balance de un PayIn completed es permanente — verifica si existe un spei_debit posterior vinculado a la misma transacción original antes de cerrar el período. Consulta Procesamiento de Reembolsos en México para el flujo completo.Las devoluciones actualmente están limitadas a transacciones spei_credit en los proveedores de cuenta compatibles (comenzando con pr_mex_cobre3, otros próximamente) — consulta la referencia del endpoint para la lista vigente.
Conciliar PayIns en México#
A demanda: Para Direct Link R2P SPEI, consulta Obtener todos los Movimientos de Dinero filtrando por state, external_id, destination_id (tu Cobre Balance), o un rango de fechas, para obtener el metadata.virtual_account del Movimiento de Dinero, y luego cruza con Obtener las Transacciones de una Cuenta filtrando credit_debit_type=credit y metadata.account_reference igual a ese valor. Para créditos SPEI vinculados a una CLABE, consulta las Transacciones directamente y haz coincidir metadata.account_reference contra tu propio mapa de CLABEs emitidas — no hay Movimiento de Dinero que consultar.En bloque: Genera un reporte de Movimientos de Dinero (money_movement_mex_spei_csv_v1 o money_movement_csv_v1 para CSV, money_movement_v1 para JSON) y un reporte de Transacciones (transactions_csv_v1 para CSV, account_transactions_v1 para JSON) mediante Reportes, y filtra las filas exportadas a currency = MXN. Agrupa todas las filas spei_credit por metadata.account_reference — esto funciona de manera uniforme sin importar si la CLABE es permanente o fue generada para una única solicitud de Direct Link. Para las filas de Direct Link específicamente, cruza el metadata.virtual_account del reporte de Movimientos de Dinero para confirmar qué solicitud liquida cada crédito.En tiempo real: Suscríbete a Notificaciones y Suscripciones en lugar de consultar repetidamente. Para Direct Link R2P SPEI, money_movements.status.completed (y .rejected / .failed) se dispara en cuanto cambia el estado. Los créditos SPEI vinculados a una CLABE no tienen un Movimiento de Dinero que emita un evento de estado — usa accounts.balance.credit en su lugar, y haz coincidir el evento usando su metadata.account_reference.La entrega de webhooks es de mejor esfuerzo, no garantizada para siempre — consulta Notificaciones y Suscripciones para conocer la ventana de reintentos. Trata los webhooks como tu señal en tiempo real y las consultas a demanda o los Reportes como el respaldo periódico que captura cualquier cosa que un webhook haya perdido.
Acciones Permitidas en la Conciliación de PayIns en México#
🔍 Consulta — Movimientos de Dinero
🔍 Consulta — Transacciones
Descripción: Consulta PayIns de Direct Link R2P SPEI a demanda por estado, ID externo, Cobre Balance de destino o rango de fechas. No aplica a créditos SPEI vinculados a una CLABE.
Qué esperar después de la acción: Una lista paginada de objetos Movimiento de Dinero con su status actual. Cómo Empezar#
1
Concilia las Transacciones spei_credit por account_reference, siempre
Es el único campo garantizado de estar presente, sin importar si la colección pasó por un Movimiento de Dinero o no.
2
Conoce qué métodos de cobro crean un Movimiento de Dinero
Direct Link R2P SPEI sí lo hace; un crédito SPEI vinculado a una CLABE no. Para Direct Link, account_reference en la Transacción coincide con virtual_account en el Movimiento de Dinero.
3
Siempre proporciona external_id en PayIns de Direct Link
Es consultable mediante el filtro external_id en el Movimiento de Dinero, y es la forma más simple de hacer coincidir una colección con tu orden o factura interna.
4
Suscríbete a los eventos de estado del Movimiento de Dinero en lugar de consultar repetidamente
5
Rastrea los reembolsos como un par spei_return / spei_debit vinculado
Vigila una Transacción spei_debit de seguimiento que haga referencia al crédito de un PayIn previamente completado.
Qué Esperar Después de Usar esta API#
1
Los PayIns de Direct Link completados coinciden uno a uno con una Transacción de crédito
Los PayIns de Direct Link rechazados o fallidos no producen ninguna Transacción que afecte el balance. Los créditos SPEI vinculados a una CLABE se saltan este ciclo de vida por completo.
2
Todo spei_credit se concilia por account_reference
Para Direct Link, ese valor es el virtual_account generado dinámicamente por el Movimiento de Dinero; para una CLABE permanente, es la CLABE misma.
3
Los PayIns reembolsados aparecen como un par spei_return / spei_debit vinculado
La conciliación de un período determinado debe contemplar tanto el crédito original como cualquier débito de reembolso posterior — y ambos lados del reembolso llevan money_movement_id, a diferencia del crédito original.