Skip to main content

Qué es

Cada comprobante que emite la plataforma (payout, payin, devolución, transferencia interna, conversión, retiro o depósito crypto, operación banking, compra con tarjeta) tiene un link público de seguimiento, al estilo de Wise:
Cualquiera que tenga el link puede abrir la página — sin iniciar sesión, sin API key — y ver el estado en vivo de esa transacción con una línea de tiempo paso a paso, el detalle completo del comprobante y la opción de descargar el PDF. El {code} es el mismo código firmado HMAC que ya respalda la verificación de comprobantes (GET /verify/receipts/{code} y el QR impreso en cada PDF). El link es la capacidad: no se puede adivinar ni falsificar, y solo expone esa única transacción. Nunca construyes la URL tú mismo — la plataforma te la entrega:
  1. verify_url en los payloads de comprobantes. Cuando una transacción llega a un estado final, su comprobante incluye verify_url. Con el tracker habilitado, esa URL ahora apunta a https://business.cbpayapp.com/t/{code}.
  2. Emails de comprobante. El correo brandeado que recibe tu cliente lleva el mismo link (botón “Verificar en línea” / seguimiento).
  3. El QR de cada comprobante PDF codifica el mismo código — escanearlo abre el tracker.
Reenvía el link tal cual a tu cliente, a tu mesa de soporte o a tu equipo de finanzas. Todos los que tengan el link ven la misma página. Los comprobantes y los emails siempre llevan el link, pero no necesitas descargar nada para obtenerlo: llama GET /v1/track-link con el kind y el id de la transacción para alimentar un botón “Compartir link” en tu propia UI.
Respuesta 200 OK:
El code es el mismo código firmado con HMAC que se imprime como QR en cada comprobante, así que el link es determinista: llamar el endpoint dos veces para la misma transacción siempre devuelve la misma URL. Quién puede llamarlo. La cuenta dueña de la transacción (API key o sesión de miembro), los admins de la organización y los admins de plataforma — el mismo alcance de lectura que los comprobantes. Una transacción fuera de tu alcance (o un kind desconocido) responde 404 not_found, nunca 403: la existencia nunca se revela. Si falta kind o id, responde 400 invalid_payload.

Qué muestra la página

  • Badge de estado — un estado público y legible (completed, processing, failed) con el detalle de la operación (destinatario, referencia, montos, tasa de cambio).
  • Línea de tiempo — una secuencia de pasos fija por tipo de operación (por ejemplo, un payout: Iniciado → Procesando → En tránsito → Completado). Solo se muestran timestamps reales: el primer paso lleva la hora de creación y el paso terminal alcanzado lleva la última actualización; los pasos intermedios jamás muestran fechas fabricadas.
  • Comprobante PDF — el mismo comprobante brandeado y verificable, generado al vuelo, descargable directamente desde la página.
  • Tu branding — nombre, logo, sitio web y color de acento de tu organización (white-label por diseño).
  • Link al explorador blockchain — para transacciones crypto con hash on-chain, un link al explorador público.
  • Bloque de soporte — “¿Problemas con esta transferencia?” apuntando al sitio web de tu organización.

API JSON pública (construye tu propio tracker)

Los mismos datos que renderiza la página están disponibles como JSON — útil si quieres embeber el seguimiento dentro de tu propio portal en vez de redirigir al nuestro:
Sin autenticación. Respuesta de un payout completado:

Estado público (anti tipping-off)

Los estados internos sensibles se generalizan antes de llegar a la página pública — una operación en revisión de compliance no debe ser distinguible de una que simplemente se está procesando:

Secuencias de la línea de tiempo

La secuencia de pasos es fija por familia de operación — el destinatario siempre ve los mismos pasos para el mismo producto: Mientras la operación avanza, los pasos anteriores al actual quedan complete, el actual in_progress y el resto upcoming. Cuando una operación falla, el paso donde se detuvo queda failed, los anteriores quedan complete y los posteriores upcoming. Cuando se completa, todos los pasos quedan complete.

Endpoint del comprobante PDF

Devuelve el comprobante PDF brandeado (Content-Type: application/pdf, Content-Disposition: attachment), generado al vuelo con el mismo renderer de los endpoints autenticados — incluido el render completo en chino (fuente Noto Sans SC). El endpoint del PDF comparte el mismo rate limit por IP que el JSON.

Privacidad y seguridad

El link es una capacidad: quien tenga el link puede ver la transacción. Compártelo solo con el destinatario previsto, de la misma forma que compartirías el PDF del comprobante.

Idiomas

La página y el PDF son completamente trilingües — inglés, español y chino simplificado:
  • Resolución (cadena pública): ?lang= / ?locale= (un valor inválido se ignora, nunca 400), luego cookie del pagador cbpay_pay_locale (HttpOnly=false, Secure, SameSite=Lax, 30 días), luego la cuenta del comercio, luego el default_locale de la org, luego Accept-Language, luego inglés. La cookie SSR del portal cbpay_lang es otra cookie del front: la API no la lee.
  • La API JSON traduce las etiquetas de fields/amounts en el servidor con el mismo parámetro.
  • El PDF se renderiza completamente en el idioma pedido, chino incluido.

Endpoint legacy de verificación (sin cambios)

GET /platform/v1/verify/receipts/{code} sigue vivo — no hay nada que migrar:
  • Un navegador que lo abre (request con Accept: text/html) recibe un redirect 302 a la página del tracker.
  • Un cliente API recibe el mismo payload JSON de siempre.
Los comprobantes nuevos y los emails de comprobante generan URLs del tracker directamente; los comprobantes emitidos antes de este cambio siguen funcionando para siempre a través del redirect.

Errores

Revisa la referencia de errores para el shape global de errores.

FAQ

No. Los códigos están firmados con HMAC con 80 bits de entropía por transacción, los códigos inválidos son indistinguibles de los válidos-inexistentes (404 uniforme) y el rate limiting por IP bloquea la fuerza bruta.
processing cubre todos los estados transitorios, incluida la revisión interna de compliance. La página pública intencionalmente no distingue estados de revisión — la operación pasará a completed o failed cuando se resuelva.
Nunca. Solo se renderizan timestamps reales: cuándo se creó la transacción y cuándo alcanzó su paso terminal actual. Los pasos intermedios no muestran fecha.
El tracker es la cara pública del mismo código firmado y está habilitado para toda la plataforma. Si prefieres no exponer la página hospedada, simplemente no compartas la URL — el endpoint JSON sigue funcionando igual.

Comprobantes

Cómo se generan los comprobantes, su layout PDF y el QR de verificación.

Errores

Catálogo global de errores y shape de respuesta.
Última modificación el 18 de agosto de 2026