Códigos de respuesta y rechazo

Códigos HTTP, de rechazo y de estado que devuelve la API, y qué hacer con cada uno.

Referencia de los códigos que devuelve la API de Tonder: códigos HTTP, códigos de rechazo de tarjeta y códigos de estado de retiros.

Códigos HTTP

Éxito

CódigoEstadoDescripción
200OKLa petición fue exitosa. Típico de peticiones GET.
201CreatedEl recurso se creó con éxito. Típico de peticiones POST.
202AcceptedLa petición se aceptó pero aún no se completa (p. ej. un pago que requiere 3DS).
204No ContentLa petición fue exitosa pero no hay contenido que devolver (p. ej. un DELETE).

Errores del cliente

CódigoEstadoDescripciónAcción
400Bad RequestPetición mal formada o sin parámetros requeridos.Revisa el cuerpo y los parámetros.
401UnauthorizedFalló la autenticación: llave API inválida o ausente.Verifica tu llave y que incluya el prefijo Token (con espacio).
402Payment RequiredEl procesador o banco emisor rechazó el pago.Sugiere al usuario otro método de pago.
404Not FoundEl recurso solicitado no existe.Revisa el ID de transacción o la URL.
422Unprocessable EntityPetición bien formada pero con errores semánticos (p. ej. email inválido, monto fuera de rango).Corrige los datos indicados.
429Too Many RequestsExcediste el rate limit.Reintenta tras un retraso (backoff exponencial).

Errores del servidor

CódigoEstadoDescripciónAcción
500Internal Server ErrorError inesperado en los servidores de Tonder.Reintenta tras un breve retraso.
502Bad GatewayUn servicio dependiente está temporalmente caído.Reintenta tras un breve retraso.
503Service UnavailableLa API está temporalmente no disponible (p. ej. mantenimiento).Reintenta más tarde. Revisa el status page.

Formato de error

{
  "error": {
    "code": "validation_error",
    "message": "Amount must be greater than 0",
    "type": "request_error",
    "details": { "field": "amount", "received_value": -10.00 }
  },
  "request_id": "req_abc123"
}

El objeto error contiene code (máquina-legible), message (humano-legible), type (categoría), details (contexto adicional). El request_id identifica la petición —inclúyelo al contactar a soporte.

Códigos de rechazo de tarjeta

Sistema de códigos de rechazo interno y estandarizado para unificar el manejo de errores entre proveedores. Formato: [Categoría][Tipo][Secuencia] — categoría (letra A-Z), tipo H (rechazo duro, permanente) o S (rechazo suave, se permite reintentar), secuencia (dos dígitos).

El catálogo detallado de los códigos crudos del procesador (numéricos, alfanuméricos y códigos K) está en Códigos de rechazo.

A — Autenticación y seguridad

CódigoTipoDescripción
AH01DuroNúmero de tarjeta inválido
AH02DuroCVV/CVC inválido
AH03DuroFecha de expiración inválida
AH04DuroFalló la autenticación 3D Secure
AH05DuroTransacción fraudulenta detectada
AH06DuroTarjeta reportada como perdida
AH07DuroTarjeta reportada como robada
AH08DuroComportamiento sospechoso detectado
AS01SuaveSe requiere autenticación 3D Secure
AS02SuaveSe requiere autenticación reforzada (SCA)

B — Banco/Emisor

CódigoTipoDescripción
BH01DuroTarjeta rechazada por el banco
BH02DuroTarjeta expirada
BH03DuroTarjeta cancelada/deshabilitada
BH04DuroTarjeta restringida
BH05DuroSe requiere autorización del banco
BH06DuroTarjeta en lista negra
BH07DuroCuenta inválida
BH08DuroEl banco solicitó retener la tarjeta
BS01SuaveBanco temporalmente no disponible
BS02SuaveMantenimiento del sistema del emisor

C — Crédito/Fondos

CódigoTipoDescripción
CH01DuroFondos insuficientes
CH02DuroLímite de crédito excedido
CH03DuroSobre el límite
CH04DuroLímite de retiro excedido
CH05DuroLímite de transacción excedido
CS01SuaveRetención temporal de crédito

D — Datos/Configuración

CódigoTipoDescripción
DH01DuroConfiguración de comercio inválida
DH02DuroMoneda no soportada
DH03DuroTipo de tarjeta no soportado
DH04DuroMonto inválido
DH05DuroTipo de transacción no permitido
DH06DuroDatos de transacción inválidos
DS01SuaveError de validación — se permite reintentar
DS02SuaveConfiguración temporalmente no disponible

E — Externos/Red

CódigoTipoDescripción
ES01SuaveTimeout de red
ES02SuaveError de comunicación
ES03SuaveProcesador no disponible
ES04SuaveTimeout del gateway
ES05SuaveError de servicio externo

F — Prevención de fraude

CódigoTipoDescripción
FH01DuroTransacción de alto riesgo bloqueada
FH02DuroReglas de velocidad violadas
FH03DuroRestricciones geográficas
FH04DuroCoincidencia con lista negra de comercios
FH05DuroTarjeta bloqueada por fraude
FS01SuaveTransacción bajo revisión de fraude

G — General/Sistema

CódigoTipoDescripción
GS01SuaveError general del sistema
GS02SuaveError de procesamiento — se permite reintentar
GS03SuaveTransacción duplicada
GS04SuaveTransacción expirada
GS05SuaveServicio temporalmente no disponible

U — Usuario/Cliente

CódigoTipoDescripción
UH01DuroTransacción cancelada por el cliente
UH02DuroFalló la autenticación del cliente
UH03DuroFalló la verificación del cliente
US01SuaveSe requiere acción del cliente
US02SuaveSesión expirada

El código de rechazo llega en el webhook en los campos decline_code y decline_reason:

{
  "status": "Declined",
  "decline_code": "BH01",
  "decline_reason": "Card declined by bank",
  "event_type": "payment_Declined"
}

Códigos de estado de retiros

PendingProcessingSuccess (éxito terminal), o Declined / Cancelled / Failed (falla terminal). Consulta las transiciones completas y el mapeo desde los nombres anteriores en Flujo de estados de retiros.

Siguientes pasos

¿Te resultó útil esta página?

En esta página