🚀 Lanzamiento v2.3: Activa y desactiva métodos de pago para tu Conekta Checkout desde el Panel, sin tocar tu código. Ver documentación →

Seguimiento de dispersiones

Consulta el estado de tus dispersiones, próximas y pasadas

Una vez que tienes beneficiarios e instrucciones de dispersión configuradas, puedes consultar en cualquier momento qué se va a pagar, qué ya se pagó y en qué estado está cada dispersión.

Conceptos

  • Grupo de dispersión (batch) — todos los pagos que ocurren (o se proyecta que ocurran) en una misma fecha para tu negocio.
  • Dispersión — el pago individual a un beneficiario dentro de un grupo.

Grupos de dispersión (batches)

# Próximos 30 días (proyección)
curl --request GET \
  --url 'https://api.conekta.io/payouts/batches?tab=proximas' \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

# Historial real
curl --request GET \
  --url 'https://api.conekta.io/payouts/batches?tab=historial' \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

Parámetros de consulta:

ParámetroDescripción
tabproximas (default) — proyecta los próximos 30 días según tus instrucciones activas. historial — grupos ya ejecutados. Sin status explícito, historial muestra los grupos de fechas pasadas en cualquier estado (para que uno atascado en processing siga siendo visible) y los de hoy en adelante solo si ya son completed o failed. Si pasas status explícitamente, ese filtro se aplica tal cual, sin este recorte por fecha.
statusupcoming, scheduled, processing, completed, failed. 422 si el valor no es uno de estos cinco. Para historial, upcoming no aplica y devuelve lista vacía.
scheduled_from / scheduled_toRango de fechas YYYY-MM-DD. 422 si la fecha no es parseable.
page / limitPaginación. Default 1 / 20, máximo 100.

Respuesta 200 OK:

{
  "data": [
    {
      "date": "2026-06-02",
      "status": "upcoming",
      "funding_batch_id": null,
      "beneficiary_count": 3,
      "disbursement_count": 4,
      "total_amount": 2925000,
      "total_fees": 0,
      "is_projection": true
    }
  ],
  "pagination": { "pageIndex": 1, "totalPages": 1, "totalItems": 8, "itemsPerPage": 20, "hasPreviousPage": false, "hasNextPage": false }
}

Valores de status:

ValorSignificado
upcomingEl grupo proyectado más próximo — el siguiente en ejecutarse.
scheduledGrupos proyectados posteriores, o ya creados pero aún no procesados.
processingEl fondeo o la dispersión están en curso — incluye el caso en que ninguna instrucción tuvo saldo suficiente ese día: el grupo queda aquí (no en failed) esperando un fondeo adicional que lo reactive.
completedTodas las dispersiones del grupo se completaron.
failedTodas las dispersiones del grupo terminaron en falla, sin ninguna recuperable pendiente.

total_amount y total_fees están en centavos MXN — a diferencia del amount de una instrucción de dispersión, que se expresa en pesos como string. total_fees refleja la comisión efectivamente cobrada hasta el momento de la consulta — se actualiza a medida que se despachan y cobran las dispersiones del grupo, no es un estimado fijo desde su creación. funding_batch_id es null mientras el grupo sigue siendo una proyección (is_projection: true); se llena una vez que existe un fondeo real para esa fecha.

Detalle de un grupo

curl --request GET \
  --url https://api.conekta.io/payouts/batches/2026-06-02 \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

Incluye el arreglo disbursements con cada pago individual del grupo (real o proyectado) y el beneficiario y la instrucción asociados:

{
  "date": "2026-06-02",
  "status": "upcoming",
  "funding_batch_id": null,
  "total_amount": 2925000,
  "total_fees": 0,
  "is_projection": true,
  "disbursements": [
    {
      "id": null,
      "status": "pending",
      "amount": 1250000,
      "fee_charged": 0,
      "is_projection": true,
      "payee": { "id": "payee_abc123", "name": "Mkt Solutions SA", "alias": "mkt-solutions" },
      "rule": { "id": "payout_rule_xyz789", "rule_type": "recurrent", "frequency": "monthly", "name": "Nómina mensual" }
    }
  ]
}

Si la fecha es futura y ninguna instrucción activa proyecta ejecución ese día, la respuesta es 404.

Dispersiones

Todas las dispersiones del negocio

curl --request GET \
  --url 'https://api.conekta.io/payouts/disbursements?status=completed' \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

Parámetros de consulta:

ParámetroDescripción
statuspending, processing, completed, failed. Uno o varios separados por coma. 422 si algún valor no es válido.
rule_typeone_time, scheduled, recurrent. Uno o varios separados por coma. 422 si algún valor no es válido.
created_from / created_toRango de fechas YYYY-MM-DD.
page / limitPaginación. Default 1 / 20, máximo 100.

Cada elemento incluye el beneficiario embebido:

{
  "id": "external_payout_transaction_31A4VsoUJ7ddQ6s9y",
  "status": "completed",
  "amount": 150000,
  "fee_charged": 450,
  "created_at": 1780502641,
  "executed_at": 1780243439,
  "settled_at": 1780243479,
  "tracking_key": "STP1234567890123456",
  "failure_reason": null,
  "rule": { "id": "6a188130ff51790001e27a00", "rule_type": "recurrent", "frequency": "monthly", "name": "Nómina mensual" },
  "payee": { "id": "payee_317roDjGQMta9DYVs", "name": "Juan Pérez García", "alias": "proveedor-norte" }
}

Historial de dispersiones de un beneficiario

curl --request GET \
  --url 'https://api.conekta.io/payouts/payees/PAYEE_ID/disbursements' \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

Acepta los mismos filtros (status, rule_type, created_from, created_to, page, limit). A diferencia del endpoint anterior, no incluye el objeto payee (ya lo tienes si estás consultando por PAYEE_ID).

Detalle de una dispersión

curl --request GET \
  --url 'https://api.conekta.io/payouts/payees/PAYEE_ID/disbursements/external_payout_transaction_xxxxxxxx' \
  --header 'Accept: application/vnd.conekta-v2.3.0+json' \
  --header 'Authorization: Bearer key_ZLy4TfHN2wM9pXqRkD8jV3sB'

Campos de una dispersión:

CampoDescripción
statuspending, processing, completed, failed.
amountMonto en centavos MXN.
fee_chargedComisión cobrada, en centavos MXN.
executed_atMomento en que se envió la instrucción. null si aún no se ha ejecutado.
settled_atMomento en que SPEI confirmó la liquidación final. null hasta entonces.
tracking_keyClave de rastreo SPEI. Se llena al recibir la confirmación de liquidación — null hasta entonces.
failure_reasonMotivo de falla, cuando aplica. null si no falló.
ruleLa instrucción de dispersión que la generó. null si la instrucción fue eliminada.

Errores:

CódigoMotivo
404 Not FoundEl external_payout_transaction_xxxxxxxx no existe, no pertenece al PAYEE_ID indicado, o no pertenece a tu negocio.

Notificaciones

Agrega un Webhook a tu cuenta para recibir actualizaciones de estado de tus dispersiones y beneficiarios sin tener que hacer polling.

Eventos de una dispersión:

EventoCuándo se dispara
payout.createdAl crear la ExternalPayoutTransaction — tanto si se va a fondear hoy como si queda pendiente esperando saldo.
payout.in_transitJusto antes de enviar la instrucción a la red SPEI.
payout.paid_outCuando el banco confirma la liquidación final.
payout.failedCuando el banco rechaza o revierte la dispersión, o cuando falla por saldo insuficiente u otro error de ejecución.
payout.retryingCuando una dispersión que había fallado por saldo insuficiente se reintenta tras un fondeo adicional.

Eventos de un beneficiario:

EventoCuándo se dispara
payee.payout_method.createdAl crear un beneficiario.
payee.payout_method.updatedAl editar metadata, cambiar validation_status, o cuando termina la validación automática de cuenta (resultado real, no la respuesta inmediata del POST).
payee.payout_method.deletedAl eliminar un beneficiario.

Consulta Eventos de Conekta para el catálogo completo y el formato general del payload de cada tipo.

Importante

Verifica siempre la firma de cada notificación antes de actuar sobre ella — ver Verificar firmas de Webhooks. Un webhook de dispersiones sin verificar puede ser falsificado por un tercero para simular que un pago falló o se completó.

Related


Did this page help you?