Skip to main content

O que é reconciliação

Reconciliação é o mecanismo da plataforma para resolver o estado de transações cujo resultado não pôde ser confirmado de forma imediata — seja por falha de rede, timeout ou resposta ambígua do BaaS. Quando o despacho de uma operação retorna uma resposta inconclusiva, a plataforma marca a transação com PROVIDER_RESULT_UNKNOWN e inicia um ciclo de consultas ao BaaS. Se o BaaS responder com clareza, a transação é resolvida automaticamente. Se as tentativas se esgotarem, o estado avança para RECONCILIATION_REQUIRED.

Estados que indicam reconciliação ativa

StatusSignificadoAção do integrador
PROVIDER_RESULT_UNKNOWNResposta ambígua do BaaS; reconciliação em andamentoMonitore com GET; não conclua a operação.
RECONCILIATION_REQUIREDTentativas esgotadas sem resultado claroEscale para suporte; não conclua a operação.
Nunca trate PROVIDER_RESULT_UNKNOWN ou RECONCILIATION_REQUIRED como PAID, CONFIRMED, FAILED ou qualquer outro estado terminal. A operação ainda pode ser resolvida em qualquer direção.

Como a reconciliação automática funciona

  1. Transação entra em PROVIDER_RESULT_UNKNOWN após resposta ambígua.
  2. Worker de reconciliação consulta o BaaS em intervalos crescentes (backoff).
  3. Se o BaaS confirmar: transação vai a PAID / CONFIRMED e notificação é despachada ao comerciante.
  4. Se o BaaS informar falha: transação vai a FAILED e reserva é liberada.
  5. Se o BaaS não responder após N tentativas: transação vai a RECONCILIATION_REQUIRED.

O que fazer em cada estado

PROVIDER_RESULT_UNKNOWN

  • Polling com GET periodicamente (ex.: a cada 60 segundos por até 15 minutos).
  • Aguarde o webhook pix_cash_out ou pix_cash_in com resultado.
  • Não reenvie a operação enquanto o estado for ambíguo.
curl https://api.clearpago.com.br/api/pix/cash-out/{id} \
  -H "Authorization: Bearer <seu_api_token>"

RECONCILIATION_REQUIRED

  • Escale para suporte com o id da transação e o X-Correlation-ID.
  • Mantenha a operação como “em análise” na sua base.
  • Não registre como sucesso ou falha até resolução.
  • Informe o usuário final que há uma análise em andamento, se necessário.

Reconciliação pelo integrador

Além da reconciliação automática da plataforma, o integrador deve fazer sua própria reconciliação periódica para garantir consistência entre o sistema interno e a plataforma.

Reconciliação diária recomendada

  1. Liste as transações do dia com GET /api/pix/cash-in?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD.
  2. Compare com os registros internos.
  3. Para cada divergência:
    • Transação na plataforma mas não no sistema interno: verificar se webhook foi perdido.
    • Transação no sistema interno com status diferente da plataforma: atualizar pelo dado da plataforma.
  4. Repita para cash-out, refund e ledger.

Reconciliação do ledger

# Exporte o ledger do período
curl "https://api.clearpago.com.br/api/pix/ledger?start_date=2026-04-01&end_date=2026-04-01&limit=100" \
  -H "Authorization: Bearer <seu_api_token>"
Compare soma de créditos e débitos com o esperado pelo seu sistema financeiro.

Divergências comuns e como resolver

DivergênciaCausaResolução
Webhook PAID mas GET mostra PENDINGWebhook chegou antes do estado ser persistido (raro)Aguardar alguns segundos e consultar novamente.
GET mostra PAID mas webhook não chegouWebhook perdido (5xx no seu endpoint)Reconciliar via GET; corrigir endpoint; verificar logs.
Valor no ledger diferente do webhookTarifa calculada diferenteConsultar GET /api/pix/ledger/{id} para detalhe; fee_amount_cents pode diferir.
Cash-out CONFIRMED mas sem lançamento no ledgerAtraso de workerAguardar alguns minutos; consultar ledger novamente.

Janelas de tempo orientativas

TODO: confirmar com a equipe de produto os SLAs exatos de reconciliação automática. Os valores abaixo são orientativos:
EventoJanela esperada
Cash-in normal (rede estável)Segundos a 1–2 minutos
Cash-out normal (despacho imediato)Segundos a poucos minutos
Reconciliação de PROVIDER_RESULT_UNKNOWN5–15 minutos (N tentativas com backoff)
RECONCILIATION_REQUIRED → resolução manualVariável; abrir ticket de suporte

Referências