Tesorería y Cuentas por pagar

Cuando desarrollas integraciones con la API de Duemint, es fundamental manejar correctamente los errores que pueden surgir.

La API utiliza un sistema estructurado de códigos de error que facilita identificar y gestionar problemas.

Estructura de los códigos de error

Un código de error en Duemint está compuesto por:

  • Grupo de error → indica la categoría general del error.
  • Entidad → especifica a qué parte del sistema corresponde.

La combinación de ambos define el código único de error.

Grupos de errores

Grupos principales:
  • 10000 – NotFound: recurso no encontrado.
  • 20000 – Forbidden: solicitud entendida pero denegada.
  • 30000 – BadRequest: error en los parámetros enviados.
  • 40000 – Unauthorized: falta de permisos para acceder.
  • 50000 – InternalServerError: fallo interno del servidor.

Entidades de errores

Entidades de errores — Tesorería y Cuentas por Pagar

Entidad Rango Descripción
Auth100Autenticación y emisión/validación de tokens.
User200Gestión de usuarios (alta, estados, perfiles).
Company300Información y configuración de la compañía.
CompanyUser400Relación usuario–compañía, membresías y estados.
AccessRole500Roles de acceso disponibles en la plataforma.
Permission600Permisos finos asociados a roles/usuarios.
KYC700Verificación de identidad y cumplimiento (KYC).
Wallet800Billeteras: creación, saldos, restricciones.
Payment900Pagos salientes (payouts) y su ciclo de vida.
Transaction1000Movimientos contables/financieros asociados.
File1100Subida, lectura y validación de archivos.
Recipient1200Destinatarios (personas/empresas) de pagos.
RecipientAccount1300Cuentas bancarias o destino del destinatario.
Approval1400Procesos de aprobación de operaciones.
ApprovalUser1500Participación de usuarios en aprobaciones.
ApprovalSignature1600Firmas requeridas y validaciones de firma.
ApprovalOperation1700Operaciones sujetas a aprobación.
ApprovalFlow1800Definición y ejecución de flujos de aprobación.
Card1900Tarjetas (emisión, validación, límites).
Charges2000Cargos/comisiones y su liquidación.
Income2100Ingresos (payments in) y conciliación.
Notification2200Notificaciones internas/salientes.
NotificationEnvelope2300Estructura y empaquetado de notificaciones.
NotificationConfiguration2400Preferencias y canales de notificación.
PSPIntegration2500Integración con proveedores de pago (PSP).
Security2600Controles de seguridad, firmas y políticas.
Subscription2700Suscripciones/planes y facturación asociada.
Webhook2800Entrega y validación de webhooks.
Register2900Alta/registro inicial de usuarios/empresas.
RegisterInvitation3000Invitaciones de registro y su gestión.
BankIntegration3100Conexiones bancarias y errores de canal.
Shinkansen3200Orquestación/colas internas (motor Shinkansen).
ChargesIntent3300Intentos de cobro (charge intents) y validaciones.
PaymentMethod3400Métodos de pago admitidos y estados.
AutoWithdrawal3500Retiros automáticos/automatizados.
Integration3600Integraciones de API y credenciales.
Credential3700Credenciales/secretos y su ciclo de vida.
AssignableDocument3800Documentos asignables (asociaciones/etiquetas).
PayableDocument3900Documentos por pagar (CxP) y validaciones.
PayableProvider4000Proveedores de CxP y su vinculación.
BankAccountIntegration4100Vinculación de cuentas bancarias externas.
BankPayment4200Ejecución de pagos bancarios (transferencias).
Client4300Clientes (CRM) y estados relacionados.
Contact4400Contactos y datos de contacto.
AuxInvoice4500Facturas auxiliares (importadas/temporales).
InvoiceImport4600Importación de facturas y validaciones.
Field4700Campos personalizados definidos por el usuario.
FieldOpt4800Opciones de campos personalizados.
FieldEntity4900Asociación campo ↔ entidad.
FieldOptEntity5000Asociación opción ↔ entidad.
PaymentImport5100Importación de
Invoice5300Facturas y su gestión.
Division5400Divisiones de negocio.
Role5600Roles organizacionales y su asignación.
PayrollTemplate5700Plantillas de nómina y configuraciones.
FintocLink5800Enlaces de integración y sincronización bancaria.
TimeZone5900Husos horarios y conversión de fechas.
WalletRequest6000Solicitudes sobre billetera.
Industry6100Clasificación industrial de la empresa.
EconomicActivity6200Actividades económicas (giros).
Restriction6300Limitaciones operativas.
WalletCard6400Tarjetas asociadas a la billetera.
BankCard6500Tarjetas bancarias.
WalletTicket6600Tickets de wallet (internos).
BankTicket6700Tickets bancarios (externos).

💡 Duemint define 67 entidades para clasificar errores. Úsalas como referencia en integraciones de Tesorería y Cuentas por Pagar.

Ejemplo de código de error:

Un error en pagos podría verse así:

  • Error: payment-invalid-due-date-card
  • Grupo: Forbidden (20000)
  • Entidad: Payment (900)
  • Código específico: 2
  • Código completo: 20902

Respuesta de error en la API

Ejemplo en JSON:

{
  "errorCode": 20902,
  "description": "Payment Invalid Due Date Card",
  "details": "parámetro específico con error"
}

Buenas prácticas

  • Valida entradas: revisa los datos antes de enviarlos para evitar errores de BadRequest.
  • Gestiona respuestas: implementa lógica para manejar cada tipo de error; muestra mensajes claros o intenta recuperación automática.
  • Registra errores: mantén logs para diagnóstico y soporte.
  • Reintentos inteligentes: usa backoff exponencial para errores de red temporales.
  • Seguridad: no expongas detalles internos al usuario final; guarda la información sensible en el servidor.