Como as compras parceladas são capturadas, sincronizadas e entregues através da API Pluggy.
Visão Geral#
Esta página descreve como a Pluggy captura, processa e entrega transações de compras parceladas com cartão de crédito. O objetivo é ajudar as equipes de produto e desenvolvimento a entender o comportamento esperado da API, as limitações do ecossistema de Open Finance e as melhores práticas para lidar com esse tipo de dado.
Por que este tópico é complexo?
A regulamentação de Open Finance (Banco Central do Brasil) exige que as instituições disponibilizem dados de compras parceladas, mas não especifica como esses dados devem ser formatados ou estruturados. Isso leva a comportamentos diferentes entre os bancos: alguns postam todas as parcelas de uma vez, outros as criam mês a mês, e outros retornam apenas a parcela atual.
A Pluggy está mapeando ativamente o comportamento de cada instituição e trabalhando em conjunto com o ecossistema de Open Finance para promover uma maior padronização.
Fundamentos: Contas e Transações#
Como as transações de cartão de crédito chegam via API#
Quando um usuário conecta uma conta de cartão de crédito, a Pluggy busca 12 meses de transações. Nas atualizações diárias subsequentes, os últimos 7 dias de transações recentes são buscados. Para cartões de crédito, há também um terceiro mecanismo: buscar transações por conta, explicado abaixo.
Endpoint de Transações Recentes vs. Endpoint de Contas na API de Open Finance#
A Pluggy utiliza a API de Open Finance, que possui dois fluxos distintos para capturar transações de cartão de crédito:
| Fluxo | Descrição |
|---|---|
Transações Recentes (transactions-current) | Busca os últimos 7 dias de transações. Todas as transações retornadas aqui aparecem com status PENDING e sem um billId associado. |
Transações por Conta (/bills/:billId/transactions) | Busca todas as transações vinculadas a uma conta específica, passando o ID da conta como filtro. Este endpoint é chamado uma vez por dia e, consequentemente, quando uma nova conta vence e começa a ser retornada, é chamado novamente. |
O ciclo de vida de uma transação de cartão#
Toda transação de cartão de crédito passa pelo seguinte ciclo:
- A transação aparece nas transações recentes com status
PENDINGe sem umbillId. - Quando a conta vence, a Pluggy identifica a nova conta e chama o endpoint de transações com o ID daquela conta.
- As transações daquela conta começam a retornar com um
billIdassociado e o status muda paraPOSTED. - A Pluggy dispara um webhook com as transações atualizadas (status e
billIdpreenchidos).
PENDING vs POSTED
PENDING: a transação pertence a uma conta que ainda está aberta. Não possuibillId.POSTED: a transação pertence a uma conta que já está vencida. Possui umbillIdassociado.Aviso: ao buscar apenas os últimos 7 dias de atualizações, uma transação mais antiga que passou de
PENDINGparaPOSTEDpode não aparecer. Para capturar essas mudanças, é essencial consumir o webhook de transações atualizadas (transaction/updated). Veja Webhooks.
Comportamento das Parcelas por Instituição#
A falta de padronização em Open Finance significa que cada banco retorna parcelas de maneiras diferentes. A Pluggy está mapeando o comportamento de cada instituição. Abaixo estão os padrões gerais identificados até agora.
Padrão A: Todas as parcelas postadas de uma vez#
Algumas instituições postam todas as parcelas imediatamente após a compra, já nas transações recentes. Cada parcela aparece como uma transação separada.
Como a Pluggy lida com esse padrão
- 1ª parcela: retornada com a data da transação original (data da compra).
- Parcelas restantes: retornadas com a data de postagem da conta (
billPostDate) — que corresponde ao mês de vencimento de cada parcela.- Quando a conta vence: a parcela correspondente é atualizada e recebe um
billId. A Pluggy dispara o webhook de transações atualizadas com o novobillId.
Padrão B: Parcelas postadas mês a mês#
Outras instituições criam parcelas gradualmente — uma nova parcela aparece cada vez que uma conta é fechada ou vence. Este é o comportamento mais comum entre os principais bancos.
Como a Pluggy lida com esse padrão
A Pluggy busca as transações de cada nova conta vencida. As parcelas aparecem nesse momento, já com um
billId.Aviso: ao consultar apenas o endpoint de transações com um filtro de data, essas parcelas mais antigas podem não aparecer. Use o webhook de transações criadas (
transaction/created) para garantir que nenhuma parcela seja perdida.
Comportamento especial: Janela entre o fechamento e a data de vencimento#
Em alguns bancos, há um período entre o fechamento da conta e sua data de vencimento (tipicamente de 7 a 10 dias). Durante essa janela, novas parcelas podem aparecer — ou seja, quando a conta fecha, o banco já gera a próxima parcela para a conta que ainda não está vencida.
Isso significa que a Pluggy pode retornar, via o webhook de transações criadas, uma parcela associada a uma conta que existe no endpoint de contas, mas que pode não estar vencida ainda, apenas fechada. Esse comportamento foi identificado em pelo menos um banco e pode ocorrer em outros.
Campos de Parcelas Disponíveis#
Cada transação de compra parcelada pode conter os seguintes campos (quando retornados pela instituição):
| Campo | Descrição |
|---|---|
installmentNumber | Número da parcela atual (ex: 1, 2, 3...) |
totalInstallments | Número total de parcelas da compra |
totalAmount | Valor total da compra (todas as parcelas combinadas) |
amount | Valor daquela parcela específica |
date | Data da transação (varia por banco — pode ser a data da compra ou a data de postagem da conta) |
billId | ID da conta à qual a transação está vinculada (ausente se a conta ainda não estiver vencida) |
Além dos campos acima, a API de Open Finance retorna o campo billPostDate (a data em que a transação foi postada na conta), que a Pluggy usa internamente para compor o campo date das parcelas após a primeira. Este campo não é exposto diretamente na resposta JSON da API Pluggy.
Importante: ausência de um ID de grupo
Atualmente, o Open Finance não retorna um identificador único que agrupe todas as parcelas da mesma compra. Isso significa que, para identificar que duas transações pertencem ao mesmo plano de parcelas, você precisa usar heurísticas baseadas nos campos disponíveis (
installmentNumber,totalInstallments,totalAmount, nome do comerciante, etc.).A Pluggy está avaliando a abertura de um pedido de melhoria com o ecossistema de Open Finance para solicitar esse campo de agrupamento.
Limites Operacionais e Seu Impacto nas Parcelas#
O Open Finance define limites de chamadas por CPF/CNPJ por instituição, por mês. Esses limites afetam diretamente a capacidade de sincronizar dados de cartão de crédito, incluindo parcelas.
Limites relevantes para cartões de crédito#
| Operação | Limite |
|---|---|
| Transações recentes (últimos 7 dias) | 240 chamadas por mês |
| Transações históricas (além de 7 dias até 12 meses) | 4 chamadas por mês |
| Listagem de contas | 30 chamadas por mês (aprox. 1 por dia) |
| Listagem de contas e cartões | 4 chamadas por mês |
Como esses limites afetam as parcelas?
O limite de 4 chamadas/mês para transações históricas é o mais crítico. Se um usuário tentar conectar a mesma conta várias vezes (por exemplo, porque a conexão falhou parcialmente), esse limite pode ser alcançado rapidamente.
Quando o limite é alcançado, a chamada retorna um erro de limite operacional e nenhuma nova busca de 12 meses é possível até o próximo mês.
Aviso: o limite é por CPF/CNPJ por instituição — não por item ou por cliente Pluggy. Se o usuário já compartilhou dados com outra plataforma no mesmo mês, o limite pode já ter sido parcialmente consumido.
Melhores práticas para evitar esgotar o limite#
- Evite criar múltiplas conexões com o mesmo CPF/CNPJ para o mesmo banco.
- Implemente controle de tentativas no frontend: se a conexão falhar, oriente o usuário a esperar antes de tentar novamente.
- Use o endpoint de verificação de status do item (
GET /items/{id}) após a conexão para verificar se todos os produtos foram recuperados com sucesso, antes de solicitar uma nova sincronização.
Webhooks e Atualizações de Parcelas#
Para garantir que nenhuma atualização de parcela seja perdida, é essencial consumir os webhooks da Pluggy. As parcelas podem aparecer ou ser atualizadas em momentos assíncronos, fora da janela de 7 dias de transações recentes.
Eventos relevantes para planos de parcelas#
| Evento | Quando ocorre |
|---|---|
transaction/created | Uma nova parcela apareceu (ex: o banco postou a parcela do próximo mês após o fechamento da conta). |
transaction/updated | Uma transação existente foi atualizada — por exemplo, uma parcela que estava PENDING se tornou POSTED e recebeu um billId. |
transaction/deleted | Uma transação foi removida. Isso pode ocorrer em casos ocasionais em que o banco para de retornar uma transação por alguns dias e depois a retorna novamente com um novo ID. |
Aviso: transações deletadas e recriadas
Em casos raros, um banco pode parar de retornar uma transação por 1 a 3 dias e depois retorná-la novamente. Quando isso acontece, a Pluggy remove a transação e dispara
transaction/deleted. Quando ela volta, a Pluggy disparatransaction/createdcom um novo ID.Isso pode acontecer, por exemplo, com transações de fim de semana ou durante instabilidades ocasionais na instituição. Não é um comportamento alarmante, mas deve ser tratado no lado do cliente.
Recomendações para Equipes de Desenvolvimento#
Para garantir a completude das parcelas#
- Sempre consuma os webhooks
transaction/createdetransaction/updatedpara capturar parcelas que aparecem fora da janela de 7 dias. - Não confie exclusivamente no endpoint de transações recentes para construir o histórico de parcelas.
- Ao identificar uma conta vencida, verifique se as transações daquela conta (via o endpoint de transações filtrado por
billId) correspondem ao valor total da conta — isso ajuda a detectar parcelas faltantes.
Para identificar parcelas da mesma compra#
- Use os campos
installmentNumberetotalInstallmentscomo o primeiro critério de agrupamento. - Complete com
totalAmounte nome do comerciante quando disponíveis. - Tenha em mente que o comportamento varia por banco: o mesmo conjunto de heurísticas pode não funcionar para todas as instituições.
- Siga o mapeamento por instituição que a Pluggy está desenvolvendo.
Para relatar problemas de parcelas#
- Abra um ticket com o suporte da Pluggy informando: banco, ID do item, período afetado e uma descrição do comportamento observado.
- Se possível, inclua evidências do usuário (extrato ou conta) mostrando a discrepância — isso é necessário para escalar o caso para a instituição financeira.
- Para casos estruturais (afetando múltiplos usuários), sinalize diretamente via Slack com a equipe de suporte da Pluggy para priorização.
Glossário#
| Termo | Definição |
|---|---|
billId | Identificador único de uma conta de cartão de crédito no ecossistema de Open Finance. |
billPostDate (API de Open Finance) | Data em que uma transação foi postada em uma conta. Usado pela Pluggy para determinar a data das parcelas subsequentes. |
PENDING | Status de uma transação que pertence a uma conta que ainda está aberta (não vencida). |
POSTED | Status de uma transação vinculada a uma conta que já está vencida, com billId preenchido. |
| Limite Operacional | Limite de chamadas à API de Open Finance por CPF/CNPJ por instituição, definido pelo Banco Central. |
| Transações Recentes | Endpoint que retorna os últimos 7 dias de transações de uma conta ou cartão. |
| Transações Históricas | Busca de transações além de 7 dias (até 12 meses). Limitada a 4 chamadas por mês por CPF/CNPJ por banco. |
| Webhook | Notificação enviada pela Pluggy para o sistema do cliente quando um evento ocorre (ex: transação criada, atualizada ou deletada). |
Para perguntas, entre em contato com a equipe de Suporte via Slack.
