mcpField
S
simples-nacional-br

simples-nacional-br

本地服务
peterwkdev-creator.github.io金融数据16 天前更新

关于 simples-nacional-br

simples-nacional-br 是用于计算巴西 Simples Nacional 税额的 Python 库和命令行工具,面向企业与财务系统开发者。它按年度法律表格计算有效税率、月应缴额、Fator R 和税款分摊,并提供 CNAE 查询及 MCP 服务。

主要功能

  1. 01按税档计算有效税率和月税额
  2. 02计算 Fator R 及工资规划
  3. 03按税种拆分 DAS 金额
  4. 04根据 CNAE 查询适用附件
  5. 05支持不同年度规则和 Decimal 运算

适用场景

  1. 01估算企业本月 DAS
  2. 02比较 Fator R 对 III、V 附件税额的影响
  3. 03核对活动 CNAE 对应的附件
  4. 04在系统或 Agent 中调用税额计算

MCP 相关

提供 MCP 服务,供 Claude 等 MCP 客户端调用月税额、税款分摊、Fator R 和 CNAE 计算。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbsimples-nacional-br-1.7.0.mcpb
pypisimples-nacional-br1.7.0

工具

5

收录的工具列表 · 更新于 5 天前

参数类型必填说明
anointeger是核算月份的日历年(2026 年 12 月的 DAS 使用 2026 年)。
anexoenum是LC 123 的附表:I 为商业,II 为工业,III 至 V 为服务业。I | II | III | IV | V
rbt12number|string是核算月之前 12 个月的总收入,单位为雷亚尔(2027 年起,取截至前一个月的 12 个月)。
receita_mesnumber|string是核算月的总收入,单位为雷亚尔。
icms_iss_no_dasboolean否RBT12 超过 R$ 3,6 milhões 且当年收入仍在子限额内:按第 5 档合计 ICMS 或 ISS(以及 2027 年起的 IBS)。

详细介绍

simples-nacional-br

测试 PyPI Python 许可证:MIT

Simples Nacional 的实际税率、当月应缴金额和 Fator R,已逐档对照《123/2006 号补充法律》(经 LC 155/2016 修订)及 2027 年起适用的 LC 214/2025 官方税率表核验。纯 Python,仅依赖标准库,从头到尾使用 Decimal。

页面计算了 Anexo III 示例、同一月份通过 Fator R 计算的结果,以及处于经营第 3 个月的企业

在浏览器中试用: 此页面会在你的浏览器中运行经过测试的同一库(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-mcpMCP 服务,供 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_dasanexo、rbt12、receita_mes、ano;icms_iss_no_das档位、有效税率、当月金额和警告
calcular_das_inicio_atividadeanexo、receitas、ano;mes_inicio返回相同内容,适用于经营时间未满 12 个月的企业:按月均值计算的 RBT12,以及开业年度限额警告
repartir_dasanexo、rbt12、receita_mes、ano当月按税种划分的金额及各税种的税率
planejar_fator_rfolha12、rbt12、receita_mes、ano;icms_iss_no_dasFator R、达到 28% 所需的工资总额,以及附录 V 和 III 下的当月金额
enquadrar_cnaecnae、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 年起,仅包括 IBSRes. 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 年起适用附件 IRes. 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。