Pagos

Flujo de un depósito

De la transferencia del usuario al dinero en tu tesorería: detectado, confirmado y liquidado.


Un depósito es una transferencia de USDT o USDC hacia la dirección de un cliente. El servidor lee la red bloque a bloque y lleva cada depósito por tres estados, avisándote en cada cambio.

  1. 1

    Detectado (detected)

    La transferencia aparece en un bloque. Se crea el depósito y sale deposit.detected. Todavía no es firme: no acredites.

  2. 2

    Confirmado (confirmed)

    Cuando el bloque del depósito tiene encima los bloques de espera de tu empresa (confirmations, 4 por defecto), el servidor comprueba que la transferencia sigue en la red, calcula el reparto con tus condiciones de ese momento y emite deposit.confirmed. Aquí se acredita.

  3. 3

    Liquidado (settled)

    El servidor envía el barrido: una transacción que saca el saldo de la dirección y lo reparte entre la plataforma, tu billetera de comisiones y tu tesorería. Al confirmarse, el depósito pasa a settled con el reparto definitivo y sale deposit.settled.

Tiempos típicos#

Desde que el usuario envía la transferenciaTiempo típico en pruebas
Hasta deposit.confirmedUnos 6 segundos
Hasta deposit.settledUnos 11 segundos

Son medidas en Arbitrum Sepolia con 4 bloques de espera, no una garantía: dependen de la red y de la carga. Contado desde que el usuario pulsa enviar, de los cuales unos 3 segundos son de su billetera y de la red. El servidor revisa la red cada segundo, aproximadamente. Si un barrido falla, se reintenta solo a los 30 segundos.

Mínimos#

Cada empresa tiene un depósito mínimo (min_deposit, en USD, 0.5 por defecto; se trata 1 token como 1 USD). Un depósito se confirma como below_minimum, y no debe acreditarse, en dos casos: si es menor que el mínimo, o si las comisiones más el gas se lo llevarían entero.

  • El dinero de un depósito below_minimum no se pierde: se queda en la dirección del cliente.
  • No se barre por sí solo. Se barre junto con el siguiente depósito del mismo cliente y token que sí se confirme; entonces pasa a settled y recibes su deposit.settled.
  • A esos depósitos no se les carga gas: el gas del barrido se reparte entre los depósitos confirmados.

Reversión#

Antes de confirmar, el servidor verifica que la transacción sigue en la red y en el mismo bloque. Si desapareció (una reorganización de bloques) o falló, el depósito pasa a reverted y sale deposit.reverted. Si la misma transferencia reaparece en otro bloque, simplemente se vuelve a esperar desde ahí. Un depósito ya confirmado no se revierte: por eso se acredita en deposit.confirmed y no antes.

Casos que conviene conocer#

  • Varios depósitos seguidos. El barrido mueve todo el saldo del token en la dirección. Si hay varios depósitos pendientes del mismo cliente, se liquidan en una sola transacción y el reparto se atribuye a cada uno en proporción a su monto. Todos comparten sweep_tx_hash.
  • El reparto final puede diferir del cotizado. El gas definitivo nunca supera el cotizado, así que normalmente el neto final es igual o un poco mayor. Las comisiones las calcula el contrato con las condiciones vigentes al barrer: si cambian entre la confirmación y el barrido, manda el reparto final.
  • Barrido directo de la empresa. Si el admin de tu empresa barre por su cuenta antes de que el servidor confirme, el depósito se confirma y se liquida a la vez: llegan deposit.confirmed y deposit.settled seguidos.
  • USDT y USDC van por separado. Cada token tiene su propio barrido.

La lista completa de estados está en Estados de un depósito y cada campo del objeto en Objeto depósito.