Skip to main content
Tutorial para montar um recuperador de vendas (carrinho abandonado, PIX não pago, boleto vencido) usando a API pública v1. Você vai listar cobranças pendentes, pegar nome, e-mail e telefone do comprador e disparar follow-up no seu CRM, WhatsApp ou e-mail transacional.

Visão geral

O extrato da conta expõe o objeto payer com os dados preenchidos no checkout do link de pagamento — os mesmos que você vê no extrato da dashboard.
Após o pagamento PIX confirmado, name e document passam a refletir o comprovante bancário. email e phone continuam vindo do checkout do link quando disponíveis.

Permissões necessárias

Chave com preset read já inclui account/transactions. Detalhes: Permissões da API key.

1. Listar cobranças candidatas à recuperação

O endpoint principal é o extrato da conta. Filtre entradas pendentes criadas nas últimas horas:

Filtros úteis

Paginação: incremente page até page > pages. Máximo pageSize=100.

2. Ler os dados do cliente em cada item

Exemplo de item retornado (campos relevantes):
Regras práticas:
  • Sem payer ou sem contato — cobrança criada direto na API sem checkout de link; não dá para recuperar por e-mail/WhatsApp via extrato.
  • payer.email ou payer.phone — suficiente para disparar follow-up.
  • externalReference — chave para cruzar com pedido no seu banco.
  • id — chave única da transação WovePay (use para deduplicar).
  • qrcodeUrl — link do checkout para reenviar na mensagem.
Documentação completa do extrato

3. Script de exemplo (Node.js)

Job agendado (cron a cada 15–30 min) que monta a fila de recuperação:
Respeite o rate limit (100 req/min). Prefira uma listagem paginada a cada 15–30 min em vez de polling contínuo.

4. Parar a recuperação quando pagar

Opção A — Webhook (recomendado)

Cadastre payment.paid e payment_link.paid. Ao receber o evento, marque transactionId ou externalReference como pago no seu sistema e não envie mais mensagens.
Webhooks na prática

Opção B — Reconsultar o extrato

No próximo ciclo do job, itens pagos saem do filtro status=PENDING. Mais simples, porém com atraso de até um ciclo do cron.

5. PIX expirado — segunda chance

QR expirado fica com status=CANCELED. Busque com janela recente:
Se payer ainda tiver contato, envie mensagem com um novo link de pagamento (criar link ou nova cobrança PIX) em vez do qrcodeUrl antigo. Para recuperação rica em contato, venda pelo link de pagamento ou garanta que o checkout colete e-mail/telefone antes de gerar a cobrança. Consulta pontual de sessão: GET /payment-links/sessions/get.

7. Boas práticas

Deduplicação

Guarde transactionId (campo id) ou externalReference com timestamp do último contato. Não envie a mesma sequência duas vezes.

Janela de recuperação

LGPD e opt-out

Use os dados apenas para concluir a compra iniciada. Ofereça descadastro e não compartilhe contatos com terceiros sem base legal.

Subcontas

Se cada lojista tem subconta, filtre merchantSubaccountId no extrato para recuperar só as vendas daquele parceiro.

Erros frequentes

Mais ajuda: Troubleshooting · Extrato — referência