BETAHubCard beta — feedback bem-vindo.
finanças18 de abril de 2026·4 min de leitura

Auditoria de fornecedores em 15 minutos: três queries para gestão de despesas corporativas

Como detectar SaaS órfão, anomalia de teto e vendor lock-in em 15 minutos usando apenas dados de autorização. Três queries para gestão de despesas.

LR
Laís Romero
Head of Finance
finanças
90%
A proporção de cobranças recorrentes que ninguém revisa.

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.

LR

Laís Romero

Head of Finance

Escreve sobre cartões corporativos, API de emissão e gestão de despesas em tempo real.

Falar com o time

Continue lendo

Todos os posts
Auditoria de fornecedores em 15 minutos: três queries para gestão de despesas corporativas · HubCard