City+Início
Exatidão e conformidade

Um valor errado não chega ao cidadão.

Imposto, multa, juros, folha e balancete precisam estar certos sempre. No City+, cada valor passa por dez camadas de proteção, e cada camada pega um tipo diferente de erro: lei mal cadastrada, erro de programação, dado alterado, arquivo malformado.

Antes de valer

Toda regra nasce de um ato legal e é aprovada por duas pessoas.

Ao calcular

O cálculo é testado contra casos conhecidos e refeito por um segundo caminho.

Ao entregar

Arquivo oficial é relido e conferido antes do download. Se não fecha, não sai.

Camada 1

Regras são dados, com ato legal

Alíquotas, multas e índices não ficam escondidos no código. São tabelas de cada município, e cada alteração cita a lei que a autoriza.

Cada município tem as próprias tabelas, e todos os cálculos leem delas:

  • Alíquotas do IPTU por uso do imóvel (residencial, comercial, industrial, territorial).
  • Planta genérica de valores: valor do m² de terreno por zona fiscal e valor do m² construído por tipo de construção.
  • Multa fixa, multa ao dia com teto, juros ao mês e correção monetária, separados por receita (IPTU, ISS, taxas…).
  • Índice de correção monetária mês a mês.
  • Feriados municipais, que empurram o vencimento para o próximo dia útil.
  • Faixas de INSS e IRRF da folha, com data de início de vigência; a folha usa a última tabela vigente no mês calculado.

Toda proposta de alteração exige o ato legal (lei, decreto ou portaria) e guarda o valor anterior, para que qualquer auditor reconstitua por que um valor era o que era em determinada data.

Camada 2

Ninguém altera uma regra sozinho

Quem propõe não aprova. A mudança só passa a valer depois que uma segunda pessoa autorizada confere e aprova.

  • O administrador propõe a alteração. Um segundo responsável (administrador ou fiscal; no caso da folha, administrador ou RH) aprova ou rejeita com justificativa.
  • A regra é garantida pelo próprio banco de dados: gravar direto na tabela é recusado, mesmo por quem tenta contornar a tela.
  • A aprovação e a aplicação da regra acontecem numa única operação: ou as duas se completam, ou nenhuma.
  • Fica registrado quem propôs, quem decidiu, quando, o ato legal e o valor anterior.
Proposta: juros do IPTU 1% → 0,5% ao mês · Ato: LC 45/2025, art. 12
Proposto por Ana (admin) · Aprovado por Bruno (fiscal) · Ana não consegue aprovar a própria proposta
Camada 3

Cálculo em funções isoladas, sem atalhos

Cada conta que gera valor fica em um único lugar, separada da tela, e todas as telas usam a mesma.

  • Valor venal, IPTU, desconto de cota única, parcelas, multa, juros e correção, código de barras FEBRABAN, PIX, folha e partidas contábeis são funções puras: mesma entrada, mesmo resultado, sempre.
  • Valores financeiros são calculados em centavos inteiros, o que evita os erros de arredondamento de números decimais (o clássico 0,1 + 0,2 ≠ 0,3).
  • Parcelas são divididas de modo que a soma bata exatamente com o total: a diferença de centavos vai para a última parcela, nunca some.
  • Pagamento parcial quita o débito original e abre um novo débito pelo saldo, preservando o histórico.
Camada 4

Casos de referência conferidos à mão

Mais de 200 testes automáticos comparam os cálculos com resultados conhecidos, calculados à mão a partir da regra.

  • Casos fixos: por exemplo, ISS de R$ 1.420,00 a 5% tem de dar exatamente R$ 71,00; IPTU, encargos por atraso e faixas de INSS/IRRF com valores conferidos manualmente.
  • Código de barras: dígitos verificadores módulo 10 e 11 conferidos conforme o padrão FEBRABAN; PIX com CRC16 conforme o manual do Banco Central.
  • Testes de propriedade: centenas de combinações aleatórias confirmam regras que nunca podem falhar. As parcelas sempre somam o total, a multa nunca passa do teto e o débito contábil sempre é igual ao crédito.
  • Os testes rodam a cada alteração do sistema. Se algum falha, a mudança não segue.
Camada 5

Recálculo independente no banco de dados

Os principais valores são calculados duas vezes, por caminhos diferentes, e comparados.

O aplicativo calcula na tela. O banco de dados refaz as contas com código próprio, escrito separadamente, e aponta qualquer diferença. São 13 conferências por município:

CTB-01ContabilidadeNenhum lançamento com débitos diferentes dos créditos
TRI-01TributosNenhum débito marcado como pago sem pagamento registrado
TRI-02TributosNenhum pagamento em débito que continua em aberto
TRI-03TributosPrincipal + multa + juros + correção = valor pago, em cada pagamento
TRI-04TributosNenhum número de guia repetido
TRI-05TributosNenhum débito com valor zero ou negativo
TRI-06TributosIPTU recalculado (valor venal × alíquota) = IPTU lançado
TRI-07TributosISS recalculado (serviços × alíquota) = ISS destacado na NFS-e
TRI-08TributosSoma das parcelas = total lançado
ORC-01OrçamentoNenhum empenho com pagamento maior que o liquidado
ORC-02OrçamentoNenhum empenho com liquidação maior que o empenhado
RH-01PessoalNenhum item de folha com valor negativo
RH-02PessoalNenhum servidor com descontos maiores que os proventos

Se os dois caminhos discordam, o mais provável é um erro de programação em um deles, e a conferência mostra exatamente quais registros divergem.

Camada 6

Travas que o próprio banco de dados impõe

Algumas regras não dependem da tela: o banco recusa a operação, venha de onde vier.

  • Partidas dobradas: um lançamento contábil desequilibrado não é gravado.
  • Fechamento mensal: depois de fechado o mês, nenhum documento gera lançamento com data nele. A reabertura exige administrador e justificativa.
  • Orçamento: não se empenha além do saldo da dotação, e não se paga sem liquidar.
  • Contratos: aditivos respeitam os limites legais de acréscimo; o valor só muda por aditivo registrado.
  • Estoque: não fica negativo e usa custo médio ponderado; inventário aberto bloqueia movimentações.
  • Folha fechada não pode ser recalculada.
  • Cada município só enxerga os próprios dados, isolamento garantido em cada consulta.
Camada 7

Arquivos oficiais conferidos antes do download

Todo arquivo para órgão externo é gerado, lido de volta e conferido. Se a conferência encontra erro, o download é bloqueado e o motivo aparece na tela.

  • NFS-e (ABRASF 2.04): o XML é lido por um leitor de XML real e conferido contra a estrutura do leiaute oficial: ordem dos campos, campos obrigatórios (como o item da lista de serviços) e formato de cada valor (alíquota em fração, valores com duas casas, código IBGE com 7 dígitos). O ISS é recalculado.
  • MSC (Matriz de Saldos Contábeis): o arquivo é relido linha a linha. Para cada conta e informação complementar, saldo final = saldo inicial + débitos − créditos, e os totais batem com o balancete de origem.
  • SIOPE e SIOPS: o percentual aplicado é recalculado a partir da receita-base e do valor aplicado, e o demonstrativo é bloqueado se faltar base mensal conferida.
  • Publicações de compras e contratos (PNCP): itens em sequência, total = quantidade × valor unitário, documentos válidos, vigência coerente e parcelas × valor = valor global.
Camada 8

Arquivos congelados

Exemplos de NFS-e, MSC, publicação de compra e contrato, PIX e código de barras ficam guardados como referência, byte a byte.

Qualquer mudança no sistema que altere um desses arquivos, mesmo que por um espaço ou uma casa decimal, faz os testes falharem. A mudança só segue se alguém revisar a diferença e a aprovar conscientemente. Foi assim que o campo obrigatório "item da lista de serviços" foi incluído na NFS-e: a diferença ficou visível e foi aprovada de forma explícita.

Camada 9

Conferência automática toda noite

Às 2h (horário de Brasília), todas as conferências rodam para cada município, sem ninguém pedir.

  • O resultado fica guardado num histórico permanente: data, regras conferidas e ocorrências.
  • Se algo falha, a tela de conferências mostra um alerta para investigar antes de gerar novos arquivos oficiais.
  • A equipe autorizada pode rodar a conferência a qualquer momento.
  • Toda alteração em dados do município fica numa trilha de auditoria que só aceita novos registros: nada é apagado nem reescrito.
Histórico e trilha de auditoria ficam disponíveis para os órgãos de controle.
Camada 10

Relatório de conformidade verificável

O resultado das conferências pode ser baixado em PDF. A impressão digital do arquivo fica registrada, e qualquer pessoa pode confirmar aqui que ele não foi alterado.

A impressão digital (SHA-256) é calculada sobre o próprio PDF. Se uma única letra do arquivo mudar, a impressão digital muda e a verificação abaixo falha.

O que estas camadas não substituem

Ser transparente sobre os limites também é parte da exatidão:

  • A conferência de estrutura da NFS-e segue o leiaute ABRASF, mas o autorizador do município pode ter regras próprias; a validação final é a do autorizador.
  • Os arquivos para SICONFI, SIOPE, SIOPS e PNCP são conferidos pelo City+ antes do envio; a aceitação final é sempre do sistema do órgão.
  • Tabelas legais (alíquotas, faixas de INSS/IRRF, índices) dependem do ato legal informado; a aprovação em dupla reduz, mas não elimina, o risco de cadastro errado.
  • Recomendamos revisão periódica por contador público e pelo controle interno do município, usando o histórico e o relatório desta página.