90% das cobranças recorrentes em gestão de despesas corporativas nunca são revisadas depois do cadastro inicial. SaaS que ninguém usa, fornecedores que duplicaram cobrança, contratos que renovaram automaticamente com aumento de 30%. Essa massa silenciosa vira gordura no fluxo de caixa.
Esse post é o ritual que rodo toda sexta — três queries que respondem três perguntas e levam 15 minutos para acionar a próxima semana.
Setup: o que assumo
Você tem cartões dedicados por fornecedor (modelo descrito em como zerar o cartão master) e webhooks de transação caindo num warehouse (BigQuery, Postgres, Snowflake). A tabela base:
-- transactions
card_id, supplier, amount_cents, currency, mcc,
authorized_at, captured_at, declined_reason, status
Se você ainda não tem essa estrutura, qualquer ferramenta de gestão de despesas com webhooks tipados resolve. O HubCard manda exatamente isso.
Query 1 — SaaS órfão
Pergunta: existem cartões ativos que não tiveram cobrança nos últimos 90 dias?
SELECT
c.id, c.supplier, c.limit_cents,
c.created_at,
MAX(t.captured_at) AS last_captured
FROM cards c
LEFT JOIN transactions t
ON t.card_id = c.id AND t.status = 'captured'
WHERE c.status = 'active'
GROUP BY c.id, c.supplier, c.limit_cents, c.created_at
HAVING MAX(t.captured_at) < NOW() - INTERVAL '90 days'
OR MAX(t.captured_at) IS NULL;
Resultado típico: 4–7 cartões. Cada um é um SaaS que ou foi descontinuado, ou foi substituído, ou está em trial expirado mas alguém esqueceu de cancelar. Ação: descobrir o dono, confirmar se ainda é necessário, cancelar via DELETE /v2/cards/:id se não for.
Economia média que vejo nessa query toda sexta: R$ 800–2.400/mês.
Query 2 — Anomalia de teto
Pergunta: algum fornecedor cobrou 2x o ticket médio do trimestre nessa semana?
WITH baseline AS (
SELECT
supplier,
AVG(amount_cents) AS avg_cents,
STDDEV(amount_cents) AS sd_cents
FROM transactions
WHERE captured_at BETWEEN NOW() - INTERVAL '90 days' AND NOW() - INTERVAL '7 days'
AND status = 'captured'
GROUP BY supplier
),
this_week AS (
SELECT supplier, SUM(amount_cents) AS week_cents
FROM transactions
WHERE captured_at >= NOW() - INTERVAL '7 days'
AND status = 'captured'
GROUP BY supplier
)
SELECT
w.supplier, w.week_cents, b.avg_cents,
w.week_cents::float / NULLIF(b.avg_cents, 0) AS ratio
FROM this_week w
JOIN baseline b ON b.supplier = w.supplier
WHERE w.week_cents > b.avg_cents + 2 * b.sd_cents
ORDER BY ratio DESC;
Resultado típico: 1–3 fornecedores. Pode ser legítimo (aumento de uso planejado, campanha extra) ou problemático (script em loop, cobrança duplicada, renovação anual disfarçada de cobrança mensal).
A ação importante: investigue antes de fechar o mês, não depois. Cobrança esquisita em fatura fechada é disputa de chargeback. Cobrança esquisita em autorização recente ainda é reversível por contato direto com o fornecedor.
Query 3 — Vendor lock-in
Pergunta: qual o % do gasto total concentrado nos 3 maiores fornecedores?
WITH ranked AS (
SELECT
supplier,
SUM(amount_cents) AS supplier_cents,
SUM(SUM(amount_cents)) OVER () AS total_cents
FROM transactions
WHERE captured_at >= NOW() - INTERVAL '30 days'
AND status = 'captured'
GROUP BY supplier
)
SELECT
supplier,
supplier_cents,
ROUND(100.0 * supplier_cents / total_cents, 1) AS pct
FROM ranked
ORDER BY supplier_cents DESC
LIMIT 5;
Quando os 3 maiores fornecedores representam >55% do gasto mensal, você tem risco de concentração. Sair de um deles vai ser caro e demorado. Reduzir a dependência hoje vale mais que negociar desconto.
Essa query não muda decisão semanalmente, mas trimestralmente. Inclua no relatório de fechamento.
O ganho do ritual
Toda sexta, 15 minutos:
- 5 minutos rodando as três queries.
- 5 minutos abrindo o painel HubCard para validar.
- 5 minutos no Slack alinhando ações (cancela X, investiga Y, monitora Z).
Esse ritual elimina ~80% do waste recorrente que aparece em fatura fechada. O resto (20%) vira insight estratégico para renegociação.
Por que MCC ajuda nessas queries
Quando cada cartão carrega MCC restrito (ver MCC codes explicado), a query 2 fica mais poderosa. Você pode segmentar anomalia por categoria: "ads cresceu 40% essa semana" tem causa diferente de "cloud cresceu 40% essa semana". A primeira é decisão de marketing; a segunda é alerta de billing leak.
O ritual escalado
Equipes pequenas (até 30 pessoas) rodam manual toda sexta. Equipes médias (30–150) automatizam as queries num dashboard semanal. Equipes grandes (150+) ligam isso a um workflow que abre tickets automaticamente quando os thresholds são ultrapassados.
A maturidade não está em automatizar — está em ter o pulso semanal. Quem audita fornecedor uma vez por trimestre paga 4 trimestres de gordura.
Por que isso só funciona com cartão dedicado
Note que todas as três queries dependem de card_id mapeado para supplier. Se você ainda opera com cartão master único, nenhuma dessas queries funciona — você só tem a fatura PDF para cruzar manualmente. É a diferença entre dados de autorização estruturados e PDF parseado.
Esse é, no fim, o argumento maior pra ter um cartão corporativo por fornecedor: não é só sobre fraude. É sobre transformar dados de pagamento em dados de produto.