Enviar un payout

Desde comprobar el saldo hasta confirmar la transferencia, para un payout o un lote de hasta 50.

  1. 1

    Compruebe el saldo

    GET /v1/balances devuelve un saldo por token; la clave de cada token es el balance_key que devuelve GET /v1/summary/tokens. Cuando available tenga la clave, use ese valor: el resto está retenido por depósitos aún no finales. min_withdrawal y max_withdrawal por token vienen de GET /v1/summary/tokens.

    bash
    curl "https://bridge.bifrostcrypto.com/v1/balances" \
      -H "X-Bifrost-Invoke: YOUR_API_KEY"
  2. 2

    Cree el payout

    POST /v1/payout con un objeto o una lista de hasta 50. Dé a cada payout su propio reference_id y envíe un Idempotency-Key por solicitud. feetakenfromamount 1 descuenta las comisiones del monto; 0 las suma al débito.

    bash
    curl -X POST "https://bridge.bifrostcrypto.com/v1/payout" \
      -H "X-Bifrost-Invoke: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: 6f1c2d3e-0000-4000-8000-000000000001" \
      -d '{"reference_id":"withdraw_2001","wallet":"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0","crypto_currency":"USDT","network":"Ethereum","process_by":"crypto_amount","crypto_amount":"100","feetakenfromamount":0,"webhook_url":"https://your-site.com/webhook"}'
  3. 3

    Lea el resultado de cada ítem

    200 significa que se crearon todos los ítems, 207 que algunos, 400 que ninguno. results tiene una entrada por ítem, en el orden enviado, con su index. Guarde el internal_reference de cada payout creado.

  4. 4

    Reciba el webhook

    payment_processed (data.status success, con el hash de la transacción en data.transactions) cuando la transferencia se realiza, o payment_failed cuando no puede completarse. Verifique la firma y elimine duplicados por data.internal_reference junto con event.

  5. 5

    Concilie

    GET /v1/check-payout/{internal_reference} devuelve el payout en cualquier momento. GET /v1/statements lista WITHDRAWAL para el débito y RATE y FEE para los cargos.

Qué hacer cuando algo falla

Dos cosas impiden que pague dos veces: el Idempotency-Key de la solicitud y el reference_id de cada payout.

SituaciónQué hacer
Timeout o sin respuestaReenvíe el mismo cuerpo con el mismo Idempotency-Key dentro de 24 horas: recibe la respuesta original y no se procesa nada de nuevo.
409 idempotency_key_in_progressLa primera solicitud sigue en curso. Espere y reintente con la misma clave.
207Corrija y reenvíe solo los ítems rechazados, con un Idempotency-Key nuevo. Los creados siguen creados.
500 con summary.not_processedReenvíe los ítems que no se procesaron. Un reference_id ya usado se rechaza con duplicate_payment_reference, nunca se paga dos veces.
duplicate_payment_referenceEl payout ya existe. Use el internal_reference y el original_status del resultado.
429Espere los segundos indicados en Retry-After.

Los payouts creados en el panel no los devuelve la API.