Errores y reintentos
La API Transaccional usa dos familias de respuesta para señalizar
problemas: códigos HTTP (problemas de transporte, autenticación o
rate limit) y validación de negocio (problemas semánticos del
payload, devueltos como HTTP 200 con valid: false). Entender la
diferencia es clave para reintentar sin generar transacciones
duplicadas.
Códigos HTTP
Validación de negocio — 200 + valid: false
Cuando la petición está bien formada pero viola una regla de negocio
(monto fuera de rango, cuenta inválida, propósito bloqueado, etc.) la
API responde con HTTP 200 y un cuerpo con la lista de violaciones.
| Campo | Descripción |
|---|---|
valid | true cuando el payload pasa todas las validaciones; false en caso contrario. |
status | PROCESSING cuando se acepta; FAILED cuando se rechaza por validación. |
violations | Lista de violaciones. Vacía cuando valid: true. |
Reintentos idempotentes
El externalReferenceId es el identificador único de cada transacción
del lado del cliente. Es la única garantía de idempotencia que ofrece la
API.
Reglas prácticas
- Timeouts / 5xx: reintenta con el mismo
externalReferenceIdusando backoff exponencial. Si el segundo intento también falla, espera un poco más antes del tercero. - 409 Conflict: la transacción ya fue procesada. Verifica el estado usando el endpoint de consulta antes de decidir si reenviar.
- 429 Too Many Requests: respeta el header
Retry-Aftersi está presente. Si no, espera al menos 1 segundo y duplica el tiempo en cada reintento (1s → 2s → 4s → 8s, tope 30s). - 401 Unauthorized: intenta una sola vez refrescar el token. Si persiste, el problema es de credenciales, no de transporte.
- 403 Forbidden: no reintentes. Resuelve la causa raíz primero.
Backoff sugerido
| Intento | Espera mínima | Espera sugerida |
|---|---|---|
| 1 | — | primer intento fallido |
| 2 | 500 ms | 1 segundo |
| 3 | 1 s | 2 segundos |
| 4 | 2 s | 4 segundos |
| 5 | 4 s | 8 segundos |
| 6+ | 8 s | 16–30 segundos |
Soporte
Si necesitas ayuda para investigar un estado inesperado o una petición fallida, escríbenos a soporte.tech@global66.com indicando el clientId y un ejemplo de la petición fallida (timestamp, request id, status HTTP).