Vai al contenuto principale
Ogni payout parte da un wallet emesso ready e finanziato. Il modello di destination dipende da chi possiede l’endpoint.

Prima di iniziare

Rileggi il wallet sorgente. Conferma che il suo stato corrente consenta il payout e che il saldo disponibile copra l’importo sorgente previsto. Salva il suo ID derivato dalla risposta come SOURCE_WALLET_ID. Hai bisogno anche di una capability di payout ready per il cliente corrente e la destination selezionata. I wallet Tron esistenti possono inviare USDT a un altro wallet Tron con un quote stablecoin_transfers. Input e output devono usare la stessa rete e la stessa stablecoin. Non puoi creare nuovi wallet emessi su Tron.

1. Prepara la destination

Usa un conto bancario esterno di proprietà del cliente quando il cliente possiede l’endpoint. Crealo con POST /v3/customers/{customerId}/accounts e questi header:
Request headers
Request body
Leggilo con GET /v3/customers/{customerId}/accounts/{accountId}. Prosegui solo quando il suo stato corrente consente il payout. Salva il suo ID acc_ come PAYOUT_DESTINATION_ID.

2. Crea il quote di payout

Usa POST /v3/quotes con questi header:
Request headers
Request body
Salva data.id come QUOTE_ID e presenta prezzo e fee restituiti.

Scegli una route bancaria

Per un payout da crypto a fiat, puoi impostare il campo opzionale institutionId per richiedere una route bancaria approvata per il cliente. Omettilo per usare il routing automatico.
Request body with institutionId
  • Un institutionId esplicito non ripiega mai su un’altra banca. Quando la banca selezionata non ha una route ready per questo cliente, questa capability e questa destination, POST /v3/quotes restituisce 422 bank_not_supported_for_customer con il puntatore /institutionId.
  • institutionId è valido solo nei quote di payout da crypto a fiat. Inviarlo in un quote di pay-in, carta o trasferimento di stablecoin restituisce 400 validation_error.
  • Le letture di quote e transfer riportano l’institutionId della route selezionata, anche quando è stata selezionata automaticamente, se la banca può essere identificata.

Payout SWIFT

In produzione, i payout SWIFT in USD richiedono una capability SWIFT ready che supporti i payout (swift_pooled o swift_named) e sono finanziati con USDC su Ethereum, Base o Polygon, oppure con USDT su Ethereum o Polygon. L’importo per il destinatario al netto delle fee deve essere di almeno 100.00 USD. Una destination SWIFT richiede l’indirizzo stradale della banca in bankAddress, bankCity, bankState e bankPostalCode. Il paese del BIC deve corrispondere al paese della banca. Swipelux ricava l’indirizzo del beneficiario dal profilo del cliente o del recipient.

Payout Pix

Le destination dei recipient Pix e Pix Safe ricevono BRL. Crea il quote del payout con la capability Pix del cliente in stato ready (pix_pooled), finanzialo con USDC e imposta out.currency su BRL. USDT non può finanziare un payout in BRL. Un payout Pix non può includere una developer fee. Se l’account sorgente ha developer fee, imposta fees.breakdown.developer su {"fixed": "0.00", "bips": 0} nella richiesta di quote. In caso contrario, POST /v3/quotes restituisce 400 validation_error. Swipelux prezza il quote solo dopo che le coordinate bancarie della destination sono state approvate. Mentre sono in fase di verifica, POST /v3/quotes restituisce 400 validation_error con un detail che indica che la destination è ancora in verifica, quindi richiedi un nuovo quote al termine della verifica. Se le coordinate bancarie sono state rifiutate o la configurazione della destination è incompleta, il detail chiede invece di contattare il supporto, e i nuovi quote continuano a fallire finché il supporto non completa la configurazione. Se la verifica non può essere controllata, restituisce 503 quote_temporarily_unavailable; riprova più tardi.

3. Esegui il payout

Crea il transfer con POST /v3/transfers. Usa una nuova chiave per questa esecuzione prevista:
Request headers
Request body
Salva il data.id del transfer come TRANSFER_ID. Una creazione riuscita avvia il payout; non prova la consegna.

4. Traccia la consegna

Leggi GET /v3/transfers/{transferId} dopo la creazione e dopo ogni evento. Usa gli ultimi data.state, data.stateDetail e data.openTaskIds per decidere se attendere, agire o mostrare un risultato terminale. Successivamente, consulta Quote e transfer per gli importi esatti, il recovery sicuro dell’esecuzione e i task del transfer.