Pagamentos
Relatórios e indicadores
A visão geral do período e os relatórios com filtros e exportação em CSV - aprovação por adquirente e bandeira, recusas pela ABECS, recuperação por retentativa, MRR e churn, split e recebíveis.
Guia de integração · 14 min de leitura
Nesta página
Esta pagina cobre dois grupos de indicadores, os dois com o escopo
reports:read e validos para o ambiente da credencial:
- a visao geral, que reune numa chamada so os indicadores da tela inicial
do painel (
GET /v1/analytics/overview); - os relatorios do menu Relatorios, cada um com periodo livre, filtros e
exportacao em CSV (
GET /v1/reports/{slug}), mais abaixo em Relatorios.
Visao geral
curl "http://localhost:3333/v1/analytics/overview?period=7d" \
-H "Authorization: Bearer $MINSTREL_API_KEY"
Periodos
period | Janela | Serie |
|---|---|---|
today | Hoje, da meia-noite ate agora | Por hora |
7d | Os 6 dias anteriores inteiros mais hoje ate agora | Por dia |
30d (padrao) | Os 29 dias anteriores inteiros mais hoje ate agora | Por dia |
90d | Os 89 dias anteriores inteiros mais hoje ate agora | Por dia |
Os dias sao os do fuso da organizacao (veja
Configuracoes): uma venda as 22h
de Brasilia e do mesmo dia para quem vende, embora ja seja o dia seguinte em
UTC. Cada total vem com o periodo anterior, que e a mesma janela deslocada em
dias inteiros: em 7d, hoje ate as 14h compara com o mesmo dia da semana
passada ate as 14h. Comparar com as ultimas 168 horas corridas faria a variacao
oscilar com a hora da consulta, e nao com o negocio.
Valores em centavos; taxas em basis points (9240 = 92,40%).
Blocos da resposta
| Bloco | Conteudo |
|---|---|
period | A janela usada: from, to, previousFrom, previousTo, granularidade e fuso. |
totals | current e previous: transacoes, aprovadas, recusadas, em andamento, approvalRateBps, volume capturado, ticket medio, vendas recuperadas e estornos. |
series | Um ponto por hora ou dia, com o periodo atual e o anterior lado a lado (segunda com segunda). |
declines | Recusas do periodo por motivo. |
connectors | Desempenho de cada conta de conector. |
mix | Divisao por bandeira (brands), meio de pagamento (methods) e parcelamento (installments: single, 2-6, 7-12). |
recurring | O retrato da recorrencia agora. |
alerts | O que pede acao. |
setup | Contas que autorizam, fluxos publicados, endpoints de webhook e se ja houve pagamento. complete e verdadeiro com ao menos uma conta que autoriza e um fluxo publicado. |
recentPayments | As 8 vendas mais recentes. So vem para credencial com payments:read; sem ele, null. |
Os totais usam as mesmas definicoes de Transacoes:
- aprovado e o pagamento que o emissor aprovou em algum momento, inclusive se foi estornado, contestado ou cancelado depois;
- a taxa de aprovacao e aprovados sobre aprovados mais recusados - o que
ainda esta em andamento fica fora - e vem
nullsem nenhuma decisao; - volume e o valor capturado;
- recuperado separa
fallback(aprovado em outra tentativa do mesmo pagamento) deretry(aprovado numa fatura cuja cobranca anterior falhou); - estornos contam pela data do estorno, nao da venda.
Recusas
Cada item de declines.reasons traz o motivo canonico (reason), o rotulo e a
acao recomendada pela tabela ABECS (label, retryAction), quantidade, valor,
a quantidade no periodo anterior e a participacao no total (shareBps). O
campo kind separa tres origens que pedem leituras diferentes:
kind | Significado |
|---|---|
issuer | O emissor recusou, com motivo classificado. |
technical | Houve tentativa, mas o conector falhou: nao ha motivo do emissor. |
flow | O proprio fluxo barrou antes do adquirente: regra, antifraude ou revisao recusada. |
A reversibilidade vem do que foi gravado em cada recusa, porque a mesma
situacao muda de classe conforme a bandeira (o 57 e irreversivel na Visa e na
Elo, reversivel na Mastercard). Quando as bandeiras divergem dentro do motivo,
mixedReversibility vem true. Veja
Retentativa e codigos de recusa.
Conectores
Contado por tentativa, e nao por pagamento: e o que mostra o adquirente que
recusa mais, inclusive quando o fallback salvou a venda em outro. Cada conta
traz tentativas, aprovadas, recusadas, falhas tecnicas, recuperadas,
approvalRateBps contra previousApprovalRateBps, volume, latencia media,
saude (health) e circuitOpen. Contas que autorizam aparecem mesmo sem
tentativa; contas removidas aparecem enquanto tiverem tentativas no periodo.
Recorrencia
recurring nao depende do periodo: e a foto de agora. Traz o MRR (assinaturas
active e past_due, convertidas para mes), o ARR (MRR vezes 12), as
assinaturas por situacao (paying soma ativas e em atraso) e as faturas em
aberto, a vencer em 7 dias, vencidas e incobraveis, com quantidade e valor. Sao
as mesmas regras de GET /v1/billing/summary, em
Assinaturas.
Alertas
alerts lista o que pede acao, do mais grave para o mais leve. A API devolve
codigos, e nao textos: o painel monta a frase, e a sua integracao pode montar a
dela.
type | Severidade | Quando aparece |
|---|---|---|
connector_circuit_open | critical | Uma conta habilitada esta com o circuito aberto por falhas seguidas. |
connector_unavailable | critical | Uma conta habilitada esta indisponivel. |
connector_degraded | warning | Uma conta habilitada esta degradada. |
connector_approval_drop | warning | A aprovacao de uma conta caiu 5 pontos ou mais, com ao menos 20 tentativas em cada periodo. |
approval_drop | warning | A aprovacao geral caiu 3 pontos ou mais, com ao menos 30 decisoes em cada periodo. |
webhook_endpoints_disabled | critical | Ha endpoints de webhook desligados automaticamente por falhas. |
webhook_deliveries_exhausted | critical | Entregas esgotaram as tentativas nos ultimos 7 dias: o evento nao chegou. |
webhook_deliveries_failing | warning | Entregas aguardam nova tentativa nos ultimos 7 dias. |
reviews_pending | warning | Ha pagamentos parados em revisao manual. |
invoices_past_due | warning | Ha faturas vencidas. |
subscriptions_past_due | warning | Ha assinaturas em atraso (past_due ou unpaid). |
cards_invalidated | warning | Cartoes de assinaturas vivas foram invalidados pelo emissor. |
cards_expired | warning | Cartoes de assinaturas vivas ja venceram. |
cards_expiring | info | Cartoes de assinaturas vivas vencem ate o fim do mes que vem. |
invoices_uncollectible | info | Ha faturas dadas como incobraveis. |
Cada alerta traz count, e conforme o tipo: amount (valor envolvido),
deltaBps (a variacao, nos alertas de queda), secondaryCount (quantos
endpoints foram afetados, nos de webhook) e subject (a conta de conector).
Os limites minimos de volume existem de proposito: abaixo de cerca de 30 decisoes, uma recusa a mais move a taxa em pontos inteiros, e o alerta viraria ruido.
Relatorios
O menu Relatorios do painel tem cinco relatorios. Todos aceitam periodo de
ate 366 dias, devolvem linhas e total em JSON e exportam o mesmo conteudo em
CSV. GET /v1/reports lista os relatorios com as colunas e os filtros de
cada um; GET /v1/reports/{slug} gera o relatorio.
slug | Relatorio | Filtros |
|---|---|---|
approval | Aprovacao por adquirente e bandeira | connectorAccountId, brand, groupBy |
declines | Recusas por motivo | connectorAccountId, brand |
retry-recovery | Recuperacao por retentativa | Nenhum |
mrr-churn | MRR e churn | planId |
split-receivables | Split e recebiveis | recipientId |
# JSON
curl "http://localhost:3333/v1/reports/approval?from=2026-10-01&to=2026-10-31" \
-H "Authorization: Bearer $MINSTREL_API_KEY"
# CSV para planilha
curl "http://localhost:3333/v1/reports/approval?from=2026-10-01&to=2026-10-31&format=csv" \
-H "Authorization: Bearer $MINSTREL_API_KEY" \
-o aprovacao-outubro.csv
Periodo e filtros
| Parametro | Padrao | Significado |
|---|---|---|
from | 30 dias antes | Inicio do periodo. Data (2026-10-01) ou instante com fuso (2026-10-01T00:00:00-03:00). |
to | Agora | Fim do periodo, no mesmo formato. |
format | json | json ou csv. |
connectorAccountId | Todas | Uma conta de conector. Vale em approval e declines. |
brand | Todas | visa, mastercard, elo... unknown e cartao sem bandeira informada; none e Pix e boleto. Vale em approval e declines. |
planId | Todos | Um plano. Vale em mrr-churn. |
recipientId | Todos | Um recebedor. Vale em split-receivables. |
groupBy | acquirer-brand | acquirer-brand, acquirer ou brand. Vale em approval. |
Filtro que o relatorio nao tem e ignorado, e filters na resposta mostra o que
valeu. Para o periodo:
- data vale no fuso da organizacao (veja
Configuracoes) e inclui o dia
inteiro nas duas pontas:
from=2026-10-01&to=2026-10-31traz outubro todo, inclusive a venda das 22h de 31/10 em Brasilia, que em UTC ja e novembro; - instante com fuso e usado como veio, e o fim e exclusivo. Instante sem fuso e recusado, porque o servidor teria de adivinhar o fuso;
- sem
from, o periodo e o dos "30 dias" da visao geral: 29 dias inteiros mais hoje ate agora. Assim o relatorio e a tela inicial batem para o mesmo recorte; - mais de 366 dias, ou fim antes do inicio, responde
422.
Resposta
{
"object": "report",
"report": "approval",
"title": "Aprovação por adquirente e bandeira",
"environment": "sandbox",
"currency": "BRL",
"generatedAt": "2026-10-18T15:30:00.000Z",
"period": {
"from": "2026-10-01T03:00:00.000Z",
"to": "2026-11-01T03:00:00.000Z",
"days": 31,
"timeZone": "America/Sao_Paulo"
},
"filters": { "connectorAccountId": null, "brand": null, "groupBy": "acquirer-brand" },
"columns": [{ "key": "attempts", "label": "Tentativas", "type": "integer" }],
"rows": [{ "acquirer": "Cielo - matriz", "brand": "Visa", "attempts": 100 }],
"totals": { "attempts": 160 }
}
columns descreve cada coluna (key, label e type) e e a fonte da tabela
do painel e do CSV. O type diz como ler o valor:
type | Valor no JSON |
|---|---|
text | Texto. |
integer | Contagem. |
money | Centavos, inteiro. |
rate | Basis points: 9240 e 92,40%. Nulo quando nao ha base. |
duration_ms | Milissegundos. |
Colunas com csvOnly: true (ids e codigos canonicos) nao aparecem na tabela
do painel, mas vem no JSON e no CSV. totals repete as colunas numericas com a
soma do recorte; as taxas sao recalculadas sobre o total, nunca a media das
linhas. Sem nenhuma linha, totals e null.
CSV
format=csv devolve text/csv pronto para abrir no Excel em portugues:
- UTF-8 com BOM, para os acentos do cabecalho sobreviverem;
;como separador de colunas e,como separador decimal;- cabecalho em portugues, uma linha por linha do relatorio e, no fim, a linha
Total; - dinheiro em reais com duas casas e sem separador de milhar (
1234,56), calculado a partir dos centavos inteiros, sem passar por ponto flutuante; - taxa em percentual com duas casas (
92,40); vazio quando nao ha base; - texto que comeca com
=,+,-ou@(um nome de recebedor, por exemplo) ganha um apostrofo na frente, para a planilha nao executar como formula.
O arquivo sugerido e minstrel-relatorio-{slug}-{inicio}_{fim}.csv, com as
datas no fuso da organizacao. O CSV e o JSON do mesmo pedido trazem os mesmos
numeros.
Aprovacao por adquirente e bandeira
Contado por tentativa, como o cartao Conectores da visao geral, e agrupado
por conta de adquirente e bandeira do cartao (groupBy troca para so conta ou
so bandeira). Uma venda que o fallback aprovou em outra conta aparece como
recusa na primeira e como aprovacao na segunda, que e o que mostra o adquirente
que mais recusa.
| Coluna | Significado |
|---|---|
attempts | Tentativas no periodo. |
approved | Aprovadas pelo emissor. |
declined | Recusadas pelo emissor. Pix e boleto vencido ou cancelado nao contam. |
technicalFailures | O conector nao respondeu (timeout ou erro). |
approvalRateBps | Aprovadas sobre todas as tentativas: a falha tecnica pesa contra a conta. |
issuerApprovalRateBps | Aprovadas sobre aprovadas mais recusadas: so o que o emissor decidiu. |
recovered | Aprovadas numa tentativa que nao foi a primeira do pagamento (fallback). |
attemptedAmount, approvedAmount | Valor das tentativas e das aprovadas, em centavos. |
averageLatencyMs | Latencia media das tentativas medidas. |
Pix e boleto nao tem bandeira e ficam em none; cartao cuja bandeira o
conector nao informou fica em unknown.
Recusas por motivo
A recusa final de cada transacao, a mesma contagem do cartao de motivos da visao geral, agrupada pelo motivo da tabela ABECS. A conta filtrada e a da ultima tentativa, que foi quem devolveu a resposta final.
| Coluna | Significado |
|---|---|
label | Motivo, pelo Anexo I do Normativo 021 da ABECS. |
origin | Emissor, Falha tecnica (o conector nao respondeu) ou Fluxo (regra, antifraude ou revisao recusada, antes do adquirente). |
reversibility | Reversivel ou irreversivel, como foi gravado em cada recusa. Quando as bandeiras divergem dentro do motivo, a linha traz "(varia por bandeira)". |
retryAction | A acao recomendada pela tabela. Recusa irreversivel nao e retentada. |
count, shareBps, amount | Quantidade, participacao no total e valor recusado. |
Veja Retentativa e codigos de recusa.
Recuperacao por retentativa
Parte da primeira cobranca recusada de cada fatura dentro do periodo e acompanha o que aconteceu com a fatura depois, ate agora. Por isso o numero de uma fatura recusada ontem ainda pode mudar. Cada fatura termina em um destes estados:
| Estado | Coluna | Quando |
|---|---|---|
| Recuperada pela retentativa | retryCount, retryAmount | Uma nova cobranca automatica (retentativa da recorrencia) foi aprovada. |
| Recuperada pelo cliente | customerCount, customerAmount | O cliente pagou pelo link de pagamento ou com outro cartao. |
| Perdida | lostCount, lostAmount | A fatura virou uncollectible: o motor desistiu de cobrar. |
| Em andamento | pendingCount, pendingAmount | Ainda pode ser paga (open, scheduled, processing, past_due, partially_paid). |
| Outras | otherCount | Cancelada, quitada fora do Minstrel ou estornada. |
Os valores sao o da cobranca recusada. recoveryRateBps e recuperadas sobre
recuperadas mais perdidas: as em andamento ficam fora para nao derrubar a taxa
de quem acabou de comecar a cobrar. secondCharge, thirdCharge e
laterCharge dizem em qual cobranca da fatura a recuperacao aconteceu.
A visao geral conta de outro jeito: ela soma as vendas recuperadas aprovadas no periodo. Aqui o recorte e o das cobrancas recusadas no periodo.
MRR e churn
A ponte do MRR por plano: MRR no inicio, mais o novo, mais a expansao, menos a contracao, menos o perdido, igual ao MRR no fim. Cada assinatura cai em uma situacao so, entao a ponte fecha por construcao.
| Coluna | Significado |
|---|---|
openingMrr, closingMrr | MRR no inicio e no fim, em centavos. |
newMrr, newSubscribers | Pagantes so no fim: novas, fim do teste gratis ou retomadas. |
expansionMrr, contractionMrr | Aumento e queda de valor de quem pagava nas duas pontas. |
churnedMrr, churnedSubscribers | Pagantes so no inicio: cancelamento, pausa ou inadimplencia. |
churnRateBps | Assinantes perdidos sobre os do inicio. Quem entrou e saiu no periodo nao conta. |
mrrChurnRateBps | (churnedMrr + contractionMrr) sobre openingMrr, sem abater a expansao. |
O MRR usa as mesmas regras do resumo de cobranca (veja
Assinaturas): assinaturas anuais e
trimestrais entram pelo equivalente mensal, arredondado por assinatura. Quando
o periodo termina hoje, o MRR no fim e o da visao geral (assinaturas active e
past_due), e uma assinatura unpaid conta como perdida. Para uma janela que
terminou no passado, o fim e reconstituido pelas datas.
Nao ha tabela de historico de status: o estado do passado sai das datas de
criacao, teste, pausa e encerramento, e o valor do passado, dos eventos
subscription.updated que alteraram o valor. Uma assinatura pausada e ja
retomada pode contar como ativa no passado. O churn deste relatorio usa como
base quem pagava no inicio do periodo; o churnRateBps do resumo de
cobranca usa quem paga hoje mais quem saiu em 30 dias, e por isso os dois
nao coincidem.
Split e recebiveis
Uma linha por recebedor, com as divisoes de vendas capturadas no periodo (pela data da venda).
| Coluna | Significado |
|---|---|
splits | Divisoes capturadas. |
grossAmount | Parte do recebedor nessas vendas. |
capturedAmount | Quanto da parte foi capturado (menor que o bruto na captura parcial). |
refundedAmount | Devolvido em cancelamentos e estornos. |
chargebackAmount | Parte de vendas contestadas, so para o recebedor que responde pelo chargeback. |
feeAmount | Comissao e tarifas que o adquirente descontou da parte. |
reportedNetAmount | Liquido que o adquirente informou. Nulo enquanto nenhuma divisao do recebedor foi liquidada. |
unsettledSplits | Divisoes capturadas sem liquido informado. |
estimatedNetAmount | capturedAmount menos estornado, chargeback e feeAmount. |
awaitingCaptureAmount | Parte de pagamentos autorizados que ainda nao foram capturados. |
O liquido e estimado: a tarifa so existe depois que o adquirente liquida a divisao, e o Minstrel ainda nao concilia os repasses feitos. O relatorio mostra o que cabe a cada recebedor, nao o que ja foi pago. Veja Split.
Valores em reais (BRL), como na visao geral.
Outros indicadores
A visao geral e os relatorios nao substituem os resumos de cada assunto, que aceitam outros recortes:
| Endpoint | Onde esta |
|---|---|
GET /v1/payments/summary | Transacoes: periodo livre de ate 400 dias. |
GET /v1/billing/summary | Assinaturas: MRR, churn e faturas. |
GET /v1/recipients/summary | Split: volume dividido e total a repassar. |
GET /v1/webhooks/summary | Webhooks: entregas e taxa de sucesso em 24 horas. |
GET /v1/platform-billing/overview | Financeiro da plataforma: o que voce paga ao Minstrel. |