POST /v1/payouts. O que muda é o method: chave PIX, código copia e
cola, LTC ou USDT.
PIX
Sai na hora ou entra na fila de aprovação. O
status da resposta diz qual foi.LTC
Debita o saldo em Litecoin e envia após aprovação.
USDT
Converte BRL e entrega USDT na rede BEP20 em segundos.
Saque PIX
Resposta 201
string
required
pix, pix_code (código copia e cola), ltc ou usd.number
required
Valor em reais. O mínimo é o configurado para a sua conta (R$ 5,00 por padrão;
o erro de valor baixo devolve
minAmount com o mínimo vigente). Máximo de
R$ 999.999,99, sempre limitado ao withdrawable da carteira.string
required
Chave PIX, endereço LTC ou endereço USDT BEP20, conforme o
method.number
Quantidade em LTC. Obrigatório quando
method é ltc.A chave PIX precisa estar verificada no painel antes do primeiro saque. Sem isso a
resposta é
403.Saque LTC
cryptoAmount é obrigatório aqui e precisa ser maior que zero. O saldo debitado é o
cryptoBalanceLtc da carteira, não o saldo em reais.
Ler um código antes de pagar
O caminho recomendado tem três passos:
POST /v1/payouts/decode para ler o código,
a sua confirmação (tela, aprovação interna, o que fizer sentido) e só então
POST /v1/payouts com method: "pix_code". Pagar direto funciona, mas aí você só
descobre destino e valor depois que o PIX saiu, e ele não volta.POST /v1/payouts/decode diz o que tem dentro do BR Code sem mover dinheiro: destino,
valor, se o valor é fixo e a taxa que entra por cima. É com ela que você monta a tela de
confirmação, ou a checagem automática que compara o que o código diz com o que você
esperava pagar.
Precisa da mesma permissão do pagamento (
saques.pix): quem pode pagar pode inspecionar.
Não existe em sandbox, porque a leitura consulta o banco sobre uma cobrança de verdade.
Código inválido, ou destino que não pode ser pago por aqui, vem como 400 com
valid: false e o motivo.
Pagar um código copia e cola
method: "pix_code" paga um BR Code (o “copia e cola” do PIX) com o saldo da carteira.
Serve pra quitar cobrança de fornecedor, boleto-QR, conta de serviço: em vez de você
informar a chave do destino, o código carrega o destino e o valor.
Antes disto, leia o código. O pagamento é imediato e
não tem cancelamento.
Resposta 200
Quem manda no valor
Quase sempre o código, não você:string
required
O copia e cola completo. Quebras de linha são ignoradas; o resto vai íntegro, porque é
ele que carrega o destino.
number
Valor em reais. Só entra em QR estático sem valor: nos demais, o valor é o do código,
e enviar um número diferente devolve
400 em vez de pagar.saques.pix na chave.
Como saber o desfecho
Pagamento de código não é saque, então ele tem família própria de evento:pix_payment.completed e pix_payment.failed. Eles carregam paymentId, que é o mesmo
payment.id devolvido pelo pagamento, pra amarrar os dois sem tabela de-para.
Isso importa porque a resposta do pagamento pode vir processing: o banco não confirmou
ainda, e quem fecha é a conciliação minutos depois. Sem escutar o evento, esse pagamento
fica sem desfecho do seu lado. Nunca repita um processing: ele pode ter saído.
O corpo do evento, campo a campo, incluindo E2E, recebedor e a URL do comprovante, está
em webhooks de saque.
O que pode barrar antes de pagar
Não funciona em sandbox: o pagamento lê um código real e envia PIX real. Com chave
ps_test_ a resposta é 400, tanto aqui quanto no decode.Quando o banco não confirma
As mesmas três saídas do envio imediato, pelo mesmo motivo:200, status: "completed" ou "processing". O PIX saiu. Em processing só falta a
confirmação do banco: trate como pago e não reenvie.
400, refunded: true. O banco recusou e o saldo voltou inteiro, taxa junto: não
houve serviço pra cobrar.
202, requiresReview: true. Não veio resposta do banco. O pagamento pode ter
saído, então o valor continua debitado até a verificação. Não repita: acompanhe
pelo code (PAY-...) em GET /v1/payouts.
Quando o PIX sai na hora
O saque PIX pode ser enviado dentro da própria requisição, sem passar por fila. É a mesma chamada de sempre: a plataforma decide a rota e ostatus da resposta diz o que
aconteceu.
Resposta 201
É a mesma API do saque comum. Quem decide a rota é a plataforma, e o seu código
trata pelo
status da resposta, nunca presumindo qual foi.
Todo saque PIX pela API sai imediato por padrão. Dois casos fogem disso, e nos dois
o pedido continua valendo: ele entra na fila de aprovação em vez de virar erro. A
resposta é 201 com status: "pending" e um turboReason dizendo por quê:
Em ambos o saldo já foi debitado no
201, igual ao envio imediato. O que muda é
quando o dinheiro chega ao destino.
O que cada resposta significa
Escreva o seu handler pra estes casos e ele cobre as duas rotas de uma vez:201, status: "pending". Entrou na fila de aprovação, pelo motivo que vem em
turboReason. Você recebe withdrawal.completed ou
withdrawal.denied quando resolver. Não reenvie: o saldo já saiu
da carteira e um segundo pedido vira um segundo saque.
201, status: "completed". Pago e confirmado. O recipientName é o nome que
o banco registrou como dono da chave: confira que pagou a pessoa certa.
201, status: "processing". O PIX já saiu; só falta a confirmação do
banco, que chega pelo webhook. Trate como pago, não como pendente, e não reenvie.
400. O pedido está errado e nada se moveu (ou o saldo já voltou, quando a
resposta traz refunded: true). A mensagem diz o quê: valor fora da faixa (o erro
de mínimo traz minAmount), chave vazia, saldo insuficiente (available na
resposta), ou o banco recusou a chave do recebedor:
definitiveRejection: true significa que repetir o mesmo request nunca vai
funcionar: conserte a chave antes de tentar de novo.
502, refunded: true. O envio não pôde ser concluído e o saldo já voltou.
Nada saiu. Tente de novo mais tarde.
202, requiresReview: true. O único caso que exige cuidado: a transferência
pode ter sido enviada e a confirmação não chegou. O valor permanece debitado até
a verificação: é isso que garante que o mesmo saque nunca vira dois PIX. Não
repita o request; acompanhe o code em GET /v1/payouts e pelo webhook.
409 / 429. Já existe um envio em andamento (ou requests demais em
sequência). Dinheiro pode estar em trânsito: aguarde, consulte GET /v1/payouts e
só então decida reenviar.
403. Chave PIX pendente de verificação. Resolve no painel, em Carteira.
503. A plataforma não conseguiu confirmar as condições do saque e nada foi
debitado. Repita. Janela de manutenção do envio imediato não cai aqui: ela volta
201 com turboReason: "turbo_maintenance", porque o pedido foi aceito.
Regra de bolso: 201 olhe o status; 400 conserte e repita; 502/503 repita
mais tarde; 202/409/429 congele e consulte; refunded: true diz se o saldo já
voltou.
Saque em USDT
Converte o saldo em reais e envia USDT na rede BEP20 na hora.Resposta 201
Por segurança contra fraude, o saque em USDT só é liberado depois que a loja fizer o
primeiro saque em PIX. Antes disso a resposta é
403.Status
PIX comum
Aguardando aprovação.
todos
Pago.
todos
Negado. O valor volta para o saldo.
turbo e USDT
O pagamento foi enviado e a confirmação ainda não voltou. O dinheiro já saiu. Não
repita o request.
Erros e o que fazer
Listando
walletAddress volta sempre mascarado, com os primeiros caracteres e ***. Dado
sensível (CPF, chave PIX completa) não aparece em resposta nem em log.A listagem devolve o status cru, em português:
pendente, concluido, negado,
processing (turbo aguardando o banco) e falhou. São esses os valores do filtro
?status=. O status em inglês (pending/completed/processing) aparece só na
resposta do POST.
