Beta — o contrato da 1.0 em evolução, ainda não em produção. Os campos podem mudar até o lançamento.
Criar depósito
POST /v1/deposits
201:
amounté o valor cobrado, inteiro na menor unidade da moeda (centavos);neté o que entra no seu saldo, já sem a taxa.currencydefine a moeda do saldo. Sem ela, o default éBRL.payment_methodescolhe o trilho; ochargeda resposta vem no formato do método (EMV do PIX, CLABE do SPEI…).- Idempotência: repetir o POST com o mesmo
external_iddevolve o depósito existente (200). delivery— só nos trilhos que redirecionam (SPEI, OXXO, PSE).redirect(padrão) devolve a URL da página de pagamento;directdevolve os dados no própriocharge, para você montar a sua tela. Veja Como funciona um trilho REDIRECT.
Moedas e métodos
charge da resposta vem no formato do método:
Depósito em cripto (USDT)
Para receber USDT direto numa carteira, usecurrency: "USDT" e payment_method: "USDT". Não há
pagador local — o charge devolve o endereço e a rede:
201:
amount em USDT também é inteiro em centavos (10000 = 100,00 USDT). A rede vai em crypto.network
(TRON, ETH…): o objeto crypto só existe no cripto, do mesmo jeito que payer só existe no fiat. O
pagador envia o USDT para o address na network indicada; a confirmação cai por webhook, igual ao fiat.
flow distingue DIRECT (o charge traz o que o pagador precisa — PIX e USDT) de REDIRECT
(o charge traz uma URL para onde você manda o pagador — SPEI, OXXO, PSE e Nequi).
Como funciona um trilho REDIRECT
No PIX você recebe um código e mostra ao pagador. Nos trilhos LATAM é diferente, e a integração muda:- Há dois endereços, com papéis diferentes.
charge.redirect_urlé para onde você manda o pagador: a página onde ele vê os dados e paga (no SPEI, a CLABE; no PSE, a escolha do banco).callback_urlé para onde ele volta quando termina, e você informa na criação. Não confunda os dois: um é a ida, o outro é a volta. - A página é de uso único. Depois de aberta ela não abre de novo. Guarde o
iddo depósito e crie uma cobrança nova se o pagador precisar recomeçar. - O valor precisa ser exato. O pagador digita o valor no app do banco dele, e é ele que precisa bater. Diferente do PIX, onde o valor viaja dentro do código.
- A volta não confirma nada; o webhook confirma. Quem fechou a aba pode ter pago, e quem voltou
pelo
callback_urlpode não ter. Só o eventodeposit.paiddiz que o dinheiro entrou.
delivery: "direct" — os dados no charge, para a sua tela
Se você prefere montar a própria página (com a sua marca, sem mandar o pagador para fora), peça
delivery: "direct". O charge volta com o que a página mostraria:
direct não há redirect_url, porque a URL é consumida ao
extrair os dados. Se a extração falhar, a resposta é um erro e a cobrança não fica de pé — crie outra
com redirect, que é sempre seguro.
Consultar / listar
paid_at, e2e_id e payer_details (dados bancários do pagador).
Estados
PENDING → PAID (pagamento confirmado) · PENDING → EXPIRED (venceu sem pagar). Um pagamento com atraso
pode levar EXPIRED → PAID — aceitamos, pois o dinheiro entrou.
Você não precisa fazer polling: registre um webhook e reaja ao evento
deposit.paid.