Skip to content

Sugestão de Tributação por IA e Tax Preview

Visão Geral

O módulo tax-engine oferece dois recursos de apoio fiscal:

  1. Tax Preview Batch — endpoint público sem autenticação para cálculo de IBS/CBS por lote, destinado a ferramentas fiscais e contadores externos.
  2. Tax Determine — endpoint autenticado que aplica o motor de regras completo (ICMS + PIS/COFINS + IBS/CBS) a itens do cardápio.

A sugestão de NCM/CST baseada em IA está integrada ao assistente de configuração de Grupos Fiscais — o motor sugere automaticamente o regime e a alíquota com base no NCM e tipo de operação.


Endpoint Público: Tax Preview Batch

POST /api/tax-preview/batch
Content-Type: application/json

Este endpoint não requer autenticação. É protegido por rate limit de 30 requisições / 60s por IP.

Parâmetros

json
{
  "tenantSlug": "demo",
  "items": [
    {
      "year": 2027,
      "unitPrice": 4500,
      "ncm": "2202.10.00"
    }
  ]
}
CampoTipoDescrição
tenantSlugstringSlug do tenant ativo (retorna 404 se inativo ou inexistente)
itemsarray (máx. 50)Itens para cálculo — limitado por @ArrayMaxSize(50)
items[].yearnumberAno-calendário (define a fase IBS/CBS pela EC 132/2023)
items[].unitPricenumberPreço unitário em centavos
items[].ncmstringNCM do produto (8 dígitos)

Resposta

json
[
  {
    "year": 2027,
    "unitPrice": 4500,
    "ncm": "2202.10.00",
    "ibs": { "aliquot": 0.0012, "base": 4500, "value": 5 },
    "cbs": { "aliquot": 0.0108, "base": 4500, "value": 49 },
    "totalTaxValue": 54,
    "effectiveRate": 0.012,
    "foodserviceReductionApplied": true
  }
]

Controles de segurança

ControleValorMecanismo
Rate limit30 req / 60s por IP@Throttle do NestJS Throttler
Tamanho do lotemáx. 50 itens@ArrayMaxSize(50) no DTO
Tenant válidoDeve estar ativoTenantsService.findBySlug() + verificação tenant.active

Arquivos

  • backend/src/tax-engine/tax-preview.controller.ts
  • backend/src/tax-engine/tax-preview.dto.ts

Endpoint Autenticado: Tax Determine

POST /t/:slug/admin/tax/determine

Requer JwtAuthGuard + TenantGuard. Aplica o cálculo completo para um item com contexto fiscal completo (regime tributário, CFOP, origem/destino UF, etc.).

Resultado

typescript
{
  icms: { aliquot, base, value, cstOrCsosn },
  ibs:  { aliquot, base, value },
  cbs:  { aliquot, base, value },
  pis:  { aliquot, base, value },
  cofins: { aliquot, base, value },
  totalTax: number,
  effectiveRate: number,
  metadata: {
    ncm, cest?, origemUf, destinoUf, operacao, regime,
    reformaInVigor: boolean,
    warnings: string[]
  }
}

Cronograma IBS/CBS — EC 132/2023

O serviço usa a tabela TAX_PERIODS em backend/src/tax-engine/rules/tax-period.config.ts para determinar as alíquotas por ano:

AnoCBSIBSPeríodo-teste
≤ 20250%0%
20260,9%0,1%Sim
20271,8%0,2%Não
20297,9%5,0%Não
20307,9%10,0%Não
20317,9%15,0%Não
20327,9%19,2%Não
2033+8,8%19,2%Não

Redução foodservice: fator 0.60 (40% de redução) aplicado em todos os anos com reforma ativa, conforme LC 214/2024, Art. 9º, para restaurantes e serviços de alimentação.


Validador cClassTrib

O endpoint GET /t/:slug/admin/tax/cclass-trib/:code?docType=nfe valida e descreve um código de Classificação Tributária NT 2025.002.

Serviço: TaxEngineService.validateCClassTrib(code, docType) via backend/src/tax-engine/rules/cclass-trib-validator.ts

Tabela de dados: backend/src/tax-engine/data/cclass-trib-table.json


Relacionados

Lançado sob a licença MIT.