API Reference: Financeiro
Base URL: /api/financeiro. Controle financeiro do nucleo com lancamentos de receitas e despesas, resumo consolidado e portal de transparencia.
Resumo de Endpoints
| Metodo | Rota | Permissao | Descricao |
|---|---|---|---|
| POST | /api/financeiro | COORDENADOR / ADMINISTRADOR | Criar lancamento financeiro manual |
| GET | /api/financeiro | COORDENADOR / ADMINISTRADOR | Listar lancamentos com filtros e paginacao |
| GET | /api/financeiro/resumo | COORDENADOR / ADMINISTRADOR | Resumo financeiro consolidado (receitas, despesas, saldo) |
| DELETE | /api/financeiro/:id | ADMINISTRADOR | Remover lancamento (hard delete) |
| GET | /api/financeiro/transparencia | Autenticado | Dados publicos de transparencia (sem dados pessoais) |
POST /api/financeiro
Cria um novo lancamento financeiro manual no nucleo.
Permissao: COORDENADOR / ADMINISTRADOR
Body
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
tipo | string | Sim | RECEITA ou DESPESA |
valor | number | Sim | Valor em reais (positivo) |
categoria | string | Sim | Categoria do lancamento (ver tabela abaixo) |
descricao | string | Nao | Descricao livre do lancamento |
data | string (ISO) | Sim | Data do lancamento (YYYY-MM-DD) |
projetoId | string (uuid) | Nao | FK para projeto associado |
comprovanteUrl | string | Nao | URL do comprovante no Supabase Storage |
Response 200
{
"id": "uuid",
"tipo": "DESPESA",
"valor": 350.00,
"categoria": "EVENTO",
"data": "2026-04-01"
}GET /api/financeiro
Lista lancamentos do nucleo com paginacao e filtros. Inclui campos origem e asaas_payment_id no select para rastreabilidade de lancamentos automaticos.
Permissao: COORDENADOR / ADMINISTRADOR
Query Params
| Param | Tipo | Descricao |
|---|---|---|
dataInicio | string (ISO) | Filtrar a partir desta data |
dataFim | string (ISO) | Filtrar ate esta data |
tipo | string | RECEITA ou DESPESA |
page | number | Pagina (default: 1) |
limit | number | Itens por pagina (default: 20) |
Response 200
{
"data": [
{
"id": "uuid",
"tipo": "RECEITA",
"valor": 150.00,
"categoria": "PLANO",
"descricao": "Plano Premium - sync Asaas",
"comprovante_url": null,
"data": "2026-04-01",
"criado_em": "2026-04-01T12:00:00Z",
"origem": "ASAAS_SYNC",
"asaas_payment_id": "pay_abc123",
"usuarios": { "nome": "Admin Silva" },
"projetos": null
}
],
"pagination": { "page": 1, "limit": 20, "total": 83, "totalPages": 5 }
}Notas sobre origem e asaas_payment_id
origem: indica se o lancamento foi criado manualmente ou via integracao (ex:ASAAS_SYNC,MANUAL).asaas_payment_id: ID do pagamento no Asaas quando o lancamento foi criado automaticamente pelo sync de pagamentos. Null para lancamentos manuais.
GET /api/financeiro/resumo
Retorna o resumo financeiro consolidado do nucleo, com filtro opcional por periodo.
Permissao: COORDENADOR / ADMINISTRADOR
Query Params
| Param | Tipo | Descricao |
|---|---|---|
dataInicio | string (ISO) | Filtrar a partir desta data (opcional) |
dataFim | string (ISO) | Filtrar ate esta data (opcional) |
Response 200
{
"totalReceitas": 12500.00,
"totalDespesas": 4300.00,
"saldo": 8200.00,
"despesasPorCategoria": {
"EVENTO": 2000.00,
"ADMINISTRATIVO": 1500.00,
"PROJETO": 800.00
}
}Notas
- Sem filtros de data: retorna totais de todos os lancamentos do nucleo.
- Com
dataInicioe/oudataFim: filtra por periodo. Util para relatorio mensal/trimestral. saldo=totalReceitas - totalDespesas.despesasPorCategoriaagrupa apenas DESPESAS; receitas nao aparecem nesse campo.
DELETE /api/financeiro/:id
Remove um lancamento financeiro permanentemente (hard delete).
Permissao: ADMINISTRADOR
Response 200
{ "message": "Lancamento excluido" }GET /api/financeiro/transparencia
Retorna dados financeiros publicos do nucleo para qualquer membro autenticado. Nao exige cargo especial.
Comportamento
- Verifica o master toggle
transparencia_financeirano nucleo. Se desativado, retorna{ "habilitado": false }. - Cada secao e controlada por sub-toggles independentes no nucleo:
transparencia_fin_receitas→ incluitotalReceitastransparencia_fin_despesas→ incluitotalDespesastransparencia_fin_saldo→ incluisaldotransparencia_fin_categorias→ incluidespesasPorCategoria
- Resumo e calculado a partir do inicio do mes corrente.
- Inclui lista dos ultimos 50 lancamentos (ordenados por data desc).
Sanitizacao de dados pessoais
Os lancamentos retornados NAO incluem dados pessoais (nome do autor, email, etc.). O campo descricao e sanitizado:
- Descricoes com formato
Plano X - Nome Completo - ...sao truncadas para exibir apenas o tipo de plano. - Emails no formato
<email@dominio>sao removidos. - Se a descricao ficar vazia apos sanitizacao, usa-se label generica baseada na categoria (ex:
Receita de plano).
Response 200 (exemplo com todos os toggles ativos)
{
"habilitado": true,
"totalReceitas": 12500.00,
"totalDespesas": 4300.00,
"saldo": 8200.00,
"despesasPorCategoria": { "EVENTO": 2000.00, "ADMINISTRATIVO": 1500.00 },
"lancamentos": [
{
"id": "uuid",
"tipo": "RECEITA",
"valor": 150.00,
"categoria": "PLANO",
"data": "2026-04-01",
"criado_em": "2026-04-01T12:00:00Z",
"descricao": "Plano Premium"
}
]
}Categorias de Lancamento
| Enum | Descricao |
|---|---|
EVENTO | Gastos ou receitas relacionados a eventos |
PROJETO | Custos de projetos e acoes |
ADMINISTRATIVO | Despesas administrativas gerais |
DOACAO | Doacoes recebidas ou realizadas |
LOJA | Receitas e custos da loja interna |
PLANO | Receitas de planos de assinatura (normalmente criadas via sync automatico do Asaas) |
OUTROS | Lancamentos que nao se encaixam nas demais |
Nota sobre categoria PLANO
Lancamentos com categoria PLANO sao frequentemente gerados automaticamente pela integracao com Asaas (sync de pagamentos de planos). Nesse caso, o campo origem indica a origem automatica e asaas_payment_id contem o ID do pagamento para rastreabilidade.
Enum: origem_lancamento
O campo origem nos lancamentos indica como o registro foi criado:
| Valor | Descricao |
|---|---|
MANUAL | Criado manualmente por coordenador/admin via POST /financeiro |
ASAAS_SYNC | Criado automaticamente pela sincronizacao de pagamentos Asaas |
LOJA | Criado automaticamente por compra na loja interna |
DOACAO | Criado automaticamente por doacao de membro |
Notas de Arquitetura
- Todas as queries filtram por
nucleo_id— multi-tenant com RLS ativo. - O campo
autor_idregistra quem criou o lancamento manual (JOIN comusuariosno select). - O campo
projeto_idpermite associar lancamentos a projetos do nucleo (JOIN comprojetosno select). - Hard delete: a exclusao via DELETE e permanente. Nao ha soft delete para lancamentos financeiros.