Envoyer un payout

De la vérification du solde à la confirmation du transfert, pour un payout ou un lot de jusqu'à 50.

  1. 1

    Vérifiez le solde

    GET /v1/balances renvoie un solde par token ; la clé de chaque token est le balance_key renvoyé par GET /v1/summary/tokens. Quand available contient la clé, utilisez cette valeur : le reste est bloqué par des dépôts pas encore définitifs. min_withdrawal et max_withdrawal par token viennent de GET /v1/summary/tokens.

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

    Créez le payout

    POST /v1/payout avec un objet ou une liste de jusqu'à 50. Donnez à chaque payout son propre reference_id et envoyez un Idempotency-Key par requête. feetakenfromamount 1 retire les frais du montant ; 0 les ajoute au débit.

    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

    Lisez le résultat de chaque élément

    200 signifie que tous les éléments ont été créés, 207 une partie, 400 aucun. results contient une entrée par élément, dans l'ordre d'envoi, avec son index. Conservez l'internal_reference de chaque payout créé.

  4. 4

    Recevez le webhook

    payment_processed (data.status success, avec le hash de la transaction dans data.transactions) quand le transfert est fait, ou payment_failed quand il ne peut pas aboutir. Vérifiez la signature et dédoublonnez sur data.internal_reference avec event.

  5. 5

    Rapprochez

    GET /v1/check-payout/{internal_reference} renvoie le payout à tout moment. GET /v1/statements liste WITHDRAWAL pour le débit, et RATE et FEE pour les frais.

Que faire en cas d'échec

Deux choses vous empêchent de payer deux fois : l'Idempotency-Key de la requête et le reference_id de chaque payout.

SituationQue faire
Timeout ou pas de réponseRenvoyez le même corps avec le même Idempotency-Key dans les 24 heures : vous recevez la réponse d'origine et rien n'est retraité.
409 idempotency_key_in_progressLa première requête est encore en cours. Attendez et réessayez avec la même clé.
207Corrigez et renvoyez seulement les éléments refusés, avec un nouvel Idempotency-Key. Ceux qui ont été créés le restent.
500 avec summary.not_processedRenvoyez les éléments non traités. Un reference_id déjà utilisé est refusé avec duplicate_payment_reference, jamais payé deux fois.
duplicate_payment_referenceLe payout existe déjà. Utilisez l'internal_reference et l'original_status du résultat.
429Attendez le nombre de secondes indiqué par Retry-After.

Les payouts créés dans le panneau ne sont pas renvoyés par l'API.