Minstrel
Navegar na documentação

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 / Bash
curl "http://localhost:3333/v1/analytics/overview?period=7d" \
  -H "Authorization: Bearer $MINSTREL_API_KEY"

Periodos

periodJanelaSerie
todayHoje, da meia-noite ate agoraPor hora
7dOs 6 dias anteriores inteiros mais hoje ate agoraPor dia
30d (padrao)Os 29 dias anteriores inteiros mais hoje ate agoraPor dia
90dOs 89 dias anteriores inteiros mais hoje ate agoraPor 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

BlocoConteudo
periodA janela usada: from, to, previousFrom, previousTo, granularidade e fuso.
totalscurrent e previous: transacoes, aprovadas, recusadas, em andamento, approvalRateBps, volume capturado, ticket medio, vendas recuperadas e estornos.
seriesUm ponto por hora ou dia, com o periodo atual e o anterior lado a lado (segunda com segunda).
declinesRecusas do periodo por motivo.
connectorsDesempenho de cada conta de conector.
mixDivisao por bandeira (brands), meio de pagamento (methods) e parcelamento (installments: single, 2-6, 7-12).
recurringO retrato da recorrencia agora.
alertsO que pede acao.
setupContas 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.
recentPaymentsAs 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 null sem nenhuma decisao;
  • volume e o valor capturado;
  • recuperado separa fallback (aprovado em outra tentativa do mesmo pagamento) de retry (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:

kindSignificado
issuerO emissor recusou, com motivo classificado.
technicalHouve tentativa, mas o conector falhou: nao ha motivo do emissor.
flowO 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.

typeSeveridadeQuando aparece
connector_circuit_opencriticalUma conta habilitada esta com o circuito aberto por falhas seguidas.
connector_unavailablecriticalUma conta habilitada esta indisponivel.
connector_degradedwarningUma conta habilitada esta degradada.
connector_approval_dropwarningA aprovacao de uma conta caiu 5 pontos ou mais, com ao menos 20 tentativas em cada periodo.
approval_dropwarningA aprovacao geral caiu 3 pontos ou mais, com ao menos 30 decisoes em cada periodo.
webhook_endpoints_disabledcriticalHa endpoints de webhook desligados automaticamente por falhas.
webhook_deliveries_exhaustedcriticalEntregas esgotaram as tentativas nos ultimos 7 dias: o evento nao chegou.
webhook_deliveries_failingwarningEntregas aguardam nova tentativa nos ultimos 7 dias.
reviews_pendingwarningHa pagamentos parados em revisao manual.
invoices_past_duewarningHa faturas vencidas.
subscriptions_past_duewarningHa assinaturas em atraso (past_due ou unpaid).
cards_invalidatedwarningCartoes de assinaturas vivas foram invalidados pelo emissor.
cards_expiredwarningCartoes de assinaturas vivas ja venceram.
cards_expiringinfoCartoes de assinaturas vivas vencem ate o fim do mes que vem.
invoices_uncollectibleinfoHa 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.

slugRelatorioFiltros
approvalAprovacao por adquirente e bandeiraconnectorAccountId, brand, groupBy
declinesRecusas por motivoconnectorAccountId, brand
retry-recoveryRecuperacao por retentativaNenhum
mrr-churnMRR e churnplanId
split-receivablesSplit e recebiveisrecipientId
cURL / Bash
# 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

ParametroPadraoSignificado
from30 dias antesInicio do periodo. Data (2026-10-01) ou instante com fuso (2026-10-01T00:00:00-03:00).
toAgoraFim do periodo, no mesmo formato.
formatjsonjson ou csv.
connectorAccountIdTodasUma conta de conector. Vale em approval e declines.
brandTodasvisa, mastercard, elo... unknown e cartao sem bandeira informada; none e Pix e boleto. Vale em approval e declines.
planIdTodosUm plano. Vale em mrr-churn.
recipientIdTodosUm recebedor. Vale em split-receivables.
groupByacquirer-brandacquirer-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-31 traz 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

json
{
  "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:

typeValor no JSON
textTexto.
integerContagem.
moneyCentavos, inteiro.
rateBasis points: 9240 e 92,40%. Nulo quando nao ha base.
duration_msMilissegundos.

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.

ColunaSignificado
attemptsTentativas no periodo.
approvedAprovadas pelo emissor.
declinedRecusadas pelo emissor. Pix e boleto vencido ou cancelado nao contam.
technicalFailuresO conector nao respondeu (timeout ou erro).
approvalRateBpsAprovadas sobre todas as tentativas: a falha tecnica pesa contra a conta.
issuerApprovalRateBpsAprovadas sobre aprovadas mais recusadas: so o que o emissor decidiu.
recoveredAprovadas numa tentativa que nao foi a primeira do pagamento (fallback).
attemptedAmount, approvedAmountValor das tentativas e das aprovadas, em centavos.
averageLatencyMsLatencia 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.

ColunaSignificado
labelMotivo, pelo Anexo I do Normativo 021 da ABECS.
originEmissor, Falha tecnica (o conector nao respondeu) ou Fluxo (regra, antifraude ou revisao recusada, antes do adquirente).
reversibilityReversivel ou irreversivel, como foi gravado em cada recusa. Quando as bandeiras divergem dentro do motivo, a linha traz "(varia por bandeira)".
retryActionA acao recomendada pela tabela. Recusa irreversivel nao e retentada.
count, shareBps, amountQuantidade, 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:

EstadoColunaQuando
Recuperada pela retentativaretryCount, retryAmountUma nova cobranca automatica (retentativa da recorrencia) foi aprovada.
Recuperada pelo clientecustomerCount, customerAmountO cliente pagou pelo link de pagamento ou com outro cartao.
PerdidalostCount, lostAmountA fatura virou uncollectible: o motor desistiu de cobrar.
Em andamentopendingCount, pendingAmountAinda pode ser paga (open, scheduled, processing, past_due, partially_paid).
OutrasotherCountCancelada, 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.

ColunaSignificado
openingMrr, closingMrrMRR no inicio e no fim, em centavos.
newMrr, newSubscribersPagantes so no fim: novas, fim do teste gratis ou retomadas.
expansionMrr, contractionMrrAumento e queda de valor de quem pagava nas duas pontas.
churnedMrr, churnedSubscribersPagantes so no inicio: cancelamento, pausa ou inadimplencia.
churnRateBpsAssinantes 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).

ColunaSignificado
splitsDivisoes capturadas.
grossAmountParte do recebedor nessas vendas.
capturedAmountQuanto da parte foi capturado (menor que o bruto na captura parcial).
refundedAmountDevolvido em cancelamentos e estornos.
chargebackAmountParte de vendas contestadas, so para o recebedor que responde pelo chargeback.
feeAmountComissao e tarifas que o adquirente descontou da parte.
reportedNetAmountLiquido que o adquirente informou. Nulo enquanto nenhuma divisao do recebedor foi liquidada.
unsettledSplitsDivisoes capturadas sem liquido informado.
estimatedNetAmountcapturedAmount menos estornado, chargeback e feeAmount.
awaitingCaptureAmountParte 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:

EndpointOnde esta
GET /v1/payments/summaryTransacoes: periodo livre de ate 400 dias.
GET /v1/billing/summaryAssinaturas: MRR, churn e faturas.
GET /v1/recipients/summarySplit: volume dividido e total a repassar.
GET /v1/webhooks/summaryWebhooks: entregas e taxa de sucesso em 24 horas.
GET /v1/platform-billing/overviewFinanceiro da plataforma: o que voce paga ao Minstrel.

As opções são independentes e podem ser alteradas a qualquer momento no rodapé. Sua escolha vale por até 180 dias.

Necessários Sempre ativos

Lembram sua escolha de privacidade e permitem as funções essenciais.

Ler a política de cookies