Skip to Content
Referencia del API

Referencia del API

Base local: http://localhost:4000 · Producción: URL del servicio Railway. Autenticación: Authorization: Bearer <jwt> (7 días). Errores: { "error": { "code", "message", "issues?" } }.

Público (sin auth)

MétodoRutaDescripción
GET/healthestado, provider activo y modo demo
GET/public/configmodo demo + límites min/max
GET/public/corridorspaíses, monedas y métodos disponibles
POST/public/quotescotización con desglose (amount, sourceCurrency, destinationCountry, deliveryMethod)
POST/public/leadsalta de lead desde la landing
GET/public/remittances/:tokenvista del receptor (smart link)
POST/public/remittances/:token/deliveryel receptor elige método y datos de cobro

Auth

MétodoRutaDescripción
POST/auth/registeralta de persona (rol USER)
POST/auth/register-businessalta de empresa + operador (rol BUSINESS, KYB pendiente)
POST/auth/logindevuelve { token, user, company? }
GET/auth/meperfil + empresa

KYC

MétodoRutaDescripción
POST/kycenviar documento + selfie + prueba de residencia
GET/kyc/meestado y última submission

Beneficiarios

CRUD estándar en /beneficiaries (+/:id). Reglas: al menos un método de cobro; los datos deben corresponder a corredores del país (p. ej. banco en Kenia → 422 UNSUPPORTED_CORRIDOR).

Remesas

MétodoRutaDescripción
POST/remittancescrear (beneficiario guardado o smartRecipient)
GET/remittancesmías (BUSINESS: todas las de la empresa)
GET/remittances/:iddetalle
GET/remittances/:id/eventstimeline
GET/remittances/:id/receiptrecibo estructurado
POST/remittances/:id/cancelsolo en PENDING

Códigos de negocio relevantes: KYC_REQUIRED, KYB_REQUIRED, MONTHLY_LIMIT_EXCEEDED, COUNTRY_MISMATCH, METHOD_DETAILS_MISSING, UNSUPPORTED_CORRIDOR.

B2B

MétodoRutaDescripción
GET/b2b/companyempresa + resumen de volumen
POST/b2b/batches501 — stub de mass payouts (Fase 6)

Webhooks Cashela

POST /webhooks/cashela con header x-cashela-signature (HMAC-SHA256 del JSON con CASHELA_WEBHOOK_SECRET).

{ "type": "payin.completed", "data": { "payinId": "pi_…" } }

Tipos: payin.completed, payin.failed, payout.completed, payout.failed. El handler es idempotente.

Admin (rol ADMIN)

MétodoRutaDescripción
GET/admin/statsKPIs agregados
GET/admin/users · PATCH /admin/users/:id/limitusuarios y límites
GET/admin/kyc · POST /admin/kyc/:id/reviewcola y revisión KYC
GET/admin/companies · POST /admin/companies/:id/kybKYB de empresas
GET/admin/remittances?status=&review=&search=buscador
POST/admin/remittances/:id/approve / …/rejectcompliance
GET/admin/alerts?status= · POST /admin/alerts/:id/resolvealertas AML
GET/admin/leads · PATCH /admin/leads/:idCRM
POST/admin/wiki-tokentoken firmado (15 min) + URL de esta wiki

Demo

Con DEMO_MODE=true: POST /dev/remittances/:id/advance simula el siguiente webhook de Cashela para la remesa (requiere ser el dueño o admin).

Last updated on