Atualizações Recentes
Assinaturas: checkout e assinatura agora têm rotas separadas
Quando você cria uma assinatura, existem dois objetos:Até agora, o checkout de assinatura não aparecia em nenhuma listagem. A partir de hoje, ele tem rotas próprias.Novas rotas:
- Buscar checkout de assinatura:
GET /v2/subscriptions/checkouts/get - Listar checkouts de assinatura:
GET /v2/subscriptions/checkouts/list - Deletar checkout de assinatura:
POST /v2/subscriptions/checkouts/delete(não cancela as assinaturas já criadas)
- Toda assinatura agora traz o campo
checkoutId. - Um checkout pode gerar várias assinaturas, uma por cliente que pagou. Para encontrá-las, use
GET /v2/subscriptions/list?checkoutId=bill_....
Correções em checkouts e assinaturas
GET /v2/subscriptions/get: os filtrosexternalIdecustomerIdagora funcionam.- Rotas de busca exigem um identificador:
/checkouts/get,/payment-links/gete/subscriptions/getpedemid,externalIdoucustomerId. Antes, sem nenhum deles, retornavam um registro qualquer. customerIdinexistente não retorna mais erro 500.- Filtro
method:method=PIXagora também traz checkouts que aceitam PIX junto com outros métodos. - Status atualizado mais rápido: o cache das rotas de busca caiu de 1 hora para 60 segundos.
- Reembolso de assinatura: a mensagem de erro agora diz que esse reembolso não é suportado pela API v2, em vez de indicar outra rota.
Webhooks: retentativas automáticas
Quando seu endpoint de webhook fica fora do ar ou responde com erro temporário, a AbacatePay agora reenvia o evento automaticamente até ele ser entregue.O que mudou:- Falhas temporárias são retentadas em 5s, 5min, 30min, 2h, 5h e 10h — até 7 tentativas em cerca de 18 horas
- Geram retentativa: timeout de 30 segundos, erro de conexão/DNS/TLS,
5xx,408e429 - Não geram retentativa:
3xxe os demais4xx(ex.:400,401,404).410 Gonecontinua desativando o webhook - Todas as tentativas de um evento chegam com o mesmo
idno corpo, para você ignorar duplicatas - Cada tentativa aparece nos logs do webhook no dashboard
- Desativar ou excluir o webhook descarta as retentativas pendentes
- O reenvio manual pelo dashboard continua fazendo uma única tentativa
- Vale para webhooks v1 e v2, em Dev mode e em Produção
PIX transparente: travar o pagador (ensureSameTaxId)
Agora é possível exigir que o PIX seja pago pelo mesmo CPF/CNPJ informado no cliente da cobrança. Se outra pessoa tentar pagar o QR Code, o pagamento é recusado.O que mudou:- Novo campo opcional
ensureSameTaxId(boolean, padrãofalse) emPOST /v2/transparents/createcommethod: "PIX" - Exige
customercomtaxId; sem isso a API retornaensureSameTaxId requires a customer with taxId - Depende do provedor de PIX da conta — se o provedor ativo não suportar a trava, a API retorna
ensureSameTaxId is not supported by the current PIX provider - Ignorado em boleto e não aplicado em
devMode
Listagem: filtro por data (startDate / endDate)
Todos os endpoints de listagem da API v2 agora suportam filtro por intervalo de datas de criação, além da paginação por cursor já existente.O que mudou:- Novos query params opcionais
startDateeendDate(YYYY-MM-DD) em todas as rotasGET /v2/*/list - Compatível com
limit,afterebefore— paginação e filtro de data podem ser usados juntos - As datas são interpretadas no fuso horário
America/Sao_Paulo(início do dia parastartDate, fim do dia paraendDate) - Validações aplicadas automaticamente:
startDatenão pode ser posterior aendDate- Nenhuma data pode ser anterior a
2024-01-01 - Nenhuma data pode ser superior a 1 ano no futuro em relação à data atual
*/list da v2.Exemplo:Boleto: data de vencimento customizável (dueDate)
Agora é possível definir a data de vencimento do boleto via API. Antes o vencimento era sempre de 3 dias úteis.O que mudou:- Novo campo opcional
dueDate(YYYY-MM-DD) emPOST /v2/checkouts/createePOST /v2/transparents/create(commethod: "BOLETO") - Se omitido, o vencimento padrão continua sendo 3 dias úteis
- Regras: só válido com boleto; não pode ser data no passado; máximo de 365 dias no futuro
- A resposta do checkout expõe
dueDate(string | null) - No transparente, a resposta continua com
expiresAt(ISO datetime no fim do dia dodueDate)
Saques via API v1: validação de titularidade obrigatória
A partir de hoje, saques criados via API v1 passam a ter a titularidade do destinatário validada. Não será mais permitido enviar dinheiro para uma chave PIX cujo CPF/CNPJ seja diferente do CPF/CNPJ da sua conta AbacatePay.O que mudou:- Saques via
POST /v1/payouts/createagora rejeitam chaves PIX cujotaxIddo titular seja diferente dotaxIdda conta autenticada - Tentativas de saque para chaves de terceiros retornam erro
400com a mensagem indicando a incompatibilidade de titularidade
Checkout Transparente: campo receiptUrl na resposta
Os endpoints de checkout transparente agora retornam o campo receiptUrl no objeto de resposta, em todos os métodos de pagamento (PIX, Boleto e Cartão).O que mudou:- Adicionado campo
receiptUrl(string | null) às respostas dePOST /v2/transparents/create,GET /v2/transparents/geteGET /v2/transparents/list - O campo é
nullenquanto a cobrança está pendente e é preenchido automaticamente com a URL do comprovante após o pagamento ser confirmado
Produtos digitais: arquivo para download
Produtos agora suportam um PDF vinculado para entrega digital. Após o pagamento ser confirmado, o comprador recebe acesso automático ao arquivo — sem nenhuma etapa manual da sua parte.Casos de uso: e-books, ingressos, licenças de software, apostilas, certificados.O que mudou:- Novo campo opcional
fileUrlemPOST /v2/products/create— informe a URL pública de um PDF (máximo 20 MB); a AbacatePay baixa e armazena o arquivo de forma segura - Novo campo
hasFile(boolean) no modeloProduct— retornado em todos os endpoints de produto; indica se há arquivo vinculado - O URL real do arquivo nunca é exposto pela API — segurança por padrão
Correção: imageUrl de produto agora funciona via API
O campo imageUrl em POST /v2/products/create não estava sendo processado corretamente. A imagem era recebida mas ignorada — o produto era criado sem imagem mesmo quando uma URL válida era enviada.O que foi corrigido:- A API agora baixa a imagem da URL fornecida e a armazena internamente (assim como já ocorre com
fileUrl) - O campo foi renomeado de
imageparaimageUrlno contrato da API, corrigindo uma inconsistência que impedia o campo de ser reconhecido - Validações adicionadas: a URL deve apontar para um arquivo de imagem válido; tamanho máximo de 5 MB
imageUrl.Assinaturas: novo ciclo trimestral (QUARTERLY) e PIX Automático
Duas melhorias no fluxo de assinaturas foram lançadas hoje.Ciclo trimestral
O valorQUARTERLY foi adicionado ao campo cycle de produtos e ao campo frequency.cycle de assinaturas. Use para cobranças a cada 3 meses.Ciclos disponíveis: WEEKLY · MONTHLY · QUARTERLY · SEMIANNUALLY · ANNUALLYPIX Automático para assinaturas
Lojas com o recurso PIX Automático habilitado podem agora criar assinaturas commethods: ["PIX"]. Anteriormente, assinaturas aceitavam apenas cartão de crédito.PIX Automático para assinaturas está disponível mediante habilitação no dashboard. Entre em contato com o suporte caso seu plano ainda não tenha acesso.
Reembolsos via API
Três novos endpoints permitem solicitar reembolso diretamente pela API, cobrindo os três fluxos de cobrança da plataforma.Permissão necessária:
REFUND:CREATEBody (todos os endpoints):Use o
id correto para cada rota: bill_ refere-se ao checkout, enquanto char_, pix_char_ e card_ referem-se à cobrança individual. Passar o ID errado retorna uma mensagem de erro indicando qual rota usar.Assinaturas: cancelar, alterar plano e registrar uso
Três novos endpoints de gerenciamento de assinaturas foram adicionados à API v2, completando o ciclo de vida de cobranças recorrentes.O que mudou:POST /v2/subscriptions/cancel— cancela uma assinatura ativa imediatamente, interrompendo todas as cobranças futurasPOST /v2/subscriptions/change-plan— troca o produto principal da assinatura (upgrade ou downgrade); o novo valor começa a ser cobrado no próximo cicloPOST /v2/subscriptions/record-usage— registra unidades de uso de produtos pay-as-you-go vinculados à assinatura; o total é incluído na próxima cobrança do ciclo
Consulte a documentação de assinaturas para exemplos completos e detalhes de cada endpoint.
Webhooks de Assinatura: novos eventos subscription.plan_changed e subscription.payment_failed
Dois novos eventos de webhook foram adicionados ao fluxo de assinaturas, dando mais visibilidade sobre o ciclo de vida das cobranças recorrentes dos seus clientes.O que mudou:subscription.plan_changed— disparado quando o cliente muda de plano dentro de uma assinatura ativa (upgrade ou downgrade). O payload inclui o objetosubscriptionatualizado com o novo valor e frequência.subscription.payment_failed— disparado quando uma tentativa de cobrança recorrente falha (ex: cartão recusado, saldo insuficiente). O payload inclui o objetopaymentcom o statusFAILEDe o camporeasonindicando o motivo da falha.
API v2 disponível para todos
A API v2 está agora disponível publicamente para todos os integradores, encerrando a fase beta. Não é mais necessário entrar em contato com o suporte para obter acesso.O que mudou:- A API v2 deixa de ser exclusiva para clientes selecionados e passa a ser o padrão para todos
- Novos cadastros já têm acesso à v2 diretamente, sem nenhuma etapa adicional
- Toda a documentação oficial passa a referenciar a v2 como versão atual
Checkout Transparente: rotas de Boleto e Boleto Transparente
Adicionadas as rotas de Boleto e Boleto Transparente ao Checkout Transparente, permitindo a criação de cobranças via boleto bancário diretamente pela API.O que mudou:- Adicionado suporte ao método
BOLETOna rotaPOST /v2/transparents/create - Boleto passa a ser uma opção de pagamento no fluxo de checkout transparente
Checkouts e Assinaturas: suporte ao campo metadata na criação
As rotas de criação de cobrança passam a aceitar e persistir um campo metadata customizado enviado pelo integrador.O que mudou:- Adicionado campo
metadata(objeto chave-valor) no body das rotas:POST /v2/checkouts/createPOST /v2/subscriptions/create
- O
metadataenviado é salvo e retornado no objeto de cobrança dentro do campometadata
Webhooks de Assinatura: novo campo checkout no payload
Os eventos de assinatura (subscription.completed, subscription.renewed, subscription.cancelled) passam a retornar um novo campo checkout dentro de data, contendo o objeto completo do checkout associado à cobrança.O que mudou:- Adicionado campo
checkoutemdatacom os detalhes do checkout associado à cobrança (id, url, amount, items, status, methods, etc.) - Adicionado campo
idno nível raiz do payload (identificador único do log do webhook)
Nova versão da API
A API v2 está em beta e passa a ser o novo padrão oficial. Tudo que é novo daqui pra frente roda nela.O que isso significa na prática?Todas as features novas — Checkout Transparente, Cartão de crédito, Assinatura ou qualquer novidade que vier — estarão disponíveis somente na API v2. Se você quiser usar o que há de mais recente, v2 é o caminho.Como usar a API v2?A API v2 está disponível para clientes selecionados até o fim da fase beta. Se você quiser participar do beta, entre em contato com o nosso suporte ao cliente.Posso usar v1 e v2 ao mesmo tempo?Pode, sim. As duas convivem em paralelo. Mas a gente recomenda migrar para a v2 o quanto antes: mais estabilidade e acesso a todas as funcionalidades novas.E a API v1?A API v1 segue funcionando e será mantida até 1º de março de 2028. Depois dessa data ela será descontinuada. Então vale ir se organizando e fazendo a migração com calma.Se você ainda precisa consultar a documentação da v1 durante a migração:- Em produção, selecione a versão v1 no seletor de versões no topo desta documentação ou acessar o link
Esquecemos os updates antes da v2. Prometemos que todo novo update aparecerá por aqui.
