关于 simples-nacional-br
simples-nacional-br 是用于计算巴西 Simples Nacional 税额的 Python 库和命令行工具,面向企业与财务系统开发者。它按年度法律表格计算有效税率、月应缴额、Fator R 和税款分摊,并提供 CNAE 查询及 MCP 服务。
主要功能
- 01按税档计算有效税率和月税额
- 02计算 Fator R 及工资规划
- 03按税种拆分 DAS 金额
- 04根据 CNAE 查询适用附件
- 05支持不同年度规则和 Decimal 运算
适用场景
- 01估算企业本月 DAS
- 02比较 Fator R 对 III、V 附件税额的影响
- 03核对活动 CNAE 对应的附件
- 04在系统或 Agent 中调用税额计算
MCP 相关
提供 MCP 服务,供 Claude 等 MCP 客户端调用月税额、税款分摊、Fator R 和 CNAE 计算。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
5收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ano | integer | 是 | 核算月份的日历年(2026 年 12 月的 DAS 使用 2026 年)。 |
| anexo | enum | 是 | LC 123 的附表:I 为商业,II 为工业,III 至 V 为服务业。I | II | III | IV | V |
| rbt12 | number|string | 是 | 核算月之前 12 个月的总收入,单位为雷亚尔(2027 年起,取截至前一个月的 12 个月)。 |
| receita_mes | number|string | 是 | 核算月的总收入,单位为雷亚尔。 |
| icms_iss_no_das | boolean | 否 | RBT12 超过 R$ 3,6 milhões 且当年收入仍在子限额内:按第 5 档合计 ICMS 或 ISS(以及 2027 年起的 IBS)。 |
详细介绍
simples-nacional-br
Simples Nacional 的实际税率、当月应缴金额和 Fator R,已逐档对照《123/2006 号补充法律》(经 LC 155/2016 修订)及 2027 年起适用的 LC 214/2025 官方税率表核验。纯 Python,仅依赖标准库,从头到尾使用 Decimal。

在浏览器中试用: 此页面会在你的浏览器中运行经过测试的同一库(Pyodide):计算实际税率、当月应缴金额、各项税费金额(也支持经营不足 12 个月的企业,按每月收入计算),以及通过 Fator R 计算得出适用 Anexo III 的工资总额和 DAS 的变化金额。没有任何数字会离开你的电脑。首次访问时,浏览器会下载约 6 MB(Pyodide 的 Python;此库为 61 KB);之后,每次计算耗时 0 到 2 ms(根据 2026 年 10 月 10 日发布的页面测量)。
这是估算,不是税务咨询。 不能替代 PGDAS-D 或会计师。所有示例均使用虚构数字。
安装
pip install simples-nacional-br
Python 3.9 或更高版本,无需任何其他依赖项。每次推送时,都会在 Python 3.9 至 3.14(Linux)和 3.13(Windows)上进行测试。
安装后会提供四个命令:
| 命令 | 用途 |
|---|---|
simples-nacional | 计算当月 DAS:实际税率、金额和提示 |
simples-nacional-cnae | 查询某项活动(CNAE)所属的附件,并显示法律依据 |
simples-nacional-mcp | MCP 服务,供 Claude 和其他助手使用(见下文“Servidor MCP”) |
simples-nacional-br | 同一 MCP 服务,使用软件包名称(uvx simples-nacional-br 运行的命令) |
首次计算:一家 Anexo III 企业,过去 12 个月的收入(RBT12)为 R$ 600 mil,当月收入为 R$ 50 mil。
simples-nacional --ano 2026 --anexo III --rbt12 600000 --receita-mes 50000
Tabela do ano-calendário 2026: LC 123/2006, Anexos I a V, redação da LC 155/2016 (para outro ano de apuração, use --ano)
Anexo III, 3ª faixa (até R$ 720.000,00): alíquota nominal 13,5000%, parcela a deduzir R$ 17.640,00
Alíquota efetiva: 10,5600% = (RBT12 × Aliq - PD) / RBT12 (LC 123, art. 18, § 1º-A)
Valor do mês: R$ 5.280,00 = R$ 50.000,00 × 10,5600%
Estimativa conferida contra a tabela da lei: não substitui o PGDAS-D nem o contador.
simples-nacional --help 会显示所有选项。不指定 --ano 时,默认使用当前年份,第一行会说明所用税率表。
其他方式:
- 直接从 GitHub 标签安装:
pip install "git+https://github.com/peterwkdev-creator/[email protected]"; - 无需安装,直接使用源代码(
git clone):运行python -m unittest执行测试,运行python -m simples_nacional执行相同计算。
用法
from simples_nacional import aliquota_efetiva, anexo_por_fator_r, avisos, valor_devido
aliquota_efetiva("I", 4_500_000, ano=2026) # Decimal('0.106')
valor_devido("I", 4_500_000, "375000", ano=2026) # Decimal('39750.00')
anexo_por_fator_r(280_000, 1_000_000) # 'III'
avisos(4_500_000, ano=2026) # ['RBT12 acima do sublimite ...']
ano 是申报月份所属的日历年份,而不是当前年份:2026 年 12 月的 DAS 即使在 2027 年 1 月计算,也使用 2026 年的税率表。值可以是 Decimal、int 或 str;不接受 float,因为它会造成分币误差。RBT12 超过 R$ 4,8 milhões 时会引发 LimiteExcedido(一种 ValueError)。小限额、开始经营以及读取巴西格式数字的说明见下文“更多示例”。
为什么
实际税率并非附件中印出的税率。《LC 123》第 18 条 第 1º-A 款:
alíquota efetiva = (RBT12 × alíquota nominal − parcela a deduzir) / RBT12
RBT12 是申报期之前 12 个月的总收入(自 2027 年起,改为申报月份前一个月之前的 12 个月:申报 3 月时,取上一年 2 月至当年 1 月;《LC 123》第 18 条第 1 款,按 《LC 214/2025》修订后的版本)。一家 RBT12 为 R$ 4.500.000,00 的商业企业属于附件 I 的第 6 档(名义税率 19%,扣除额 R$ 378.000,00):
(4.500.000 × 19% − 378.000) / 4.500.000 = 477.000 / 4.500.000 = 10,60%
按 19% 的名义税率计算,年税额为 R$ 855.000,00,而法律规定的金额是 R$ 477.000,00。这正是 mcp-fiscal-brasil#146 中报告的错误。
涵盖内容
- 附件 I 至 V,每个附件各有 6 档(上限、名义税率、扣除额),并计算实际税率和当月金额。
- Fator R:12 个月工资总额 ÷ RBT12;达到 28% 或以上适用附件 III, 否则适用附件 V。此外还提供规划计算:达到 28% 所需的工资总额、尚差多少,以及两个附件下的当月金额。
- R$ 4,8 milhões 上限:说明错误原因,绝不返回数字。
- R$ 3,6 milhões 子上限:提示金额仅为联邦部分;按要求计算按第 5 档征收的 ICMS 或 ISS(自 2027 年起还包括 IBS);截至 2026 年,计算当年收入超过子上限的月份。
- 按月计算开始营业的情形,以及开始营业当年的比例上限。
- 按申报年度使用的税率表:2027 年和 2028 年,第 6 档名义税率低 0,1 个百分点;自 2029 年起恢复为现行税率。
- 按税种分摊当月金额(IRPJ、CSLL、Cofins、PIS、CPP、 ICMS、ISS,以及自 2027 年起的 CBS 和 IBS),并提供 2018 至 2033 年各期间的税率表。
- CNAE → 附件:阻止适用 Simples 的子类、存在歧义的子类(Res. CGSN 140,附件 VI 和 VII);其他子类则按《LC 123》第 18 条确定附件,并在适用时考虑 Fator R;自 2027 年起,工业企业适用附件 I。
- MCP 服务,供 Claude 和其他助手调用相同的计算:当月金额、分摊、Fator R 和 CNAE。
范围之外的内容包括州级子上限、出口和 MEI 等。完整列表以及每条规则的法律依据见下文“来源和限制”。
如何测试
- 每个附件的每一档各有一个案例(共 30 个),测试中写明手工计算过程,并根据该行自身的数据重新计算。
- 每档的上限归入较低一档(附件使用“至”);超过上限一分钱即升至下一档。
- 测试 Fator R 为 27,99%、28% 和 28,01% 的情形。
- 测试 2027 年和 2028 年五个附件的第 6 档,并附手工计算过程;第 1 至 5 档与现行档位相同;2018 年、2026 年、2029 年及之后使用现行税率表。
- 开始营业:截至 2026 年测试第 1、2、4 和 12 个月;自 2027 年起测试第 1、2、3、5 和 13 个月,且不将申报月份前一个月纳入平均值。
- 测试 2027、2028、2029、2030、2031、2032、2033 年及之后按第 5 档计算 ICMS、ISS 和 IBS,并附手工计算过程;测试当年收入超过子上限的月份,涵盖 RBT12 位于第 1、4、5 和 6 档的情形,分别测试有无 ISS 5% 上限、有无适用限制,以及子上限和上限 20% 的临界点。
- 变异测试:每次只更改税率表中的 90 个数值之一、2027 年五个名义税率之一、85 个分摊比例之一、年度边界之一或一条开始营业规则,都至少会导致一个测试失败。
- 本 README 中的 Python 示例可直接运行,并通过测试。
舍入:法律未规定舍入规则。实际税率保留所有位数;当月金额按 ROUND_HALF_UP 舍入至分。计算使用独立的 Decimal 上下文(28 位):使用者程序中更改的
getcontext().prec 不会影响结果。在命令行中,“当月金额”行的实际税率会显示足以使计算结果精确到分的位数(4 位或更多);Fator R 则在第 4 位小数处截断而不舍入:27,99999% 会显示为 27,9999%,并列于附件 V 旁。
更多示例
from simples_nacional import (aliquota_efetiva, valor_devido, valor_devido_acima_do_sublimite,
valor_devido_inicio_atividade)
aliquota_efetiva("I", 4_500_000, ano=2027) # Decimal('0.105'): 6ª faixa de 2027
# acima do sublimite com a receita do ano dentro dele, até 2026:
# 6ª faixa só federal (10,6%) + ICMS pela 5ª faixa (12,36% × 33,5% = 4,1406%)
aliquota_efetiva("I", 4_500_000, ano=2026, icms_iss_no_das=True) # Decimal('0.14740600')
valor_devido("I", 4_500_000, "375000", ano=2026, icms_iss_no_das=True) # Decimal('55277.25')
# de 2027 em diante, também o IBS: 10,5% + 12,36% × (33,50% + 0,17%)
aliquota_efetiva("I", 4_500_000, ano=2027, icms_iss_no_das=True) # Decimal('0.14661612')
# até 2026, o mês em que a receita do ano (3.400.000 antes dele) passa do sublimite:
# 200.000 dentro, pela efetiva com ISS, e 300.000 acima, federais + ISS em 3.600.000
valor_devido_acima_do_sublimite("III", 4_000_000, 500_000, 3_400_000, ano=2026) # Decimal('113563.08')
# início de atividade: receita de cada mês, do 1º até o de apuração
valor_devido_inicio_atividade("I", [30_000, 50_000], ano=2026) # Decimal('2825.00')
valor_devido_inicio_atividade("I", [400_000], ano=2027) # Decimal('16000.00'), 1ª faixa
在命令行中,第 5 档的 ICMS 或 ISS 通过
--icms-iss-no-das 指定,输出会显示实际税率的两部分:
python -m simples_nacional --ano 2026 --anexo I --rbt12 4500000 --receita-mes 375000 --icms-iss-no-das
截至 2026 年,--receita-ano(核算月份之前的年度收入)会计算收入
超过次级上限的月份,并显示各项金额:
python -m simples_nacional --ano 2026 --anexo III --rbt12 4000000 --receita-mes 500000 --receita-ano 3400000
在命令行中,开始经营时的收入通过 --receitas 传入,以分号分隔,
替代 --rbt12 和 --receita-mes:
python -m simples_nacional --ano 2026 --anexo I --receitas "30.000;50.000"
使用 --mes-inicio(经营开始的日历月份,范围为 1 到
12)后,输出会将开始经营年度的收入与按比例计算的上限和
次级上限进行核对;不使用该参数时,若收入超过每月
R$ 300.000,00,则会发出提示并要求提供月份。在 API 中,对应的是
avisos_inicio_atividade(receitas, mes_inicio, ano=...):
from simples_nacional import avisos_inicio_atividade
# aberta em novembro: 2 meses até dezembro, limite 800.000 e sublimite 600.000
avisos_inicio_atividade([300_000, 400_000], 11, ano=2026)
# ['Receita acumulada no ano de início de atividade (2026) de R$ 700.000,00,
# acima do sublimite proporcional de R$ 600.000,00 ...']
在命令行和 ler_numero 中,可接受的数字格式包括:4500000、
4500000.00、1000,50、1.000,50 和
360.000(点号后跟三位数字表示千位),前面可带或不带 R$,两端
也可有空格,例如 Excel 复制单元格时的格式(R$ 1.000,50)。有歧义
的格式,如 1,000.50 或 100 000,会报错,而不会被转换成其他
数字。--version 会显示已安装的版本。
对于将该库集成到系统中的用户,同样的解析功能和巴西格式的输出也已公开:
from decimal import Decimal
from simples_nacional import ler_numero, para_decimal, porcentagem, reais
ler_numero("360.000") # Decimal('360000'); ambíguo: ValueError
para_decimal("1000.50", "receita") # Decimal('1000.50'); float: TypeError
para_decimal("360.000", "receita") # Decimal('360.000'): ponto decimal, como no Decimal
porcentagem(Decimal("0.0565")) # '5,6500%'
reais(Decimal("4800000")) # '4.800.000,00'
在 API 中,文本使用小数点格式,与 Decimal 一样:"360.000" 表示
360。要使用巴西格式,请先调用 ler_numero。
Fator R 规划
from simples_nacional import planejar_fator_r
p = planejar_fator_r(120_000, 600_000, 50_000, ano=2026) # folha12, rbt12, receita_mes
p.fator # Decimal('0.2'): 20%, Anexo V
p.folha_minima # Decimal('168000.00') = 28% × 600.000
p.folha_que_falta # Decimal('48000.00')
p.das_anexo_v # Decimal('8925.00') = 50.000 × 17,85%
p.das_anexo_iii # Decimal('5280.00') = 50.000 × 10,56%
p.diferenca_das # Decimal('3645.00'): o III sai mais barato no mês
- 最低工资总额为 RBT12 的 28%,并向上舍入到分,以确保达到 28% 或以上(LC 123,第 18 条第 5º-J 和第 5º-M 款);工资总额按 第 24 款定义,包括业主薪酬和相关费用。
- 差别仅体现在 DAS 上。 额外的业主薪酬需要缴纳合伙人的社保 费用,也可能需要缴纳个人所得税,具体取决于个人情况:这些都未计入。
- Fator R 按过去 12 个月的工资总额计算:不足部分可以逐步补足,也 可以一次补足,库不会替用户作出选择。
- 在第 6 档,Anexo V 可能比 III 更便宜(差额为负)。
- 在命令行中,
--anexo fator-r --folha12 ...会显示相同的 规划结果,但第 24 条对应的月份除外(--receita-ano)。
按税种拆分 DAS
from simples_nacional import aliquotas_por_tributo, parcelas_das
parcelas_das("III", 3_000_000, 100_000, ano=2026)
# {'IRPJ': 711.08, 'CSLL': 621.31, 'COFINS': 2277.36, 'PIS': 493.74,
# 'CPP': 7708.51, 'ISS': 5000.00} (Decimal, em reais; soma 16.812,00)
parcelas_das("I", 1_000_000, 80_000, ano=2027)
# {'IRPJ': 371.80, 'CSLL': 236.60, 'CBS': 1036.31, 'CPP': 2839.20,
# 'ICMS': 2264.60, 'IBS': 11.49} (soma 6.760,00: efetiva 8,45%)
aliquotas_por_tributo("I", 1_000_000, ano=2027)["IRPJ"] # 8,45% × 5,50% = 0,46475%
parcelas_das会以分为单位给出当月 DAS 中各税种的金额;各项之和 等于valor_devido。每项金额先截断到分,再将剩余部分分配给舍弃 小数部分较大的项目(这是库采用的约定:法律未规定舍入方式)。aliquotas_por_tributo会给出各税种占收入的比例,不进行舍入; 各比例之和等于实际税率。- 2018 至 2026 年:LC 123,Anexos I 至 V,依据 LC 155/2016 的文本。 2027 和 2028 年、2029 年、2030 年、2031 年、2032 年以及 2033 年 起:LC 214/2025(Anexos XVIII 至 XXII)按各期间分别采用一张表, 包含 CBS 和 IBS;IBS 会逐步取代 ICMS 和 ISS,2033 年起仅有 IBS。
- Anexos III 和 IV 的第 5 档:ISS 按附注(*)规定的上限计算(截至 2028 年为 5%;2029 至 2032 年依次为 4.5%、4%、3.5% 和 3%), 差额按附注中的比例分配给其他税种。LC 214 的其中三条附注的比例 总和为 100.01% 或 99.99%(IV 的 2029 年和 2031 年,以及 III 的 2030 年):按这些比例进行归一化分配,使总额与 DAS 一致。
- 第 6 档(超过次级上限):仅包括联邦税和 CBS;ICMS、ISS 和 IBS
在 DAS 之外缴纳。年度收入超过次级上限的月份,以及第 5 档的 ICMS
或 ISS(
icms_iss_no_das),不在此处拆分。 - 这是估算结果:不能替代 PGDAS-D 或会计师的意见。
CNAE → 附件
from simples_nacional.cnae import enquadrar
enquadrar("6920-6/01", ano=2026).anexo # 'III': contabilidade, § 5º-B, XIV
enquadrar("1091-1/02", ano=2026).anexo # 'II': indústria até 2026
enquadrar("1091-1/02", ano=2027).anexo # 'I': indústria de 2027 em diante
enquadrar("8299-7/04", ano=2026).situacao # 'impeditiva': leiloeiro, Anexo VI
e = enquadrar("7112-0/00", ano=2026, folha12=300_000, rbt12=1_000_000)
e.situacao, e.fator_r, e.anexo # ('fator_r', Decimal('0.3'), 'III')
python -m simples_nacional.cnae 6920-6/01 1091102 --ano 2027
- 情况分为五种:
impeditiva(Res. CGSN 140 的附件 VI:若该项出现在 CNPJ 中,则不能选择 Simples)、ambígua(附件 VII:该子类的部分活动会造成限制,部分不会)、anexo、fator_r(附件 III 或 V;提供folha12和rbt12后即可确定附件)以及sem_classificacao。 - 没有官方的 CNAE → 附件对照表。 附件 VI 和 VII 的清单是官方清单;将各子类对应到附件,是本库根据 LC 123 第 18 条作出的解读,具体依据见
fundamento中的段落。若法律未能毫无疑义地描述该活动,则结果为sem_classificacao,绝不猜测。 - 从 2027 年起,工业归入附件 I,附件 II 仅适用于维持征收 IPI 的产品,即马瑙斯自由贸易区的产品(LC 123,第 18 条第 4 款第 II 项和第 5 款,依据 LC 214/2025 的修订文本):备注会提示这一点。
- 1,332 个子类的名称均来自 IBGE 清单(CNAE 2.3);不存在的代码会报
ValueError。
MCP 服务
与 Claude 和其他助手调用的 MCP 服务使用相同的账号信息 (MCP,Model Context Protocol)。 它在你的电脑上通过标准输入和输出运行,只使用标准库; 没有任何数据会离开你的电脑。提供三种连接方式,从最简单到最手动:
1. Claude Desktop,无需终端。 下载
最新 Release
中的 simples-nacional-br-<versão>.mcpb 文件,
并在 Claude Desktop 中打开,它会将其安装为扩展。电脑上需要安装
Python 3.9 或更高版本。
官方 MCP 服务目录
中的服务名称为 io.github.peterwkdev-creator/simples-nacional-br,包含此
软件包和 PyPI 软件包。
2. 使用 uv,无需预先安装。 在 Claude Code 中:
claude mcp add --transport stdio simples-nacional -- uvx simples-nacional-br
在 Claude Desktop 中,编辑 claude_desktop_config.json:
{
"mcpServers": {
"simples-nacional": {
"command": "uvx",
"args": ["simples-nacional-br"]
}
}
}
3. 使用 pip install simples-nacional-br 安装后。 在 Claude Code 中:
claude mcp add --transport stdio simples-nacional -- python -m simples_nacional.mcp
在 Claude Desktop 中,使用上方相同的 JSON,但将 "command": "python" 和
"args": ["-m", "simples_nacional.mcp"] 设为参数。python 必须是安装了该库的 Python;
如果应用程序找不到它,请填写完整路径,可通过
python -c "import sys; print(sys.executable)" 查看。
五个工具,全部仅用于计算(不会在工具之外读取或写入任何内容):
| 工具 | 参数 | 返回值 |
|---|---|---|
calcular_das | anexo、rbt12、receita_mes、ano;icms_iss_no_das | 档位、有效税率、当月金额和警告 |
calcular_das_inicio_atividade | anexo、receitas、ano;mes_inicio | 返回相同内容,适用于经营时间未满 12 个月的企业:按月均值计算的 RBT12,以及开业年度限额警告 |
repartir_das | anexo、rbt12、receita_mes、ano | 当月按税种划分的金额及各税种的税率 |
planejar_fator_r | folha12、rbt12、receita_mes、ano;icms_iss_no_das | Fator R、达到 28% 所需的工资总额,以及附录 V 和 III 下的当月金额 |
enquadrar_cnae | cnae、ano;folha12、rbt12 | 子类别状态、附录及依据 |
- 所有工具都必须提供
ano,原因与 API 相同:它表示申报月份所属年份,而非当前年份。分号后的参数为可选参数。 - 金额以雷亚尔计,可使用 JSON 数字或巴西格式的文本
(
"4.500.000,00");计算使用Decimal,不会经过float。 receitas包含从开始经营的第 1 个月到申报月份(最后一个月)每个月的收入;mes_inicio是开始经营的日历月份。- 响应以文本和 JSON(
structuredContent)返回,供助手读取;JSON 中的数值以文本表示("39750.00"),并包含估算提示。每个工具的outputSchema都逐字段描述该 JSON,测试会根据它检查完整响应。输入错误或 RBT12 超出限额时,会返回工具错误,并附上库提供的消息。 - 协议:在同一进程中支持带
initialize的形式(修订版 2025-06-18 和 2025-11-25),以及无状态形式,通过server/discover(2026-07-28)提供。
来源与限制
| 来源(LC 123/2006,经 LC 155/2016 修订) | |
|---|---|
| 附件 I 至 V,每个附件分六档:上限、名义税率、扣除额 | 附件 I 至 V |
| 有效税率 | 第 18 条第 1-A 款 |
| 当月应缴金额:当月收入 × 有效税率 | 第 18 条第 3 款 |
Fator R:12 个月工资总额 ÷ RBT12;达到 28% 或以上 → 附件 III,否则为附件 V。规划(planejar_fator_r):工资总额为 RBT12 的 28%,按分向上取整,并计算两个附件下的当月金额 | 第 18 条第 5-J、5-K、5-M 款及第 24 款 |
| R$ 4,8 milhões 上限:解释错误,不输出数字 | 第 3 条第 II 款 |
| R$ 3,6 milhões 的次级上限:提示该数值仅指联邦部分,以及 ICMS 和 ISS(自 2027 年起还包括 IBS)会退出 DAS,或根据年度累计收入继续留在 DAS 中 | 第 13-A 条;Res. CGSN 140/2018 第 21 条第 III 款 b 项和第 24 条;LC 214/2025 第 517 和 518 条 |
RBT12 超过 R$ 3,6 milhões 且当年收入未超过次级上限,应请求启用(icms_iss_no_das=True):第 5 档有效税率 × 该档分配比例,再加上仅适用于联邦税的第 6 档。2026 年以前,ICMS 或 ISS(I 33,50%,II 32,00%,III 33,50%,IV 40,00%,V 23,50%);2027 至 2032 年,按各期间对应的表格计算 ICMS 或 ISS 和 IBS;2033 年起,仅包括 IBS | Res. CGSN 140/2018 第 21 条第 III 款 b 项和第 IV 款(经 Res. CGSN 190/2026 修订);LC 123 附件 I 至 V 及 LC 214 附件 XVIII 至 XXII 的分配比例 |
2026 年以前,当年收入超过次级上限的月份(valor_devido_acima_do_sublimite):上限以内部分按含 ICMS 或 ISS 的有效税率计算;超出部分按 RBT12 对应档计算联邦税,并按 R$ 3,6 milhões 对应的第 5 档计算 ICMS 或 ISS;超过 R$ 4,8 milhões 的部分,按 R$ 4,8 milhões 对应的第 6 档计算联邦税,并加上相同的 ICMS 或 ISS。提示禁止适用及退出何时生效(超额超过 20% 时从次月起生效,否则从次年起生效) | Res. CGSN 140/2018 第 12 和 24 条;LC 123 第 3 条第 9 和 9-A 款及第 20 条第 1 和 1-A 款 |
| 开始经营,按月计算:2026 年以前,第 1 个月按当月收入 × 12 计算;第 2 至 12 个月按此前各月的平均收入 × 12 计算;自 2027 年起,第 1 和第 2 个月适用第 1 档,第 3 至 13 个月按截至前一月之前各月的平均收入 × 12 计算 | 第 18 条第 2 款;Res. CGSN 140/2018 第 22 条及 Res. CGSN 190/2026 |
| 开始经营的年份:R$ 400.000,00 上限和 R$ 300.000,00 次级上限,均乘以从开始经营到 12 月的月份数(不足一个月按一个月计算);提示超额超过 20% 时从开始经营时起退出,否则从次年起退出 | 第 3 条第 2 款及第 10 至 13 款;第 31 条第 III 款;Res. CGSN 140/2018 第 3 条和第 9 条第 2 款 |
| 适用年度税率表:2027 和 2028 年,第 6 档名义税率降低 0,1 个百分点;自 2029 年起恢复现行税率 | LC 214/2025 第 519 条及附件 XVIII 至 XXII |
按税种分配(parcelas_das、aliquotas_por_tributo):有效税率 × 对应档位百分比;在附件 III 和 IV 的第 5 档中,ISS 按附件注释(*)规定的上限计算 | LC 123 附件 I 至 V(经 LC 155/2016 修订);LC 214/2025 附件 XVIII 至 XXII |
CNAE → 附件(simples_nacional.cnae):受限制或存在歧义的子类;其他子类按经营活动确定附件,并在由 Fator R 决定时据此选择;2026 年以前,工业适用附件 II;自 2027 年起适用附件 I | Res. CGSN 140/2018 第 8 条及附件 VI(经 Res. CGSN 143/2018 修订)和附件 VII(经 Res. CGSN 156/2020 修订);LC 123 第 18 条第 4 款及第 5 至 5-M 款;LC 214/2025 第 517 条 |
| 每个表格的数值均于 09/10/2026 从众议院网站读取 | |
| (LC 155/2016,更新文本); | |
来源列在 simples_nacional/tabelas.py 中对应表格旁边。2027 年和 2028 年的表格于同日从 | |
| LC 214/2025 更新文本读取; | |
| 2027 年起第 5 档的分配数据则来自 | |
| Planalto 汇编文本, | |
| 于 09/10/2026 保存,并于 10/10/2026 核对。各税种的分配数据从众议院的相同页面读取(2018 至 2026 年以及 2029 年起的数据于 10/10/2026 读取;2027 年和 2028 年的数据于 09/10/2026 读取);各表格的来源列在 | |
simples_nacional/tabelas_reparticao.py 中。 |
开业初期的规则于 09/10/2026 从税务局规范门户读取: Res. CGSN 140/2018 和 Res. CGSN 190/2026。 开业初期的平均值为零(尚无任何销售)时,适用第 1 档税率:RBT12 为零时公式无法定义,因此这是本库采用的约定。
在年度收入超过次级限额的月份,对于附件 III 和 IV,RBT12 所在档位的联邦部分等于实际税率减去最高按 5% 计算的 ISS:超过 5% 的差额由联邦税收部门收取(Res. CGSN 140,第 21 条第 III 款 a 项)。这是本库的解读;在 360 万雷亚尔处按第 5 档计算的 ISS 全额计入,因为该处的上限只改变分配方式,不改变总额。
从 2027 年起,当月金额为全额 DAS,已包含 CBS 和 IBS 的份额。选择按常规制度缴纳这两种税的纳税人(LC 123,第 13 条第 9 款)需在其他渠道缴纳,因此 DAS 金额会更低:此处未实现该计算。
不在范围内的内容:州级次级限额;超过次级限额的年份晚于开业年份的情况(第 3 条第 11 至 15 款);具有单独限额的出口收入(第 3 条第 14 款);从 2027 年起年度收入超过次级限额的月份(Res. CGSN 140,第 24 条,涉及 IBS:会报错),以及其中开业年份的情况(第 1 款)和单独计算出口收入的情况(第 8 款);在选择该制度年份的前一年成立的企业(Res. CGSN 140,第 22 条第 4 款);以及 MEI。
各文件夹的内容
simples_nacional/:本库。tabelas.py和tabelas_reparticao.py包含法律规定的数值,各自附有来源;calculo.py包含计算;reparticao.py包含各税种的分配;planejamento.py用于 Fator R 规划;cnae.py用于 CNAE → 附件的归类,数据位于cnae_dados.py,IBGE 名称位于cnae_subclasses.tsv;formato.py用于读取和写入巴西格式的数字;__main__.py提供命令行;mcp.py是 MCP 服务。tests/:测试,包括运行本 README 中示例的测试。vitrine/:“在浏览器中试用”页面。每次 push 更改本库、页面或测试时,GitHub Actions 都会构建并发布该页面 (.github/workflows/pages.yml)。mcpb/:MCP 服务的 MCPB 包及目录中的server.json。每次发布新版本时,GitHub Actions 都会构建该包、将其附加到 Release 并发布到目录 (.github/workflows/catalogo-mcp.yml)。.github/workflows/pypi.yml:每次发布新版本时,通过可信发布(不存储令牌)发布到 PyPI;发布前会运行已安装的包(.github/conferir-instalado.sh,每次 push 时也会运行)。docs/:本 README 开头的 GIF。CHANGELOG.md:各版本的变更内容。
兼容性
版本号遵循语义化版本。
simples_nacional.__all__ 和 simples_nacional.cnae.__all__ 中的内容,
只有在大版本(2.0)中才会发生不兼容变更。新函数、常量或
参数会在次版本(1.1)中发布;修复则会在修订版本(1.0.1)中发布。因法律或新决议而变更的表格值会在次版本中发布,并在 CHANGELOG.md 中注明来源和日期;CNAE 子类的附录也遵循同样的规则,这是从库中读取的内容。在 MCP 服务中,每个工具的名称、参数以及 structuredContent 的键也遵循同样的规则。以下划线 _ 开头的名称以及警告和响应文本不在承诺范围内。
办公室版本
本库免费,并将继续免费,采用 MIT 许可证。面向会计事务所的完整版本正在筹备中,将提供更多功能:2027 年起的混合税制(IBS 和 CBS 不纳入 DAS)、Simples 与 Presumido 和 Real 税制的比较,以及客户组合管理。目前还没有定价或发布日期。要加入候补名单,请在 issue #1 中点个 👍。
贡献
发现某个值与 PGDAS-D 或你的计算结果不同,或者遇到了尚未覆盖的边界情况?请通过“值与预期不符”模板创建 issue,并使用虚构数字。要提交代码,请参阅 CONTRIBUTING.md;讨论遵循行为准则。 安全漏洞请勿通过 issue 报告:请参阅 SECURITY.md,其中说明了如何私下报告。
其他项目
| 项目 | 用途 |
|---|---|
| numeros-publicos · 网站 | 巴西各市的开放数据(IBGE、Tesouro Nacional、INEP),经来源核验,每个市对应一个页面 |
| linguagem-simples-br · 网站 | 《15.263/2025 号法律》(简明语言)开放式核查工具:根据第 5 条核查文本 |
| claude-context-cost · 网站 | Claude Code 会话上下文中每个来源(CLAUDE.md、规则、技能、记忆)的占用量 |
| vra-anac | 根据 ANAC 的 VRA 数据统计巴西国内航班准点率 |
| tts-ptbr | 使用开放模型(Kokoro 和 Piper)合成葡萄牙语语音,并通过 Whisper 测量 |
| carrossel-terminal | 终端风格的 Instagram 轮播内容:Markdown 转为 PNG,发布前经过核验,帖子再转为 Reel |
| ia-testada | @peterwk.dev 帖子背后的测量数据,以及脚本和复现方法 |
| numerasheets-site · 网站 | NumeraSheets 商店展示页:表格模板和免费计算器 |
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。