Visão Geral
O payout converte USDC/USDT em BRL e liquida via conta PIX cadastrada. Pré-requisito: ter uma conta bancária criada (/exchange/bank-accounts). Fluxo:
- Criar a payout quote (
POST /exchange/payout-quote) - Aprovar o token conforme o
contractretornado (approve) - Executar o payout (
POST /exchange/payout)
1. Criar Payout Quote
Endpoint:POST /exchange/payout-quoteEntrada (conceito):
bank_account_id: ID interno da conta PIX já criadacurrency_type:sender(você envia cripto) oureceiver(define BRL a receber)cover_fees: quem cobre as taxasrequest_amount: valor conformecurrency_typenetwork: base, polygon, ethereum, tron, solanatoken: USDC ou USDT
quotation/commercial_quotation: taxas aplicadasreceiver_amount/sender_amount: valores em BRL (valores reais, não centavos)contract: instruções para aprovação on-chainexpires_at: crie nova quote após expirar
2. Aprovação on-chain (contract)
O campocontract retorna tudo que você precisa para autorizar o envio do token:
abi: ABI do token (ERC20)amount: quantidade a aprovar (em unidades do token)address: tokennetwork:{ name, chainId }functionName: geralmenteapprovecontractAddress: endereço a ser aprovado como spender
- Conecte a carteira na rede
network.chainId. - Chame
approve(contractAddress, amount)com a ABI e endereços fornecidos. - Aguarde a confirmação on-chain antes de chamar o payout.
3. Executar o Payout
Endpoint:POST /exchange/payoutEntrada (conceito):
payout_quote_id: quote válida (não expirada)sender_wallet_address: carteira que enviará o tokennetwork: mesma rede usada na quote/aprovação
status: estado atual (ex.:processing)payout_id: identificador externotracking_transaction: etapa on-chain (hash, step/status)tracking_payment: pagamento/saque bancário (provider info)tracking_liquidity: liquidez do provedortracking_partner_fee: taxa do parceirotracking_complete: consolidação final
Erros comuns
- 400: parâmetros inválidos (rede/token fora do enum, request_amount inválido)
- 404: bank account ou receiver não encontrados
- 500: erro ao criar ou processar payout
Boas práticas
- Reutilize
payout_quote_idapenas enquanto a quote não expirar. - Respeite a mesma
networkna aprovação e noPOST /exchange/payout. - Faça idempotência no seu backend (ex.: por
payout_quote_id). - Logue o
payout_idpara correlacionar webhooks/status.
Referências rápidas
- Cotação:
/exchange/payout-quote - Execução:
/exchange/payout - Conta bancária (PIX):
/exchange/bank-accounts
