Enviar um payout

Da conferência do saldo à confirmação da transferência, para um payout ou um lote de até 50.

  1. 1

    Confira o saldo

    GET /v1/balances devolve um saldo por token; a chave de cada token é o balance_key devolvido por GET /v1/summary/tokens. Quando available tiver a chave, use esse valor: o restante está retido por depósitos ainda não finais. min_withdrawal e max_withdrawal por token vêm de GET /v1/summary/tokens.

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

    Crie o payout

    POST /v1/payout com um objeto ou uma lista de até 50. Dê a cada payout um reference_id próprio e envie um Idempotency-Key por requisição. feetakenfromamount 1 desconta as taxas do valor; 0 soma as taxas ao 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

    Leia o resultado de cada item

    200 significa que todos os itens foram criados, 207 que parte foi, 400 que nenhum foi. results tem uma entrada por item, na ordem enviada, com o index. Guarde o internal_reference de cada payout criado.

  4. 4

    Receba o webhook

    payment_processed (data.status success, com o hash da transação em data.transactions) quando a transferência é feita, ou payment_failed quando não pode ser concluída. Verifique a assinatura e elimine duplicatas por data.internal_reference junto com event.

  5. 5

    Concilie

    GET /v1/check-payout/{internal_reference} devolve o payout a qualquer momento. GET /v1/statements lista WITHDRAWAL para o débito e RATE e FEE para as cobranças.

O que fazer quando algo falha

Duas coisas impedem que você pague duas vezes: o Idempotency-Key da requisição e o reference_id de cada payout.

SituaçãoO que fazer
Timeout ou sem respostaReenvie o mesmo corpo com o mesmo Idempotency-Key em até 24 horas: você recebe a resposta original e nada é processado de novo.
409 idempotency_key_in_progressA primeira requisição ainda está em execução. Aguarde e tente com a mesma chave.
207Corrija e reenvie só os itens recusados, com um novo Idempotency-Key. Os criados continuam criados.
500 com summary.not_processedReenvie os itens que não foram processados. Um reference_id já usado é recusado com duplicate_payment_reference, nunca pago duas vezes.
duplicate_payment_referenceO payout já existe. Use o internal_reference e o original_status do resultado.
429Aguarde os segundos indicados em Retry-After.

Payouts criados no painel não são devolvidos pela API.