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:{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.
De dónde sale el link
Nunca construyes la URL tú mismo — la plataforma te la entrega:verify_urlen los payloads de comprobantes. Cuando una transacción llega a un estado final, su comprobante incluyeverify_url. Con el tracker habilitado, esa URL ahora apunta ahttps://business.cbpayapp.com/t/{code}.- Emails de comprobante. El correo brandeado que recibe tu cliente lleva el mismo link (botón “Verificar en línea” / seguimiento).
- El QR de cada comprobante PDF codifica el mismo código — escanearlo abre el tracker.
Obtener el link de una transacción ya hecha (API)
Los comprobantes y los emails siempre llevan el link, pero no necesitas descargar nada para obtenerlo: llamaGET /v1/track-link con el kind y el id de la transacción para alimentar un botón “Compartir link” en tu propia UI.
200 OK:
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: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
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
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 pagadorcbpay_pay_locale(HttpOnly=false, Secure, SameSite=Lax, 30 días), luego la cuenta del comercio, luego eldefault_localede la org, luego Accept-Language, luego inglés. La cookie SSR del portalcbpay_langes otra cookie del front: la API no la lee. - La API JSON traduce las etiquetas de
fields/amountsen 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 redirect302a la página del tracker. - Un cliente API recibe el mismo payload JSON de siempre.
Errores
Revisa la referencia de errores para el shape global de errores.
FAQ
¿Necesito una API key o iniciar sesión para abrir un link de seguimiento?
¿Necesito una API key o iniciar sesión para abrir un link de seguimiento?
No. El código firmado en la URL es la credencial. Eso es lo que hace seguro compartir el link con tu cliente por email, chat o SMS.
¿Puede alguien enumerar transacciones adivinando códigos?
¿Puede alguien enumerar transacciones adivinando códigos?
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.
¿Por qué una transacción muestra 'processing' más tiempo del habitual?
¿Por qué una transacción muestra 'processing' más tiempo del habitual?
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.¿La línea de tiempo muestra alguna vez fechas estimadas?
¿La línea de tiempo muestra alguna vez fechas estimadas?
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 link legacy /verify/receipts que ya integré se va a romper?
¿El link legacy /verify/receipts que ya integré se va a romper?
No. Sigue devolviendo JSON para clientes API y ahora redirige los navegadores a la página del tracker. Ambos comportamientos son permanentes.
¿Puedo ocultar el tracker y quedarme solo con la verificación JSON?
¿Puedo ocultar el tracker y quedarme solo con la verificación JSON?
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.