API — DRE
Autenticação
Todos os endpoints requerem JWT com role admin ou superadmin.
Base: /t/:slug/dre
GET /t/:slug/dre
Calcula e retorna o DRE (P&L) por regime de competência para um mês/ano.
Query params:
| Param | Tipo | Obrigatório | Descrição |
|---|---|---|---|
year | number | Sim | Ano (ex: 2026) |
month | number | Sim | Mês 1–12 (ex: 4) |
costCenterId | string | Não | Filtrar por centro de custo |
Response 200:
{
"period": { "year": 2026, "month": 4 },
"receitaBruta": 85000,
"deducoes": 7650,
"receitaLiquida": 77350,
"cmv": 28900,
"margemBruta": 48450,
"margemBrutaPercent": 57.0,
"despesasOperacionais": 18000,
"ebitda": 30450,
"ebitdaPercent": 35.8,
"da": 2000,
"ebit": 28450,
"despesasFinanceiras": 1200,
"lucroLiquido": 27250,
"lucroLiquidoPercent": 32.1,
"byCategory": [
{ "categoryName": "Folha de Pagamento", "dreGroup": "opex", "total": 12000 },
{ "categoryName": "Aluguel", "dreGroup": "opex", "total": 4500 },
{ "categoryName": "Energia", "dreGroup": "opex", "total": 1500 }
]
}Nota: Valores em centavos não — em reais mesmo. CMV = movimentações de saída (venda/produção) + Contas a Pagar de NF-es na competência.
GET /t/:slug/dre/expenses
Lista Despesas Operacionais com paginação.
Query params:
| Param | Tipo | Descrição |
|---|---|---|
competenceDate | string | Filtrar por competência (ex: 2026-04) |
categoryId | string | Filtrar por categoria |
page | number | Página (padrão 1) |
limit | number | Itens por página (padrão 20) |
Response 200:
{
"items": [
{
"_id": "...",
"description": "Aluguel Abril 2026",
"amount": 4500.00,
"competenceDate": "2026-04-01T00:00:00.000Z",
"category": { "_id": "...", "name": "Aluguel", "dreGroup": "opex" },
"costCenter": null
}
],
"total": 8,
"page": 1,
"limit": 20,
"pages": 1
}POST /t/:slug/dre/expenses
Cria uma Despesa Operacional.
Body:
{
"description": "Aluguel Abril 2026",
"amount": 4500.00,
"competenceDate": "2026-04-01",
"categoryId": "...",
"costCenterId": "..."
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
description | string | Sim | Descrição da despesa |
amount | number | Sim | Valor em R$ |
competenceDate | string | Sim | Data de competência (ISO 8601) |
categoryId | string | Sim | ID da ExpenseCategory |
costCenterId | string | Não | ID do CostCenter |
receiptUrl | string | Não | URL do comprovante |
Response 201: Objeto OperatingExpense criado.
PUT /t/:slug/dre/expenses/:id
Atualiza uma Despesa Operacional.
Body: Mesmo formato do POST (campos parciais aceitos).
Response 200: Objeto atualizado.
DELETE /t/:slug/dre/expenses/:id
Remove uma Despesa Operacional.
Response 200: { "deleted": true }
GET /t/:slug/dre/categories
Lista categorias do Plano de Contas (globais + personalizadas do tenant).
Response 200:
[
{ "_id": "...", "code": "3.1", "name": "CMV", "dreGroup": "cogs", "active": true, "tenant": null },
{ "_id": "...", "code": "4.1", "name": "Folha de Pagamento", "dreGroup": "opex", "active": true, "tenant": null },
{ "_id": "...", "code": "4.99", "name": "Outros", "dreGroup": "opex", "active": true, "tenant": "..." }
]Categorias com
tenant: nullsão padrões do sistema — não podem ser excluídas.
POST /t/:slug/dre/categories
Cria uma categoria de despesa personalizada.
Body:
{
"code": "4.5",
"name": "Manutenção",
"dreGroup": "opex"
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
code | string | Sim | Código único (ex: 4.5) |
name | string | Sim | Nome da categoria |
dreGroup | string | Sim | cogs | opex | da | financial | revenue_deduction |
Response 201: Categoria criada.
DELETE /t/:slug/dre/categories/:id
Remove uma categoria personalizada (não pode remover padrões do sistema).
Erros:
| Código | Motivo |
|---|---|
| 400 | Categoria é padrão do sistema (tenant: null) |
| 409 | Categoria possui despesas vinculadas |
GET /t/:slug/dre/cost-centers
Lista centros de custo do tenant.
Response 200:
[
{ "_id": "...", "code": "CC-01", "name": "Salão", "active": true },
{ "_id": "...", "code": "CC-02", "name": "Delivery", "active": true }
]POST /t/:slug/dre/cost-centers
Cria um centro de custo.
Body:
{
"code": "CC-03",
"name": "Bar"
}Response 201: Centro de custo criado.
DELETE /t/:slug/dre/cost-centers/:id
Remove um centro de custo.
Response 200: { "deleted": true }