Códigos de Error
Lista completa de códigos de error del servicio bancario.
📋 Códigos HTTP Comunes
| Código | Descripción | Cuándo se usa |
|---|---|---|
| 200 | OK | Éxito en la operación |
| 201 | Created | Recurso creado exitosamente |
| 400 | Bad Request | Error en los datos proporcionados |
| 401 | Unauthorized | Token JWT inválido o faltante |
| 403 | Forbidden | Acceso denegado |
| 404 | Not Found | Recurso no encontrado |
| 409 | Conflict | Recurso ya existe |
| 500 | Internal Server Error | Error interno del servidor |
🔴 Mensajes de Error Específicos
Manteca
Usuarios y Autenticación
"Solo usuarios argentinos pueden crear cuenta en Manteca""Datos KYC no encontrados""El usuario no tiene una cuenta activa en Manteca""Usuario no encontrado en Manteca"
Trading y Órdenes
"Monedas no soportadas en el par X: Y""El código de lock ha expirado. Por favor, crea un nuevo lock""Los campos coin y operation son requeridos""La operación debe ser BUY o SELL""El amount debe ser un número válido mayor a 0""Orden no encontrada en Manteca"
Validaciones
"Se requiere un array de monedas""Moneda X NO está soportada por Manteca""Par X tiene monedas no soportadas: Y"
Fiat y Transacciones
"Todos los campos son requeridos: coin, cbu, amount""Retiro fiat con ID X no encontrado""El parámetro page debe ser un número válido mayor a 0""startDate debe tener el formato YYYY-MM-DD"
KYC y Documentos
"Los documentos KYC ya están en Manteca (pendientes o validados)""Error al procesar documentos KYC"
Bridge
Customer y Verificación
"El usuario ya tiene un customer activo en Bridge con ID: X""El usuario no tiene un customer activo en Bridge""El usuario no tiene un customer asociado en Bridge""Token inválido o expirado"
Cuentas Virtuales
"El usuario no tiene un customer activo en Bridge""No se pudo crear la cuenta virtual""Moneda no soportada para cuentas virtuales"
KYC y Documentos
"Customer y documentos KYC actualizados exitosamente en Bridge""Error al actualizar documentos KYC en Bridge"
🔧 Validaciones Generales
Parámetros Requeridos
"Los campos X y Y son requeridos""Missing required data""Se requiere un array de monedas"
Formatos de Datos
"Invalid email format""El parámetro page debe ser un número válido mayor a 0""startDate debe tener el formato YYYY-MM-DD""El amount debe ser un número válido mayor a 0"
Autenticación
"Token is required for this operation""Invalid token""Token not provided or invalid""Unauthorized access"
🚨 Estructura de Respuesta de Error
Error Estándar
{
"message": "Descripción del error",
"error": "Tipo de error",
"statusCode": 400
}
Error con ID de Trazabilidad
{
"message": "Usuario no encontrado",
"error": "Not Found",
"statusCode": 404,
"id": "CF97E6F2"
}
Error de Validación
{
"message": "Los campos coin y operation son requeridos",
"error": "Bad Request",
"statusCode": 400,
"validation": {
"missing_fields": ["coin", "operation"]
}
}
🔍 Manejo de Errores por Endpoint
Manteca Endpoints
POST /manteca/create
- 401: Datos KYC no encontrados
- 401: Solo usuarios argentinos
- 409: Usuario ya existe
GET /manteca/user
- 404: Usuario no encontrado
- 401: Token inválido
POST /manteca/order/lock
- 400: Campos faltantes
- 400: Par no soportado
- 404: Usuario no activo
POST /manteca/order/execute
- 400: Lock expirado
- 400: Campos faltantes
- 404: Usuario no activo
Bridge Endpoints
GET /bridge/generate-tos
- 409: Customer ya existe
- 400: Datos incompletos
GET /bridge/customer-status
- 404: Customer no encontrado
- 401: Token inválido
POST /bridge/virtual-accounts
- 404: Customer no activo
- 400: Moneda no soportada
- 409: Cuenta ya existe
🛡️ Mejores Prácticas
Manejo de Errores en Frontend
try {
const response = await fetch('/manteca/order/lock', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(orderData)
});
if (!response.ok) {
const error = await response.json();
// Manejar errores específicos
switch (error.statusCode) {
case 400:
showValidationError(error.message);
break;
case 401:
redirectToLogin();
break;
case 404:
showNotFoundError();
break;
default:
showGenericError();
}
return;
}
const data = await response.json();
// Procesar respuesta exitosa
} catch (networkError) {
showNetworkError();
}
Logging de Errores
// Backend logging
logger.error('Order lock creation failed', {
userId: user.id,
error: error.message,
errorCode: error.code,
requestData: orderData,
timestamp: new Date().toISOString()
});
📊 Códigos de Monitoreo
Alertas por Código de Error
- 4xx errors > 10%: Revisar validaciones
- 5xx errors > 1%: Problemas de infraestructura
- Timeouts > 5%: Optimizar performance
Métricas de Error
- Error Rate: % de requests que fallan
- MTTR: Tiempo promedio de resolución
- Error Distribution: Distribución por tipo de error
📝 Notas Importantes
- IDs de Trazabilidad: Usar para debugging en logs
- Mensajes User-Friendly: Mostrar mensajes claros al usuario
- Retry Logic: Implementar reintentos para errores 5xx
- Monitoring: Alertas para patrones de error anómalos
- Documentation: Mantener actualizada la lista de errores