Avant de commencer
Récupérez à nouveau le portefeuille source. Confirmez que son statut actuel autorise le paiement et que son solde disponible couvre le montant source prévu. Stockez son ID dérivé de la réponse en tant queSOURCE_WALLET_ID.
Vous avez également besoin d’une capacité de paiement prête pour le client actuel et la destination sélectionnée.
Les portefeuilles Tron existants peuvent envoyer des USDT vers un autre portefeuille Tron avec un devis stablecoin_transfers. L’entrée et la sortie doivent utiliser le même réseau et le même stablecoin. Vous ne pouvez pas créer de nouveaux portefeuilles émis sur Tron.
1. Préparer la destination
- Propre
- Tiers
Utilisez un compte bancaire externe détenu par le client lorsque le client détient l’endpoint. Créez-le avec Lisez-le avec
POST /v3/customers/{customerId}/accounts et ces en-têtes :Request headers
Request body
GET /v3/customers/{customerId}/accounts/{accountId}. Continuez uniquement lorsque son statut actuel autorise le paiement. Stockez son ID acc_ en tant que PAYOUT_DESTINATION_ID.2. Créer le devis de paiement
UtilisezPOST /v3/quotes avec ces en-têtes :
Request headers
Request body
data.id en tant que QUOTE_ID et présentez le prix et les frais renvoyés.
Choisir une route bancaire
Pour un paiement crypto vers fiat, vous pouvez définir le champ facultatifinstitutionId pour exiger une route bancaire approuvée pour le client. Omettez-le pour utiliser le routage automatique.
Request body with institutionId
- Un
institutionIdexplicite ne se rabat jamais sur une autre banque. Lorsque la banque sélectionnée n’a pas de route prête pour ce client, cette capacité et cette destination,POST /v3/quotesrenvoie422bank_not_supported_for_customeravec le pointeur/institutionId. institutionIdn’est valide que sur les devis de paiement crypto vers fiat. L’envoyer sur un devis d’encaissement, de carte ou de transfert de stablecoin renvoie400validation_error.- Les lectures du devis et du transfert renvoient l’
institutionIdde la route sélectionnée, y compris lorsqu’elle a été sélectionnée automatiquement, lorsque la banque peut être identifiée.
Paiements SWIFT
En production, les paiements SWIFT en USD nécessitent une capacité SWIFT prête qui prend en charge les paiements (swift_pooled ou swift_named) et sont financés en USDC sur Ethereum, Base ou Polygon, ou en USDT sur Ethereum ou Polygon. Le montant reçu par le bénéficiaire après frais doit être d’au moins 100.00 USD.
Une destination SWIFT nécessite l’adresse postale de la banque dans bankAddress, bankCity, bankState et bankPostalCode. Le pays du BIC doit correspondre au pays de la banque. Swipelux reprend l’adresse du bénéficiaire depuis le profil du client ou du destinataire.
Paiements Pix
Les destinations de destinataires Pix et Pix Safe reçoivent des BRL. Créez le devis de paiement avec la capacité Pix prête du client (pix_pooled), financez-le en USDC et définissez out.currency sur BRL. L’USDT ne peut pas financer un paiement en BRL.
Un paiement Pix ne peut pas comporter de frais développeur. Si le compte source a des frais développeur, définissez fees.breakdown.developer sur {"fixed": "0.00", "bips": 0} dans la requête de devis. Sinon, POST /v3/quotes renvoie 400 validation_error.
Swipelux ne calcule le prix du devis qu’une fois les coordonnées bancaires de la destination approuvées. Pendant leur vérification, POST /v3/quotes renvoie 400 validation_error avec un detail indiquant que la destination est encore en cours de vérification : demandez donc un nouveau devis une fois la vérification terminée. Si les coordonnées bancaires ont été rejetées ou si la configuration de la destination est incomplète, le detail vous invite plutôt à contacter le support, et les nouveaux devis continuent d’échouer jusqu’à ce que le support termine la configuration. Si la vérification ne peut pas être contrôlée, il renvoie 503 quote_temporarily_unavailable ; réessayez plus tard.
3. Exécuter le paiement
Créez le transfert avecPOST /v3/transfers. Utilisez une nouvelle clé pour cette exécution prévue :
Request headers
Request body
data.id du transfert en tant que TRANSFER_ID. Une création réussie lance le paiement ; elle ne prouve pas la livraison.
4. Suivre la livraison
LisezGET /v3/transfers/{transferId} après la création et après chaque événement. Utilisez les derniers data.state, data.stateDetail et data.openTaskIds pour décider s’il faut attendre, agir ou afficher un résultat terminal.
Ensuite, consultez Devis et transferts pour des montants exacts, une récupération d’exécution sûre et les tâches de transfert.