simples-nacional-br 1.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. simples_nacional_br-1.5.0/LICENSE +21 -0
  2. simples_nacional_br-1.5.0/PKG-INFO +539 -0
  3. simples_nacional_br-1.5.0/README.md +510 -0
  4. simples_nacional_br-1.5.0/pyproject.toml +50 -0
  5. simples_nacional_br-1.5.0/setup.cfg +4 -0
  6. simples_nacional_br-1.5.0/simples_nacional/__init__.py +76 -0
  7. simples_nacional_br-1.5.0/simples_nacional/__main__.py +248 -0
  8. simples_nacional_br-1.5.0/simples_nacional/calculo.py +446 -0
  9. simples_nacional_br-1.5.0/simples_nacional/cnae.py +208 -0
  10. simples_nacional_br-1.5.0/simples_nacional/cnae_dados.py +257 -0
  11. simples_nacional_br-1.5.0/simples_nacional/cnae_subclasses.tsv +1332 -0
  12. simples_nacional_br-1.5.0/simples_nacional/formato.py +89 -0
  13. simples_nacional_br-1.5.0/simples_nacional/mcp.py +388 -0
  14. simples_nacional_br-1.5.0/simples_nacional/planejamento.py +52 -0
  15. simples_nacional_br-1.5.0/simples_nacional/reparticao.py +95 -0
  16. simples_nacional_br-1.5.0/simples_nacional/tabelas.py +186 -0
  17. simples_nacional_br-1.5.0/simples_nacional/tabelas_reparticao.py +448 -0
  18. simples_nacional_br-1.5.0/simples_nacional_br.egg-info/PKG-INFO +539 -0
  19. simples_nacional_br-1.5.0/simples_nacional_br.egg-info/SOURCES.txt +36 -0
  20. simples_nacional_br-1.5.0/simples_nacional_br.egg-info/dependency_links.txt +1 -0
  21. simples_nacional_br-1.5.0/simples_nacional_br.egg-info/entry_points.txt +4 -0
  22. simples_nacional_br-1.5.0/simples_nacional_br.egg-info/top_level.txt +1 -0
  23. simples_nacional_br-1.5.0/tests/test_calculo.py +803 -0
  24. simples_nacional_br-1.5.0/tests/test_cli.py +384 -0
  25. simples_nacional_br-1.5.0/tests/test_cnae.py +352 -0
  26. simples_nacional_br-1.5.0/tests/test_formato.py +113 -0
  27. simples_nacional_br-1.5.0/tests/test_mcp.py +359 -0
  28. simples_nacional_br-1.5.0/tests/test_mcpb.py +134 -0
  29. simples_nacional_br-1.5.0/tests/test_pacote.py +43 -0
  30. simples_nacional_br-1.5.0/tests/test_planejamento.py +88 -0
  31. simples_nacional_br-1.5.0/tests/test_pypi.py +34 -0
  32. simples_nacional_br-1.5.0/tests/test_readme.py +32 -0
  33. simples_nacional_br-1.5.0/tests/test_reparticao.py +278 -0
  34. simples_nacional_br-1.5.0/tests/test_reparticao_2027.py +109 -0
  35. simples_nacional_br-1.5.0/tests/test_reparticao_2029.py +398 -0
  36. simples_nacional_br-1.5.0/tests/test_tabelas.py +222 -0
  37. simples_nacional_br-1.5.0/tests/test_vitrine.py +245 -0
  38. simples_nacional_br-1.5.0/tests/test_vitrine_adaptador.py +151 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 peterwkdev-creator
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,539 @@
1
+ Metadata-Version: 2.4
2
+ Name: simples-nacional-br
3
+ Version: 1.5.0
4
+ Summary: Simples Nacional: alíquota efetiva, valor do mês e Fator R, conferidos contra a LC 123/2006 e a LC 214/2025
5
+ Author: Peter
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/peterwkdev-creator/simples-nacional-br
8
+ Project-URL: Issues, https://github.com/peterwkdev-creator/simples-nacional-br/issues
9
+ Project-URL: Changelog, https://github.com/peterwkdev-creator/simples-nacional-br/blob/main/CHANGELOG.md
10
+ Project-URL: Experimente, https://peterwkdev-creator.github.io/simples-nacional-br/
11
+ Keywords: simples nacional,das,fator r,lc 123,tributário
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Financial and Insurance Industry
15
+ Classifier: Natural Language :: Portuguese (Brazilian)
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Office/Business :: Financial :: Accounting
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Dynamic: license-file
29
+
30
+ # simples-nacional-br
31
+
32
+ [![testes](https://github.com/peterwkdev-creator/simples-nacional-br/actions/workflows/testes.yml/badge.svg)](https://github.com/peterwkdev-creator/simples-nacional-br/actions/workflows/testes.yml)
33
+
34
+ Alíquota efetiva, valor do mês e Fator R do **Simples Nacional**, conferidos
35
+ faixa a faixa contra as tabelas oficiais da Lei Complementar 123/2006
36
+ (redação da LC 155/2016) e, de 2027 em diante, da LC 214/2025. Python puro,
37
+ só a biblioteca padrão, `Decimal` do começo ao fim.
38
+
39
+ ![A página calcula o exemplo do Anexo III e depois o mesmo mês pelo Fator R](docs/vitrine.gif)
40
+
41
+ **[Experimente no navegador](https://peterwkdev-creator.github.io/simples-nacional-br/)**:
42
+ a página roda esta mesma biblioteca, testada, no seu navegador (Pyodide):
43
+ alíquota efetiva, valor do mês, a parte de cada tributo e, com o Fator R,
44
+ a folha que leva ao Anexo III e quanto muda o DAS. Nenhum número sai do
45
+ seu computador. Na primeira visita o navegador baixa
46
+ cerca de 6 MB (o Python do Pyodide; a biblioteca são 61 KB); depois, cada
47
+ conta leva de 0 a 2 ms (medido na página publicada em 10/10/2026).
48
+
49
+ > **É estimativa, não consultoria tributária.** Não substitui o PGDAS-D nem o
50
+ > contador. Todos os exemplos usam números inventados.
51
+
52
+ ## Instalar
53
+
54
+ ```bash
55
+ pip install simples-nacional-br
56
+ ```
57
+
58
+ Ou direto da tag no GitHub:
59
+
60
+ ```bash
61
+ pip install "git+https://github.com/peterwkdev-creator/simples-nacional-br@v1.5.0"
62
+ ```
63
+
64
+ Sem dependência; Python 3.9 ou mais novo. A instalação traz três
65
+ comandos: `simples-nacional` (o mesmo que `python -m simples_nacional`),
66
+ `simples-nacional-cnae` e `simples-nacional-mcp`. Para só experimentar, nem
67
+ precisa instalar: do checkout limpo, os dois comandos abaixo rodam como
68
+ estão.
69
+
70
+ ```bash
71
+ python -m unittest
72
+ ```
73
+
74
+ ```bash
75
+ python -m simples_nacional --ano 2026 --anexo I --rbt12 4500000 --receita-mes 375000
76
+ ```
77
+
78
+ Testado a cada push com Python 3.9 a 3.14 (Linux) e 3.13 (Windows).
79
+ Sem `--ano`, a linha de comando usa o ano corrente e diz qual tabela usou.
80
+
81
+ ## Uso
82
+
83
+ ```python
84
+ from simples_nacional import aliquota_efetiva, anexo_por_fator_r, avisos, valor_devido
85
+
86
+ aliquota_efetiva("I", 4_500_000, ano=2026) # Decimal('0.106')
87
+ valor_devido("I", 4_500_000, "375000", ano=2026) # Decimal('39750.00')
88
+ anexo_por_fator_r(280_000, 1_000_000) # 'III'
89
+ avisos(4_500_000, ano=2026) # ['RBT12 acima do sublimite ...']
90
+ ```
91
+
92
+ `ano` é o ano-calendário do **mês de apuração**, não o de hoje: o DAS de
93
+ dezembro de 2026, calculado em janeiro de 2027, usa a tabela de 2026.
94
+ Valores em `Decimal`, `int` ou `str`; `float` é recusado, porque erra
95
+ centavo. RBT12 acima de R$ 4,8 milhões levanta `LimiteExcedido` (um
96
+ `ValueError`). Sublimite, início de atividade e a leitura de números no
97
+ formato brasileiro estão em [Mais exemplos](#mais-exemplos).
98
+
99
+ ## Por quê
100
+
101
+ A alíquota efetiva não é a alíquota impressa no anexo. LC 123, art. 18,
102
+ § 1º-A:
103
+
104
+ ```
105
+ alíquota efetiva = (RBT12 × alíquota nominal − parcela a deduzir) / RBT12
106
+ ```
107
+
108
+ RBT12 é a receita bruta dos 12 meses anteriores ao período de apuração (a
109
+ partir de 2027, dos 12 meses antecedentes ao mês anterior: para apurar março,
110
+ de fevereiro do ano anterior a janeiro; LC 123, art. 18, § 1º, na redação da
111
+ LC 214/2025). Um
112
+ comércio com RBT12 de R$ 4.500.000,00 está na 6ª faixa do Anexo I (nominal
113
+ 19%, parcela a deduzir R$ 378.000,00):
114
+
115
+ ```
116
+ (4.500.000 × 19% − 378.000) / 4.500.000 = 477.000 / 4.500.000 = 10,60%
117
+ ```
118
+
119
+ Aplicar a nominal de 19% dá R$ 855.000,00 no ano, onde a lei dá
120
+ R$ 477.000,00. É o erro relatado em
121
+ [mcp-fiscal-brasil#146](https://github.com/DeHor-Labs/mcp-fiscal-brasil/issues/146).
122
+
123
+ ## O que cobre
124
+
125
+ - Anexos I a V, seis faixas cada (teto, alíquota nominal, parcela a
126
+ deduzir), com a alíquota efetiva e o valor do mês.
127
+ - Fator R: folha de 12 meses ÷ RBT12; 28% ou mais vai para o Anexo III,
128
+ senão para o V. E o planejamento: a folha que leva a 28%, quanto falta e
129
+ o valor do mês nos dois anexos.
130
+ - Teto de R$ 4,8 milhões: erro explicado, nunca número.
131
+ - Sublimite de R$ 3,6 milhões: aviso de que o valor é só a parte federal;
132
+ a pedido, o ICMS ou ISS (e o IBS, desde 2027) pela 5ª faixa; até 2026, o
133
+ mês em que a receita do ano passa do sublimite.
134
+ - Início de atividade, mês a mês, e o limite proporcional no ano de início.
135
+ - Tabela do ano de apuração: em 2027 e 2028 a 6ª faixa tem nominal 0,1
136
+ ponto menor; a partir de 2029 volta a de hoje.
137
+ - Repartição do valor do mês por tributo (IRPJ, CSLL, Cofins, PIS, CPP,
138
+ ICMS, ISS e, de 2027 em diante, CBS e IBS), com a tabela de cada período
139
+ de 2018 a 2033.
140
+ - CNAE → anexo: a subclasse que impede o Simples, a ambígua (Res. CGSN
141
+ 140, Anexos VI e VII) e, para as outras, o anexo pela LC 123, art. 18,
142
+ com o Fator R quando ele decide; a indústria vai ao Anexo I de 2027 em
143
+ diante.
144
+ - Servidor MCP, para o Claude e outros assistentes chamarem as mesmas
145
+ contas: valor do mês, repartição, Fator R e CNAE.
146
+
147
+ Fora do escopo, entre outros: sublimites estaduais, exportação e MEI. A
148
+ lista completa e a fonte legal de cada regra estão em [Fontes e limites](#fontes-e-limites).
149
+
150
+ ## Como é testado
151
+
152
+ - Um caso por faixa de cada anexo (30), com a conta à mão escrita no teste e
153
+ refeita a partir dos números da própria linha.
154
+ - O teto de cada faixa fica na faixa de baixo (o anexo diz "até"); um
155
+ centavo acima sobe de faixa.
156
+ - Fator R em 27,99%, 28% e 28,01%.
157
+ - A 6ª faixa de 2027 e 2028 nos cinco anexos, com a conta à mão; as faixas 1
158
+ a 5 iguais às de hoje; 2018, 2026, 2029 e depois com a tabela de hoje.
159
+ - Início de atividade: 1º, 2º, 4º e 12º mês até 2026; 1º, 2º, 3º, 5º e 13º
160
+ a partir de 2027, com o mês anterior ao de apuração fora da média.
161
+ - ICMS, ISS e IBS pela 5ª faixa em 2027, 2028, 2029, 2030, 2031, 2032, 2033
162
+ e depois, com a conta à mão; o mês que passa do sublimite com o RBT12 na
163
+ 1ª, 4ª, 5ª e 6ª faixa, com e sem o teto de 5% do ISS, com e sem
164
+ impedimento, e nas fronteiras de 20% do sublimite e do limite.
165
+ - Teste de mutação: trocar qualquer um dos 90 valores da tabela, uma das
166
+ cinco nominais de 2027, um dos 85 percentuais de repartição, uma fronteira
167
+ de ano ou uma regra do início de atividade, um de cada vez, derruba pelo
168
+ menos um teste.
169
+ - Os exemplos em Python deste README rodam como estão, num teste.
170
+
171
+ Arredondamento: a lei não fixa regra. A alíquota efetiva guarda todos os
172
+ dígitos; o valor do mês é arredondado em centavos com `ROUND_HALF_UP`. As
173
+ contas usam um contexto `Decimal` próprio (28 dígitos): um
174
+ `getcontext().prec` mudado no programa de quem usa a biblioteca não muda o
175
+ resultado. Na linha de comando, a efetiva da linha "Valor do mês" sai com
176
+ as casas (4 ou mais) que fecham a conta no centavo, e o Fator R é cortado,
177
+ não arredondado, na 4ª casa: 27,99999% aparece 27,9999%, ao lado do Anexo V.
178
+
179
+ ## Mais exemplos
180
+
181
+ ```python
182
+ from simples_nacional import (aliquota_efetiva, valor_devido, valor_devido_acima_do_sublimite,
183
+ valor_devido_inicio_atividade)
184
+
185
+ aliquota_efetiva("I", 4_500_000, ano=2027) # Decimal('0.105'): 6ª faixa de 2027
186
+
187
+ # acima do sublimite com a receita do ano dentro dele, até 2026:
188
+ # 6ª faixa só federal (10,6%) + ICMS pela 5ª faixa (12,36% × 33,5% = 4,1406%)
189
+ aliquota_efetiva("I", 4_500_000, ano=2026, icms_iss_no_das=True) # Decimal('0.14740600')
190
+ valor_devido("I", 4_500_000, "375000", ano=2026, icms_iss_no_das=True) # Decimal('55277.25')
191
+
192
+ # de 2027 em diante, também o IBS: 10,5% + 12,36% × (33,50% + 0,17%)
193
+ aliquota_efetiva("I", 4_500_000, ano=2027, icms_iss_no_das=True) # Decimal('0.14661612')
194
+
195
+ # até 2026, o mês em que a receita do ano (3.400.000 antes dele) passa do sublimite:
196
+ # 200.000 dentro, pela efetiva com ISS, e 300.000 acima, federais + ISS em 3.600.000
197
+ valor_devido_acima_do_sublimite("III", 4_000_000, 500_000, 3_400_000, ano=2026) # Decimal('113563.08')
198
+
199
+ # início de atividade: receita de cada mês, do 1º até o de apuração
200
+ valor_devido_inicio_atividade("I", [30_000, 50_000], ano=2026) # Decimal('2825.00')
201
+ valor_devido_inicio_atividade("I", [400_000], ano=2027) # Decimal('16000.00'), 1ª faixa
202
+ ```
203
+
204
+ Na linha de comando, o ICMS ou o ISS pela 5ª faixa vem com
205
+ `--icms-iss-no-das`, e a saída mostra as duas parcelas da efetiva:
206
+
207
+ ```bash
208
+ python -m simples_nacional --ano 2026 --anexo I --rbt12 4500000 --receita-mes 375000 --icms-iss-no-das
209
+ ```
210
+
211
+ Até 2026, `--receita-ano` (a receita do ano antes do mês de apuração) calcula
212
+ o mês em que ela passa do sublimite e mostra cada parcela:
213
+
214
+ ```bash
215
+ python -m simples_nacional --ano 2026 --anexo III --rbt12 4000000 --receita-mes 500000 --receita-ano 3400000
216
+ ```
217
+
218
+ Na linha de comando, o início de atividade vai em `--receitas`, separadas
219
+ por ponto e vírgula, no lugar de `--rbt12` e `--receita-mes`:
220
+
221
+ ```bash
222
+ python -m simples_nacional --ano 2026 --anexo I --receitas "30.000;50.000"
223
+ ```
224
+
225
+ Com `--mes-inicio` (o mês do calendário em que a atividade começou, de 1 a
226
+ 12), a saída confere a receita do ano de início contra o limite e o
227
+ sublimite proporcionais; sem ele, avisa quando a receita passa de
228
+ R$ 300.000,00 por mês e pede o mês. Na API, o mesmo vem de
229
+ `avisos_inicio_atividade(receitas, mes_inicio, ano=...)`:
230
+
231
+ ```python
232
+ from simples_nacional import avisos_inicio_atividade
233
+
234
+ # aberta em novembro: 2 meses até dezembro, limite 800.000 e sublimite 600.000
235
+ avisos_inicio_atividade([300_000, 400_000], 11, ano=2026)
236
+ # ['Receita acumulada no ano de início de atividade (2026) de R$ 700.000,00,
237
+ # acima do sublimite proporcional de R$ 600.000,00 ...']
238
+ ```
239
+
240
+ Na linha de comando e em `ler_numero`, números aceitos: `4500000`,
241
+ `4500000.00`, `1000,50`, `1.000,50` e
242
+ `360.000` (ponto seguido de três dígitos é milhar), com ou sem `R$` na
243
+ frente e espaço nas pontas, como o Excel copia a célula (`R$ 1.000,50`). O
244
+ que é ambíguo, como `1,000.50` ou `100 000`, dá erro em vez de virar outro
245
+ número. `--version` mostra a versão instalada.
246
+
247
+ A mesma leitura e a saída no formato brasileiro são públicas, para quem
248
+ integra a biblioteca num sistema:
249
+
250
+ ```python
251
+ from decimal import Decimal
252
+ from simples_nacional import ler_numero, para_decimal, porcentagem, reais
253
+
254
+ ler_numero("360.000") # Decimal('360000'); ambíguo: ValueError
255
+ para_decimal("1000.50", "receita") # Decimal('1000.50'); float: TypeError
256
+ para_decimal("360.000", "receita") # Decimal('360.000'): ponto decimal, como no Decimal
257
+ porcentagem(Decimal("0.0565")) # '5,6500%'
258
+ reais(Decimal("4800000")) # '4.800.000,00'
259
+ ```
260
+
261
+ Na API, o texto vai com ponto decimal, como no `Decimal`: `"360.000"` é
262
+ 360. Para o formato brasileiro, passe antes por `ler_numero`.
263
+
264
+ ### Planejamento do Fator R
265
+
266
+ ```python
267
+ from simples_nacional import planejar_fator_r
268
+
269
+ p = planejar_fator_r(120_000, 600_000, 50_000, ano=2026) # folha12, rbt12, receita_mes
270
+ p.fator # Decimal('0.2'): 20%, Anexo V
271
+ p.folha_minima # Decimal('168000.00') = 28% × 600.000
272
+ p.folha_que_falta # Decimal('48000.00')
273
+ p.das_anexo_v # Decimal('8925.00') = 50.000 × 17,85%
274
+ p.das_anexo_iii # Decimal('5280.00') = 50.000 × 10,56%
275
+ p.diferenca_das # Decimal('3645.00'): o III sai mais barato no mês
276
+ ```
277
+
278
+ - A folha mínima é 28% do RBT12 arredondada para cima no centavo, para dar
279
+ 28% ou mais (LC 123, art. 18, §§ 5º-J e 5º-M); a folha é a do § 24, com
280
+ o pró-labore e os encargos.
281
+ - **A diferença é só no DAS.** O pró-labore a mais paga a contribuição
282
+ previdenciária do sócio e pode pagar IRPF, que dependem da pessoa: nada
283
+ disso está descontado.
284
+ - O Fator R olha os 12 meses da folha: o que falta pode entrar aos poucos
285
+ ou de uma vez, e a biblioteca não escolhe.
286
+ - Na 6ª faixa o Anexo V pode sair mais barato que o III (diferença
287
+ negativa).
288
+ - Na linha de comando, `--anexo fator-r --folha12 ...` mostra o mesmo
289
+ planejamento, exceto no mês do art. 24 (`--receita-ano`).
290
+
291
+ ### Repartição do DAS por tributo
292
+
293
+ ```python
294
+ from simples_nacional import aliquotas_por_tributo, parcelas_das
295
+
296
+ parcelas_das("III", 3_000_000, 100_000, ano=2026)
297
+ # {'IRPJ': 711.08, 'CSLL': 621.31, 'COFINS': 2277.36, 'PIS': 493.74,
298
+ # 'CPP': 7708.51, 'ISS': 5000.00} (Decimal, em reais; soma 16.812,00)
299
+
300
+ parcelas_das("I", 1_000_000, 80_000, ano=2027)
301
+ # {'IRPJ': 371.80, 'CSLL': 236.60, 'CBS': 1036.31, 'CPP': 2839.20,
302
+ # 'ICMS': 2264.60, 'IBS': 11.49} (soma 6.760,00: efetiva 8,45%)
303
+
304
+ aliquotas_por_tributo("I", 1_000_000, ano=2027)["IRPJ"] # 8,45% × 5,50% = 0,46475%
305
+ ```
306
+
307
+ - `parcelas_das` dá quanto do DAS do mês vai a cada tributo, em centavos;
308
+ a soma é o `valor_devido`. Cada parcela começa truncada no centavo, e o
309
+ que falta vai às de maior fração descartada (convenção da biblioteca: a
310
+ lei não fixa o arredondamento). `aliquotas_por_tributo` dá a fração da
311
+ receita de cada um, sem arredondar; somam a alíquota efetiva.
312
+ - 2018 a 2026: LC 123, Anexos I a V, redação da LC 155/2016. 2027 e 2028,
313
+ 2029, 2030, 2031, 2032 e de 2033 em diante: uma tabela por período da
314
+ LC 214/2025 (Anexos XVIII a XXII), com CBS e IBS; o IBS toma o lugar do
315
+ ICMS e do ISS aos poucos, e de 2033 em diante só há IBS.
316
+ - 5ª faixa dos Anexos III e IV: o ISS fica no teto da nota (*) do anexo (5%
317
+ até 2028; 4,5%, 4%, 3,5% e 3% de 2029 a 2032), e a diferença vai aos
318
+ outros pelos percentuais da nota. Três dessas notas da LC 214 somam
319
+ 100,01% ou 99,99% (IV em 2029 e 2031, III em 2030): os percentuais se
320
+ aplicam na proporção deles, para a soma bater com o DAS.
321
+ - 6ª faixa (acima do sublimite): só os federais e a CBS; ICMS, ISS e IBS se
322
+ pagam fora do DAS. O mês em que a receita do ano passa do sublimite e o
323
+ ICMS ou ISS pela 5ª faixa (`icms_iss_no_das`) não se repartem aqui.
324
+ - É estimativa: não substitui o PGDAS-D nem o contador.
325
+
326
+ ### CNAE → anexo
327
+
328
+ ```python
329
+ from simples_nacional.cnae import enquadrar
330
+
331
+ enquadrar("6920-6/01", ano=2026).anexo # 'III': contabilidade, § 5º-B, XIV
332
+ enquadrar("1091-1/02", ano=2026).anexo # 'II': indústria até 2026
333
+ enquadrar("1091-1/02", ano=2027).anexo # 'I': indústria de 2027 em diante
334
+ enquadrar("8299-7/04", ano=2026).situacao # 'impeditiva': leiloeiro, Anexo VI
335
+
336
+ e = enquadrar("7112-0/00", ano=2026, folha12=300_000, rbt12=1_000_000)
337
+ e.situacao, e.fator_r, e.anexo # ('fator_r', Decimal('0.3'), 'III')
338
+ ```
339
+
340
+ ```bash
341
+ python -m simples_nacional.cnae 6920-6/01 1091102 --ano 2027
342
+ ```
343
+
344
+ - A situação é uma de cinco: `impeditiva` (Anexo VI da Res. CGSN 140: com
345
+ ela no CNPJ, não há opção pelo Simples), `ambígua` (Anexo VII: parte da
346
+ subclasse impede, parte não), `anexo`, `fator_r` (Anexo III ou V; com
347
+ `folha12` e `rbt12`, o anexo vem resolvido) e `sem_classificacao`.
348
+ - **Não há tabela oficial CNAE → anexo.** As listas dos Anexos VI e VII são
349
+ oficiais; a ligação de cada subclasse a um anexo é a leitura desta
350
+ biblioteca da LC 123, art. 18, com o parágrafo no `fundamento`. Onde a lei
351
+ não descreve a atividade sem margem de dúvida, a resposta é
352
+ `sem_classificacao`, nunca um palpite.
353
+ - De 2027 em diante, a indústria vai ao Anexo I e o II fica só para produto
354
+ com IPI mantido, o da Zona Franca de Manaus (LC 123, art. 18, §§ 4º, II, e
355
+ 5º, redação da LC 214/2025): a observação avisa.
356
+ - O nome de cada uma das 1.332 subclasses vem da lista do IBGE (CNAE 2.3);
357
+ código inexistente dá `ValueError`.
358
+
359
+ ### Servidor MCP
360
+
361
+ As mesmas contas como servidor [MCP](https://modelcontextprotocol.io)
362
+ (Model Context Protocol), para o Claude e outros assistentes chamarem. Roda
363
+ no seu computador, pela entrada e saída padrão, só com a biblioteca padrão;
364
+ nenhum número sai dali. Depois do `pip install` acima:
365
+
366
+ ```bash
367
+ python -m simples_nacional.mcp
368
+ ```
369
+
370
+ Com o [uv](https://docs.astral.sh/uv/), sem instalar antes:
371
+
372
+ ```bash
373
+ uvx --from simples-nacional-br simples-nacional-mcp
374
+ ```
375
+
376
+ No Claude Code:
377
+
378
+ ```bash
379
+ claude mcp add --transport stdio simples-nacional -- python -m simples_nacional.mcp
380
+ ```
381
+
382
+ No Claude Desktop, em `claude_desktop_config.json`:
383
+
384
+ ```json
385
+ {
386
+ "mcpServers": {
387
+ "simples-nacional": {
388
+ "command": "python",
389
+ "args": ["-m", "simples_nacional.mcp"]
390
+ }
391
+ }
392
+ }
393
+ ```
394
+
395
+ `python` tem de ser o Python em que a biblioteca foi instalada; se o
396
+ aplicativo não o acha, ponha o caminho completo, que
397
+ `python -c "import sys; print(sys.executable)"` mostra.
398
+
399
+ Sem `pip`: cada Release traz o pacote
400
+ `simples-nacional-br-<versão>.mcpb`, que o Claude Desktop instala como
401
+ extensão (abra o arquivo nele). Precisa de Python 3.9 ou mais novo no
402
+ computador. O mesmo pacote está no
403
+ [catálogo oficial de servidores MCP](https://registry.modelcontextprotocol.io)
404
+ como `io.github.peterwkdev-creator/simples-nacional-br`.
405
+
406
+ Quatro ferramentas, todas só cálculo (não leem nem gravam nada fora delas):
407
+
408
+ | Ferramenta | Argumentos | Devolve |
409
+ |---|---|---|
410
+ | `calcular_das` | `anexo`, `rbt12`, `receita_mes`, `ano`; `icms_iss_no_das` | faixa, alíquota efetiva, valor do mês e avisos |
411
+ | `repartir_das` | `anexo`, `rbt12`, `receita_mes`, `ano` | o valor do mês por tributo e a alíquota de cada um |
412
+ | `planejar_fator_r` | `folha12`, `rbt12`, `receita_mes`, `ano`; `icms_iss_no_das` | o Fator R, a folha que leva a 28% e o valor do mês nos Anexos V e III |
413
+ | `enquadrar_cnae` | `cnae`, `ano`; `folha12`, `rbt12` | a situação da subclasse, o anexo e o fundamento |
414
+
415
+ - `ano` é obrigatório em todas, pelo mesmo motivo da API: é o ano do mês de
416
+ apuração, não o de hoje. Os depois do ponto e vírgula são opcionais.
417
+ - Valores em reais, como número JSON ou texto no formato brasileiro
418
+ (`"4.500.000,00"`); a conta é em `Decimal`, sem passar por `float`.
419
+ - A resposta vem em texto, para o assistente ler, e em JSON
420
+ (`structuredContent`), com os valores em texto (`"39750.00"`) e o aviso
421
+ de que é estimativa. Entrada errada ou RBT12 acima do limite volta como
422
+ erro da ferramenta, com a mensagem da biblioteca.
423
+ - Protocolo: atende a forma com `initialize` (revisões 2025-06-18 e
424
+ 2025-11-25) e a sem estado, com `server/discover` (2026-07-28), no mesmo
425
+ processo.
426
+
427
+ ## Fontes e limites
428
+
429
+ | | Fonte (LC 123/2006, redação da LC 155/2016) |
430
+ |---|---|
431
+ | Anexos I a V, seis faixas cada: teto, alíquota nominal, parcela a deduzir | Anexos I a V |
432
+ | Alíquota efetiva | art. 18, § 1º-A |
433
+ | Valor do mês: receita do mês × alíquota efetiva | art. 18, § 3º |
434
+ | Fator R: folha de 12 meses ÷ RBT12; 28% ou mais → Anexo III, senão V. Planejamento (`planejar_fator_r`): folha de 28% do RBT12, para cima no centavo, e o valor do mês nos dois anexos | art. 18, §§ 5º-J, 5º-K, 5º-M e 24 |
435
+ | Teto de R$ 4,8 milhões: erro explicado, nunca número | art. 3º, II |
436
+ | Sublimite de R$ 3,6 milhões: aviso de que o valor é só a parte federal e de que ICMS e ISS (e o IBS, desde 2027) saem do DAS ou seguem nele conforme a receita acumulada no ano | art. 13-A; Res. CGSN 140/2018, arts. 21, III, b, e 24; LC 214/2025, arts. 517 e 518 |
437
+ | RBT12 acima de R$ 3,6 milhões e receita do ano dentro do sublimite, a pedido (`icms_iss_no_das=True`): efetiva da 5ª faixa × repartição dela, somada à 6ª faixa, que é só federal. Até 2026, ICMS ou ISS (I 33,50%, II 32,00%, III 33,50%, IV 40,00%, V 23,50%); de 2027 a 2032, ICMS ou ISS e IBS, pela tabela de cada período; de 2033 em diante, só o IBS | Res. CGSN 140/2018, art. 21, III, b, e IV (redação da Res. CGSN 190/2026); repartição dos Anexos I a V da LC 123 e XVIII a XXII da LC 214 |
438
+ | Até 2026, o mês em que a receita do ano passa do sublimite (`valor_devido_acima_do_sublimite`): a parcela dentro dele pela efetiva com ICMS ou ISS; a de cima, federais pela faixa do RBT12 mais ICMS ou ISS pela 5ª faixa em R$ 3,6 milhões; a que passa de R$ 4,8 milhões, federais da 6ª faixa em R$ 4,8 milhões mais o mesmo ICMS ou ISS. Avisa quando o impedimento e a exclusão valem (mês seguinte, se o excesso passa de 20%; senão, ano seguinte) | Res. CGSN 140/2018, arts. 12 e 24; LC 123, art. 3º, §§ 9º e 9º-A, e art. 20, §§ 1º e 1º-A |
439
+ | Início de atividade, mês a mês: até 2026, 1º mês com a receita do próprio mês × 12 e do 2º ao 12º com a média dos anteriores × 12; a partir de 2027, 1º e 2º mês na 1ª faixa e do 3º ao 13º com a média dos meses antes do mês anterior × 12 | art. 18, § 2º; Res. CGSN 140/2018, art. 22, e Res. CGSN 190/2026 |
440
+ | Ano de início de atividade: limite de R$ 400.000,00 e sublimite de R$ 300.000,00 vezes os meses do início a dezembro (fração conta como mês), com aviso de exclusão desde o início, se o excesso passa de 20%, ou a partir do ano seguinte | art. 3º, §§ 2º e 10 a 13; art. 31, III; Res. CGSN 140/2018, arts. 3º e 9º, § 2º |
441
+ | Tabela do ano de apuração: em 2027 e 2028 a 6ª faixa tem nominal 0,1 ponto menor; a partir de 2029 volta a de hoje | LC 214/2025, art. 519 e Anexos XVIII a XXII |
442
+ | Repartição por tributo (`parcelas_das`, `aliquotas_por_tributo`): efetiva × percentual da faixa; na 5ª faixa de III e IV, ISS no teto da nota (*) do anexo | LC 123, Anexos I a V (redação da LC 155/2016); LC 214/2025, Anexos XVIII a XXII |
443
+ | CNAE → anexo (`simples_nacional.cnae`): subclasse impeditiva e ambígua; para as outras, o anexo pela atividade, com o Fator R onde ele decide; indústria no Anexo II até 2026 e no I de 2027 em diante | Res. CGSN 140/2018, art. 8º e Anexos VI (redação da Res. CGSN 143/2018) e VII (redação da Res. CGSN 156/2020); LC 123, art. 18, §§ 4º e 5º a 5º-M; LC 214/2025, art. 517 |
444
+
445
+ Cada valor de tabela foi lido no site da Câmara dos Deputados em 09/10/2026
446
+ ([LC 155/2016, texto atualizado](https://www2.camara.leg.br/legin/fed/leicom/2016/leicomplementar-155-27-outubro-2016-783850-normaatualizada-pl.html));
447
+ a fonte fica ao lado da tabela em `simples_nacional/tabelas.py`. A tabela de
448
+ 2027 e 2028 foi lida no mesmo dia no
449
+ [texto atualizado da LC 214/2025](https://www2.camara.leg.br/legin/fed/leicom/2025/leicomplementar-214-16-janeiro-2025-796905-normaatualizada-pl.html);
450
+ a repartição da 5ª faixa de 2027 em diante, no
451
+ [texto compilado do Planalto](https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp214.htm),
452
+ salvo em 09/10/2026 e conferido em 10/10/2026. A repartição por tributo foi
453
+ lida nas mesmas páginas da Câmara (2018 a 2026 e de 2029 em diante em
454
+ 10/10/2026; 2027 e 2028 em 09/10/2026); a fonte de cada tabela fica em
455
+ `simples_nacional/tabelas_reparticao.py`.
456
+
457
+ As regras do início de atividade foram lidas em 09/10/2026 no portal de
458
+ normas da Receita:
459
+ [Res. CGSN 140/2018](https://normasinternet2.receita.fazenda.gov.br/#/consulta/externa/92278)
460
+ e [Res. CGSN 190/2026](https://normasinternet2.receita.fazenda.gov.br/#/consulta/externa/152832).
461
+ Média zero no início de atividade (nenhuma venda ainda) dá a alíquota da
462
+ 1ª faixa: a fórmula não se define com RBT12 zero, e essa é uma convenção da
463
+ biblioteca.
464
+
465
+ No mês em que a receita do ano passa do sublimite, nos Anexos III e IV, a
466
+ parte federal da faixa do RBT12 é a efetiva menos o ISS limitado a 5%: a
467
+ diferença acima de 5% fica com os federais (Res. CGSN 140, art. 21, III, a).
468
+ É a leitura da biblioteca; o ISS pela 5ª faixa em R$ 3,6 milhões entra
469
+ inteiro, porque o teto ali só muda a repartição, não o total.
470
+
471
+ A partir de 2027, o valor do mês é o DAS cheio, já com as parcelas de CBS e
472
+ IBS. Quem optar por pagar esses dois tributos pelo regime regular (LC 123,
473
+ art. 13, § 9º) os recolhe fora, e o DAS fica menor: esse cálculo não está
474
+ aqui.
475
+
476
+ Fora do escopo: sublimites estaduais, o ano em que o sublimite é ultrapassado depois do de
477
+ início de atividade (art. 3º, §§ 11 a 15), as receitas de exportação, que
478
+ têm limite próprio (art. 3º, § 14), o mês em que a receita do ano passa do
479
+ sublimite a partir de 2027 (Res. CGSN 140, art. 24, com o IBS: dá erro) e,
480
+ nele, o ano de início de atividade (§ 1º) e a exportação em separado (§ 8º),
481
+ a empresa aberta no ano anterior ao da opção (Res. CGSN 140, art. 22, § 4º)
482
+ e o MEI.
483
+
484
+ ## O que há em cada pasta
485
+
486
+ - `simples_nacional/`: a biblioteca. `tabelas.py` e
487
+ `tabelas_reparticao.py` têm os valores da lei, cada um com a fonte;
488
+ `calculo.py`, as contas; `reparticao.py`, a repartição por tributo;
489
+ `planejamento.py`, o planejamento do Fator R; `cnae.py`, o enquadramento
490
+ CNAE → anexo, com os dados em `cnae_dados.py` e os nomes do IBGE em
491
+ `cnae_subclasses.tsv`; `formato.py`, a leitura e a escrita de números no
492
+ formato brasileiro; `__main__.py`, a linha de comando; `mcp.py`, o
493
+ servidor MCP.
494
+ - `tests/`: os testes, inclusive o que roda os exemplos deste README.
495
+ - `vitrine/`: a página do "Experimente no navegador". O GitHub Actions a
496
+ monta e publica a cada push que muda a biblioteca, a página ou os testes
497
+ (`.github/workflows/pages.yml`).
498
+ - `mcpb/`: o pacote MCPB do servidor MCP e o `server.json` do catálogo. O
499
+ GitHub Actions os monta, anexa o pacote à Release e publica no catálogo a
500
+ cada versão (`.github/workflows/catalogo-mcp.yml`).
501
+ - `.github/workflows/pypi.yml`: publica no PyPI a cada versão, pela
502
+ publicação confiável (sem token guardado), depois de rodar o pacote
503
+ instalado (`.github/conferir-instalado.sh`, que roda também a cada push).
504
+ - `docs/`: o GIF do começo deste README.
505
+ - [`CHANGELOG.md`](CHANGELOG.md): o que mudou em cada versão.
506
+
507
+ ## Compatibilidade
508
+
509
+ A numeração segue o [Versionamento Semântico](https://semver.org/lang/pt-BR/).
510
+ O que está em `simples_nacional.__all__` e em `simples_nacional.cnae.__all__`
511
+ só muda de forma incompatível numa versão maior (2.0). Função, constante ou
512
+ argumento novo sai numa versão menor (1.1); correção, numa de correção
513
+ (1.0.1). Valor de tabela que muda por lei ou resolução nova sai numa versão
514
+ menor, com a fonte e a data no [CHANGELOG.md](CHANGELOG.md); o mesmo vale
515
+ para o anexo de uma subclasse da CNAE, que é leitura da biblioteca. No servidor MCP, o nome
516
+ de cada ferramenta, seus argumentos e as chaves do `structuredContent`
517
+ seguem a mesma regra. Nomes com `_` na frente e o texto dos avisos e das
518
+ respostas não fazem parte da promessa.
519
+
520
+ ## Versão para escritórios
521
+
522
+ A biblioteca é e continua grátis, sob a licença MIT. Para escritórios de
523
+ contabilidade, está em preparo uma versão completa, que faz a mais: o
524
+ regime híbrido de 2027 em diante (IBS e CBS fora do DAS), a comparação do
525
+ Simples com o Lucro Presumido e o Real e a carteira de clientes. Ainda sem
526
+ preço nem data. Para entrar na lista de espera, reaja com 👍 na
527
+ [issue #1](https://github.com/peterwkdev-creator/simples-nacional-br/issues/1).
528
+
529
+ ## Contribuir
530
+
531
+ Achou um valor diferente do PGDAS-D ou da sua conta, ou um caso de borda
532
+ que falta? [Abra uma issue](https://github.com/peterwkdev-creator/simples-nacional-br/issues/new/choose)
533
+ pelo modelo "Valor diferente do esperado", com números inventados. Para
534
+ mandar código, veja o [CONTRIBUTING.md](CONTRIBUTING.md); a conversa segue
535
+ o [código de conduta](CODE_OF_CONDUCT.md).
536
+
537
+ ## Licença
538
+
539
+ [MIT](LICENSE).