Skip to main content

Descripción general

Un retiro permite a los usuarios transferir fondos de su saldo de Fluz a una cuenta externa. Los usuarios pueden retirar desde dos tipos de saldos:
  • Saldo en efectivo - Fondos depositados por el usuario en su cuenta de Fluz
  • Saldo de recompensas - Ganancias de cashback acumuladas por compras
Fluz admite los siguientes métodos de retiro:

Retirar saldo en efectivo

Ejemplo de solicitud

Puedes iniciar un retiro con la mutación withdrawCashBalance. Esta mutación transfiere fondos del saldo de Fluz de un usuario a su cuenta externa especificada.
Esta mutación requiere el tipo de entrada WithdrawCashBalanceInput. Cualquier campo marcado con un signo de exclamación (!) en el esquema es obligatorio y debe incluirse en la solicitud.

Campos de entrada

WithdrawCashBalanceInput


Ejemplo de respuesta

La respuesta de la mutación withdrawCashBalance incluye el/los registro(s) del retiro y los saldos actualizados del usuario.

Campos de la respuesta

Objeto Withdraw


Alcance requerido

Esta mutación requiere que el token de acceso tenga otorgado el alcance MAKE_WITHDRAWAL. La consulta getWithdrawFeeEstimate requiere el mismo alcance.

Métodos de retiro por tipo de cuenta


Previsualizar comisiones antes de retirar

Usa la consulta getWithdrawFeeEstimate para cotizar un retiro antes de enviarlo. Pasa el mismo amount, method, source e isExpedited que piensas enviar, y la respuesta te indicará exactamente cuánto recibirá el usuario.
La comisión se deduce del retiro en lugar de sumarse encima: el saldo se debita por el amount completo, y el destino recibe netAmount. Pasar FLUZPAY como method devuelve ARG-0001.

Retiros push-to-card (OCT)

Un retiro BANK_CARD es un pago push-to-card, entregado como una transacción de crédito original (OCT) — el tipo de transacción de red de tarjetas para abonar fondos a una tarjeta. Requiere bankCardId, y la tarjeta de débito vinculada debe admitir OCT. Una tarjeta no elegible no puede recibirse por ningún otro medio, por lo que el usuario debe elegir otro método de retiro. La velocidad de entrega se controla con isExpedited:
Un retiro push-to-card PENDING aún no es definitivo.Un retiro estándar se entrega a la tarjeta después del tiempo de liquidación y aún puede fallar en ese momento — por ejemplo, si la tarjeta ya no puede recibir el pago. Cuando sucede, los fondos se acreditan de vuelta al saldo de origen. Reconciliá el estado del retiro en lugar de tratar la respuesta inicial PENDING como un pago completado.

Elegibilidad de la tarjeta

La mayoría de las tarjetas de débito Visa y Mastercard pueden recibir un pago push-to-card. La elegibilidad se evalúa cuando se envía el retiro y es una propiedad de la propia tarjeta más que algo que configures.
La elegibilidad no está disponible por adelantado y no se hereda desde los depósitos.No hay una consulta que informe si una tarjeta admite OCT — esto se muestra en el primer retiro a esa tarjeta. La elegibilidad para retiros y depósitos también es independiente, por lo que una tarjeta desde la que un usuario depositó exitosamente no es necesariamente una tarjeta a la que puedas enviar un retiro. Ver Depositar desde cuentas externas.
Los retiros BANK_CARD no están restringidos por cardType: una tarjeta PREPAID no se descarta de antemano y se acepta o rechaza por elegibilidad como cualquier otra. Debido a que BANK_CARD no tiene una vía de entrega alternativa, mantén siempre BANK_ACH, PAYPAL o VENMO disponibles en tu interfaz para que una tarjeta no elegible no bloquee el flujo. Los fallos de push-to-card aparecen como HN-0124 o BC-0004 — consulta Manejo de errores abajo.

Manejo de errores

Escenarios comunes de error: Los errores ARG-* se generan antes de que se muevan fondos.

Ejemplo de respuesta de error


Retiros múltiples

En algunos casos, una sola solicitud de retiro puede resultar en múltiples registros de retiro. Esto puede ocurrir cuando el monto del retiro se divide entre múltiples posiciones (seats) de la red. La respuesta contendrá todos los registros de retiro creados.

Mejores prácticas

  1. Usa siempre claves de idempotencia únicas - Genera un UUID nuevo para cada solicitud de retiro para evitar transacciones duplicadas.
  2. Verifica los saldos antes de retirar - Usa la consulta getWallet para confirmar que el usuario tiene fondos suficientes antes de iniciar un retiro.
  3. Maneja estados pendientes - Los retiros pueden tardar en procesarse. El campo status indicará el estado actual del retiro.
  4. Guarda las referencias de transacción - Conserva withdrawId y transactionLogId para conciliación y soporte.

Registro de cambios

v1.3.0

Retiros acelerados y previsualización de comisiones
  • Se reintrodujo isExpedited en WithdrawCashBalanceInput. Controla la velocidad de entrega para retiros BANK_CARD: true envía a la tarjeta durante la solicitud, false u omitido liquida en el calendario estándar. Esto reemplaza la nota de la v1.2.0 de abajo, que decía que el campo había sido eliminado.
  • Se añadió la consulta getWithdrawFeeEstimate y los tipos GetWithdrawFeeEstimateInput / WithdrawFeeEstimate, para que las comisiones, el monto neto y los tiempos de liquidación puedan previsualizarse antes de enviar.
  • Se documentaron los retiros push-to-card como transacciones de crédito originales (OCT), incluyendo la elegibilidad de la tarjeta y el hecho de que un retiro estándar aún puede fallar después de enviado y ser reembolsado al saldo de origen.
  • Se corrigió el alcance requerido para withdrawCashBalance a MAKE_WITHDRAWAL. El alcance MANAGE_PAYMENT listado previamente en esta página era incorrecto; seat_id en el tipo Withdraw también es opcional (UUID), no requerido como indicaba la v1.2.0.
  • Se documentó que FLUZPAY, aunque presente en el enum WithdrawMethods, no es un método de retiro utilizable: withdrawCashBalance lo rechaza con WDR-0004 (método de retiro inválido) y getWithdrawFeeEstimate lo rechaza con ARG-0001.

v1.2.0 - 2024-11-20

Ajustes de esquema y limpieza de campos
  • Se eliminó el campo isExpedited de WithdrawCashBalanceInput - el ACH acelerado ya no es configurable vía la API
  • Se cambió el campo seat_id en el tipo Withdraw de opcional a requerido (UUIDUUID!)
  • Se actualizó la descripción para el método BANK_CARD para eliminar la referencia a “acelerado”

v1.1.0 - 2024-10-15

Se agregó soporte de Venmo y retiros del saldo de recompensas
  • Se agregó VENMO al enum WithdrawMethods
  • Se agregó el campo venmoAccountId a WithdrawCashBalanceInput
  • Se agregó REWARDS_BALANCE al enum WithdrawSource para admitir el retiro de ganancias de cashback
  • Se agregó el campo seat_id al tipo de respuesta Withdraw para el seguimiento en cuentas con múltiples seats

v1.0.0 - 2024-09-01

Lanzamiento inicial
  • Se introdujo la mutación withdrawCashBalance con el requisito de alcance MAKE_WITHDRAWAL
  • Se agregó el enum WithdrawMethods con los métodos PAYPAL, BANK_ACH y BANK_CARD
  • Se agregó el enum WithdrawSource con la fuente CASH_BALANCE
  • Se agregó el tipo de entrada WithdrawCashBalanceInput con soporte de idempotencia
  • Se agregó el tipo de respuesta Withdraw con detalles completos del registro de retiro
  • Se agregó el tipo WithdrawCashBalanceResponse que devuelve los registros de retiro y los saldos actualizados
  • Integración con payout-service para el procesamiento de retiros
  • Se agregó el registro de acciones de la aplicación para la auditoría