Skip to content

Gestionar Retiros

Requisitos previos de acceso

  • Permiso (módulo): viewWithdrawals (para ver el listado). Las acciones de aprobar/rechazar exigen también los módulos approveWithdrawal y cancelWithdrawal.
  • Licencia/Feature: WITHDRAWAL_HANDLING. La pestaña Banco Digital (retiro fiduciario interno) solo aparece cuando la feature DIGITAL_BANKING también está habilitada.
  • Contenedor del menú: GENERAL → grupo Operaciones

Qué es / cuándo usar

Pantalla central de aprobación de retiros solicitados por los usuarios. Las solicitudes se separan por tipo de destino en pestañas: Fiduciario (FIAT — retiro bancario externo), Banco Digital (INTERNAL_FIAT — transferencia interna entre cuentas digitales) y Bitcoin/ETH (cripto on-chain). El operador revisa los datos de la solicitud (cuenta destino, clave PIX, dirección de billetera y los campos personalizados por token), aprueba — lo que dispara la salida efectiva del dinero — o rechaza, devolviendo el importe reservado.

Requisitos previos

  • Permiso: viewWithdrawals para ver; approveWithdrawal / cancelWithdrawal para actuar (permiso doble — enum CPM + módulo dinámico en DB).
  • Licencia/Feature: WITHDRAWAL_HANDLING habilitada; DIGITAL_BANKING para la pestaña Banco Digital.
  • Dependencias de otras pantallas: el usuario objetivo debe estar APPROVED (KYC) y tener saldo reservado. Los retiros de billeteras en estado de captación (IN_CAPTATION) quedan bloqueados por la propia reserva. Solo es posible actuar sobre solicitudes en Pendiente.

Paso a paso

  1. Acceda al menú Operaciones → Gestionar retiros.
  2. Elija la pestaña de destino: Fiduciario, Banco Digital o Bitcoin/ETH (la pestaña seleccionada se guarda en la sesión).
  3. Filtre por estado (Todos, Aprobado, Cancelado, Pendiente) y busque por nombre.
  4. Haga clic en el ícono de detalles (info) para abrir el modal con todos los datos de la solicitud, incluidos los campos personalizados por token y los valores sensibles enmascarados.
  5. Apruebe para liberar el dinero o rechace para devolver el importe a la billetera. Confirme en el bottom-sheet.

Filtros y columnas

Filtro/ColumnaQué muestraOrigen del dato
Pestaña (tipo)FIAT / INTERNAL_FIAT / BTC-ETHtype de la solicitud; pestaña persistida en MANAGE_WITHDRAWAL_TABLETYPE
BúsquedaFiltro local por nombre del solicitantename
EstadoPendiente / Aprobado / Cancelado / Todosstatus
FechaFecha de la solicitudwhen (ordenado DESC)
ID / IdentificadorID de la solicitud y CPF/CNPJ/pasaporteid / identifier (resuelto por userId)
ImporteMonto solicitadoamount (BigNumber)
EstadoEstado de la solicitudstatus

Muestra: nombre, importe + unidad, banco, agencia, cuenta, clave PIX, identificador, estado, fecha y la lista de campos personalizados definidos por el token. Los campos marcados como secure aparecen enmascarados (••••••); los booleanos se convierten en Sí/No; las fechas se formatean. Estos campos provienen del schema withdrawal_custom_fields del token y son revalidados en el backend (tipo, regex, rangos, opciones de select).

Acciones y modales

  • Aprobar: bottom-sheet de confirmación → updateWithdrawal(id, 'APPROVED'). El backend (FMS – Withdrawal) ejecuta la salida efectiva del dinero (transferencia bancaria, transferencia interna o broadcast on-chain según el tipo). La página se recarga.
  • Rechazar: bottom-sheet → updateWithdrawal(id, 'CANCELLED'). Devuelve el importe reservado a la billetera del usuario.
  • Abrir usuario: navega a los detalles del usuario por correo electrónico.
  • Guía de ayuda (auto_stories): abre el modal de solución de problemas de la pantalla.

Reglas de negocio / precauciones

Atención

  • Aprobar/rechazar solo está disponible para solicitudes en Pendiente.
  • La pestaña Banco Digital depende de la feature DIGITAL_BANKING; sin ella, solo aparecen Fiduciario y Bitcoin/ETH.
  • Verifique los campos personalizados (ej.: dirección de billetera externa, clave PIX) antes de aprobar — contienen el destino real del dinero.

Irreversible

  • Aprobar dispara la salida efectiva del dinero (transferencia bancaria / on-chain). Una vez confirmado, no hay rollback — un envío on-chain o una transferencia bancaria no pueden deshacerse desde la plataforma.
  • Valores financieros: tratados como BigNumber — sin redondeo; verificar los decimales del token/moneda.
  • Idempotencia: la liquidación del retiro en FinLib es idempotente por externalId. Si el backend devuelve E00021 "already processed" (ej.: reintento tras timeout/crash), el retiro ya fue procesado — trátelo como éxito, no reenvíe.
  • Status APPROVED: el usuario objetivo debe estar APPROVED.

Ejemplos

Escenario 1 — Retiro fiduciario (FIAT) via PIX a banco externo
  1. Pestaña Fiduciario, estado Pendiente.
  2. Abra los detalles y verifique nombre, importe, banco, agencia, cuenta y clave PIX.
  3. Compare el nombre del titular con el del usuario (prevención de retiro a terceros).
  4. Aprobar → el FMS activa la transferencia bancaria externa. Resultado: el estado pasa a APPROVED, el importe sale de la casa y la reserva se consume.
Escenario 2 — Retiro interno entre cuentas digitales (Banco Digital)
  1. Pestaña Banco Digital (requiere DIGITAL_BANKING).
  2. El destino es otra cuenta digital del ecosistema — no hay transferencia bancaria externa.
  3. Aprobar → el FMS realiza la transferencia interna INTERNAL_FIAT. Liquidación inmediata, sin ventana bancaria.
Escenario 3 — Retiro cripto (BTC/ETH) con dirección en campo personalizado
  1. Pestaña Bitcoin/ETH.
  2. En los detalles, la dirección de la billetera de destino aparece en los campos personalizados definidos por el token (validados por regex en el schema del token).
  3. Verifique la dirección con cuidado — el envío on-chain es definitivo.
  4. Aprobar → broadcast on-chain. Si hay un reintento y el backend devuelve E00021, la transacción ya fue enviada; no reenvíe.

Pantallas relacionadas