Receta: recargas pagadas en bolívares, recibidas en USDT
Tu usuario paga en bolívares; VEXPay convierte el neto a USDT y lo envía a su wallet cuando termina la retención de 24 h: una sola solicitud, sin tesorería de tu lado.
Lo que vas a construir
Un flujo de recargas para wallets, exchanges o juegos: el usuario paga en bolívares (Pago Móvil o C2P) y recibe USDT en una dirección de wallet. Agregas un campo, onwardPayout, y sigues un webhook.
- Cobra
El cobro lleva onwardPayout con la red y la dirección del usuario.
- Convierte
Cuando el pago se completa, su neto en VES se convierte a tu precio de conversión (tasa de mercado + tu spread).
- Espera la retención
Los USDT quedan retenidos hasta que termina la retención de 24 h del pago: estado waiting_release con sendAfter.
- Envía
VEXPay envía los USDT, menos la comisión de payout de la red, a la dirección y dispara payout.completed.
Paso 01
Cobra con una instrucción de envío
curl --request POST "${API_URL}/v1/payments/pago-movil/verify" \
--header "content-type: application/json" \
--header "x-api-key: ${VEXPAY_API_KEY}" \
--data '{
"usdAmount": 20,
"reference": "40010003",
"externalRef": "topup-user-42",
"onwardPayout": { "network": "BEP20", "address": "0x2f5c0000000000000000000000000000000000aa" }
}'VEXPay valida la instrucción antes de tocar el banco: USDT y las conversiones deben estar habilitados, los payouts de la red activos y la dirección válida para la red. Una instrucción incorrecta responde 400 y no se mueve nada.
Paso 02
Síguelo hasta la wallet
| onwardPayout.status | Qué significa | Qué le muestras a tu usuario |
|---|---|---|
| pending | El pago aún no se ha completado | Esperando tu pago |
| converting | Convirtiendo los bolívares netos a USDT | Convirtiendo |
| waiting_release | Convertido; retenido hasta sendAfter (retención de 24 h del saldo) | Tus USDT se enviarán en sendAfter |
| sending | El payout de USDT va en camino | Enviando |
| completed | Entregado (con txHash) | Listo: muestra la transacción |
| held / failed / canceled | Detenido (ver reason); el dinero queda en tu saldo | Contacta a soporte |
Cada cambio dispara onward_payout.updated con el mismo objeto. Suscríbete y muéstrale sendAfter a tu usuario mientras el estado sea waiting_release, para que sepa cuándo esperar los USDT.
Paso 03
Lo que le cuesta a tu usuario
- La comisión de cobro en bolívares, como en cualquier pago.
- El precio de conversión: la tasa USDT de mercado más tu spread, fijada cuando el pago se completa.
- La comisión de payout USDT de la red (comisión de red + el margen de 0,25 USDT de VEXPay; por ejemplo 1,00 USDT en BEP20 o Polygon). GET /v1/crypto/networks muestra la comisión vigente.