/v1/payments o productId é opcional: sem ele, você manda valueCents e funciona
igual. O que separa de verdade é o que cada um faz além disso.
Uma coisa que os dois aceitam: o campo
supplier, que amarra a cobrança a um produto
da sua loja pra entrega automática. Isso é
independente de qual endpoint você escolheu.
Criando
Resposta
Em
/v1/payments, se você mandar productId e valueCents ao mesmo tempo, o preço do
produto vence. Produto em moeda diferente de BRL é convertido para real na hora da
cobrança.Sem productId, o valueCents manda e a description vira o nome do pagamento
(padrão "Pagamento" quando você não mandar nenhuma).Valor mínimo
O piso da plataforma é R$ 0,80 (valueCents: 80), mas cada loja pode configurar um
mínimo maior no painel. Quando o valor não passa, o erro 400 já diz qual é o mínimo
daquela conta:
80 no seu código.
Ciclo de vida
1
pending
A cobrança existe e o
brCode funciona. Dura 30 minutos.2
paid
O PIX caiu. O webhook sai nesse momento e o valor entra no seu saldo.
3
expired
Passou dos 30 minutos sem pagamento. O código não funciona mais. Para tentar de novo,
crie outra cobrança.
4
refunded / cancelled
Estorno ou cancelamento posterior. Vale conferir esses status antes de entregar algo
de valor alto.
Reconciliando
Faça as duas coisas. Elas cobrem falhas diferentes.Webhook: rápido, mas não confiável sozinho
Webhook: rápido, mas não confiável sozinho
A entrega é feita assim que o pagamento confirma, com reentrega automática em caso de
falha. Ainda assim, a sua URL é pública e qualquer um pode chamá-la.Sempre valide a assinatura e deduplique pelo header
X-Webhook-Id.Consulta: lenta, mas definitiva
Consulta: lenta, mas definitiva
GET /v1/charges/{paymentId} e GET /v1/payments/{paymentId} devolvem o estado
atual. Use antes de entregar algo caro, e como rede de segurança quando o webhook não
chegou.Polling: último recurso
Polling: último recurso
Se precisar mesmo, use intervalo de 5 segundos ou mais e pare no primeiro status
final. O limite de 120 requisições por minuto vale para tudo
somado.
Dados do pagador
No webhookcharge.paid chegam campos que não existem na criação, porque vêm do banco:
Servem para conciliação bancária e para responder disputa. CPF,
telefone e endereço não são enviados em webhook.
Dividir o valor
Marketplace, comissão ou sociedade, resolvido no momento do pagamento.
Entregar sozinho
Chave ou conta liberada assim que o PIX confirma.

