Faturamento e Finanças
Esta página explica as operações financeiras que passam pelo MIDDAG Account: geração de faturas, emissão de notas fiscais, conciliação de pagamentos, gestão de saldo de créditos e roteamento financeiro dual-entity.
Fluxo de dados financeiros
Geração de faturas
As faturas no MIDDAG Account são reflexos somente-leitura dos dados do Stripe. O sistema não gera faturas independentemente -- ele as sincroniza do Stripe via webhooks.
O fluxo do webhook:
- O Stripe dispara um evento (ex.:
invoice.created,invoice.paid,invoice.payment_failed). - O webhook atinge o endpoint apropriado (
/webhooks/stripe/brou/webhooks/stripe/llc). - O sistema válida a assinatura do webhook contra o segredo específico da conta.
- Os dados da fatura são persistidos localmente, vinculados à Organização via Stripe Customer ID.
- A fatura é marcada com a conta Stripe de origem (
middag_broumiddag_global).
O sistema processa múltiplos tipos de eventos de fatura: criação, atualização, pagamento, falha de pagamento, anulação e finalização. Eventos duplicados são tratados via verificações de idempotência.
Experiência do cliente: O cliente vê uma lista unificada de faturas de ambas as entidades no portal, com um indicador visual mostrando qual entidade emitiu cada uma. Eles podem filtrar por entidade, status ou período, e baixar PDFs diretamente do Stripe.
Nota fiscal (NFSe) para operações brasileiras
NFSe (Nota Fiscal de Serviço Eletrônica) é uma nota fiscal brasileira obrigatória para transações de serviço. É emitida exclusivamente para transações da MIDDAG BR.
Emissão automática
Quando um pagamento BR é confirmado:
- O sistema detecta que a entidade é
middag_br. - Extrai detalhes do serviço, valores e informações fiscais do cliente.
- Submete uma requisição XML ao web service do ISSNet (autoridade municipal de Brasília/DF) via SOAP.
- Se o ISSNet responder imediatamente com aprovação, a NFSe é registrada como
issued. - Se o ISSNet enfileirar para processamento, a NFSe é registrada como
pending.
Verificação de status
Um cron job executa a cada 5 minutos para verificar NFSe pendentes:
- Consulta o ISSNet por status atualizado.
- Transiciona
pendingparaissued(com o número oficial da NFSe e código de verificação) ou pararejected(com o motivo da rejeição). - NFSe pendentes por mais de 24 horas acionam uma notificação ao admin.
Emissão manual
O admin pode emitir NFSe manualmente pelo painel admin quando a emissão automática falha ou quando circunstâncias especiais requerem ajuste manual de dados (ex.: correção da descrição do serviço ou código de tributação municipal).
O que o cliente vê
Clientes brasileiros veem as NFSe listadas junto às faturas do Stripe no portal, com um rótulo distinto. Eles podem baixar tanto o XML (para conformidade fiscal) quanto uma versão em PDF.
Conciliação de pagamentos
Os dados de pagamento fluem de múltiplas fontes e precisam ser conciliados:
| Fonte | O que cobre | Mecanismo de sync |
|---|---|---|
| Stripe BR | Pagamentos por cartão para entidade BR | Webhooks |
| Stripe GLOBAL | Pagamentos por cartão para entidade US | Webhooks |
| Banco Inter | Pix e Boleto para entidade BR | Webhooks / callbacks |
Um cron de conciliação executa a cada 15 minutos para verificar consistência entre os registros do Stripe e os dados de fatura locais. Discrepâncias são sinalizadas para análise do admin.
Faturas sem correspondência -- Quando uma fatura do Stripe não pode ser associada a uma Organização (ex.: o Stripe Customer ID não está vinculado), a fatura é armazenada com Organização nula e o admin é notificado para vinculação manual.
Gestão de saldo de créditos
Para entitlements SVC, o CreditBalance rastreia o consumo de UST:
| Operação | Efeito no saldo |
|---|---|
| Serviço ativado | Saldo inicializado (pode começar em zero) |
| Créditos comprados | Saldo aumenta |
| SR aberta | Créditos reservados (retidos, ainda não debitados) |
| SR concluída | Créditos reservados debitados do saldo |
| SR cancelada | Créditos reservados devolvidos ao saldo |
| Créditos expirados | Saldo diminui (conforme CreditPolicy) |
A CreditPolicy governa:
- Período de expiração para créditos inclusos (padrão: 12 meses) vs. créditos comprados (padrão: 6 meses)
- Ordem de consumo (FIFO por padrão -- créditos mais antigos consumidos primeiro)
- Período de carência após expiração
- Alertas de saldo baixo (padrão: quando restam 20%)
Roteamento financeiro dual-entity
Toda transação financeira é roteada para a entidade legal correta:
| Ponto de decisão | Como é determinado |
|---|---|
| Conta Stripe | Baseado na entidade de faturamento da Organização (BR ou GLOBAL) |
| Métodos de pagamento | BR: cartão + Pix + Boleto. GLOBAL: apenas cartão |
| Moeda | BR: BRL. GLOBAL: USD |
| Nota fiscal | BR: NFSe emitida via ISSNet. GLOBAL: sem nota fiscal |
| Portal HubSpot | BR e GLOBAL possuem portais separados |
Uma Organização pode ter Stripe Customer IDs e HubSpot Company IDs para ambas as entidades simultaneamente. Isso suporta clientes com transações em ambas as moedas.
Veja Operações Multi-Entidade para a lógica completa de roteamento.
Dashboard financeiro do admin
O painel admin oferece uma visão financeira consolidada:
- Receita por período (mensal, trimestral, anual)
- Receita dividida por entidade (BR vs GLOBAL)
- Pagamentos pendentes (boletos não pagos, cartões com falha)
- Faturas em atraso com indicadores de urgência
- Assinaturas ativas vs canceladas
Todos os dados são originados de registros locais do WooCommerce, não diretamente do Stripe, garantindo consistência mesmo se o Stripe estiver temporariamente inacessível.
Páginas relacionadas
- Fluxo de Compra e Renovação -- O pipeline que gera faturas
- Operações Multi-Entidade -- Detalhes de roteamento por entidade
- Provisionamento de Serviço -- Consumo de saldo de créditos