mcpField
S
simples-nacional-br

simples-nacional-br

ローカル
peterwkdev-creator.github.io金融データ16 日前に更新

simples-nacional-br について

simples-nacional-brは、ブラジルのSimples Nacional税額を見積もるPythonライブラリとCLIです。企業や財務ソフトの開発者向けに、年度別の法定表を使った実効税率、月次DAS、Fator R、税額配分、CNAE分類を提供し、MCPサーバーも備えています。

主な機能

  1. 01税率区分別の実効税率と月額税額
  2. 02Fator Rと給与額の計画
  3. 03DASの税目別内訳
  4. 04CNAEから適用附属表を判定
  5. 05Decimalによる年度別ルールの計算

活用シーン

  1. 01企業の月次DASを見積もる
  2. 02Fator Rによる附属表III・Vの税額比較
  3. 03CNAEに適用される附属表の確認
  4. 04アプリやエージェントから税額計算を呼び出す

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

testes PyPI Python ライセンス:MIT

Simples Nacionalの実効税率、当月の納税額、Fator Rを、Lei Complementar 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)で、pushのたびにテストしています。

インストールすると、4つのコマンドが使えるようになります。

コマンド用途
simples-nacional当月のDAS:実効税率、納税額、警告
simples-nacional-cnae活動(CNAE)の付属書と、その法的根拠
simples-nacional-mcpClaudeなどのアシスタント向けMCPサーバー(下記「MCP サーバー」を参照)
simples-nacional-brパッケージ名を使った同じMCPサーバー(uvx simples-nacional-brで実行)

最初の計算例:直近12か月の売上(RBT12)がR$ 600 mil、当月の売上がR$ 50 milのAnexo IIIの企業です。

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は計算対象月の暦年であり、今日の年ではありません。2027年1月に計算する2026年12月分のDASには、2026年の税率表を使用します。値にはDecimal、int、strを使用できます。floatは端数計算に誤差が生じるため受け付けません。R$ 4,8 milhõesを超えるRBT12を指定すると、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などがあります。全項目と各ルールの法的根拠は、以下の「出典と制限」をご覧ください。

テスト方法

  • 各附属書の各段階につき1ケース(合計30ケース)。テストには手計算を記載し、その行の数値から再計算します。
  • 各段階の上限値はその段階に含まれます(附属書には「以下」と記載されています)。1センターボを超えると次の段階に上がります。
  • Fator Rは27,99%、28%、28,01%でテストします。
  • 2027年と2028年の5つの附属書の第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年の5つの名目税率のいずれか、配分率85個のいずれか、年の境界または事業開始時のルールのいずれかを1つずつ変更すると、少なくとも1つのテストが失敗します。
  • この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 で指定します。出力には実効税率の2つの内訳が表示されます。

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(ピリオドの後に3桁が続く場合は千の位区切り)です。先頭に 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のみです。 役員報酬を増やすと、パートナーの社会保障拠出金を支払うことになり、個人によってはIRPFも発生します。これらは控除されていません。
  • Fator R では過去12か月の給与額が考慮されます。不足分を徐々に補うか、一度に補うかは選択できますが、ライブラリはその選択を行いません。
  • 6番目の区分では、Anexo VのほうがAnexo 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の注記のうち3つは合計が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
  • 状況は次の5つのいずれかです。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 (Model Context Protocol)サーバーです。お使いのコンピューター上で、標準入出力を通じて動作し、標準ライブラリのみを使用します。数値が外部に送信されることはありません。最も簡単な方法から手動の方法まで、接続方法は3つあります。

1. Claude Desktop、ターミナル不要。 最新のリリース からファイル 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)" で確認できます。

ツールは5つあり、すべて計算のみを行います(ツールの外部にあるデータの読み取りや書き込みは行いません)。

ツール引数戻り値
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%に達する給与額、Anexos VおよびIIIでの当月の金額
enquadrar_cnaecnae、ano;folha12、rbt12サブクラスの状況、付属表、根拠
  • anoはAPIと同じ理由ですべてのツールで必須です。現在の年ではなく、申告対象月の年を指定します。セミコロンの後ろにある引数は省略可能です。
  • 金額はレアル単位で、JSONの数値またはブラジル形式の文字列("4.500.000,00")で指定します。計算にはDecimalを使用し、floatは経由しません。
  • receitasには、事業開始月から申告対象月(最後の月)までの各月の収入を指定します。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:各6段階。上限額、名目税率、控除額付属書I~V
実効税率art. 18, § 1º-A
当月の納付額:当月の売上高 × 実効税率art. 18, § 3º
Fator R:12か月間の給与額 ÷ RBT12。28%以上なら付属書III、未満なら付属書V。計画(planejar_fator_r):RBT12の28%に当たる給与額を、1セント単位で切り上げ、両方の付属書における当月の納付額を算出art. 18, §§ 5º-J, 5º-K, 5º-M e 24
上限額4,800,000レアル:数値ではなく、理由を説明するエラーart. 3º, II
小額上限3,600,000レアル:この金額は連邦分のみであり、ICMSとISS(2027年以降はIBSも)は、年間累計売上高に応じてDASから除外されるか、DASに含まれることを知らせる警告art. 13-A; Res. CGSN 140/2018, arts. 21, III, b, e 24; LC 214/2025, arts. 517 e 518
RBT12が3,600,000レアルを超え、年間売上高が小額上限内の場合に、申請に応じて(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, art. 21, III, b, e IV(Res. CGSN 190/2026による改正後);LC 123の付属書I~VおよびLC 214の付属書XVIII~XXIIに定める配分
2026年までに年間売上高が小額上限を超えた月(valor_devido_acima_do_sublimite):上限内の部分にはICMSまたはISSを含む実効税率を適用し、超過分にはRBT12に応じた段階の連邦税と、3,600,000レアルにおける第5段階のICMSまたはISSを適用します。4,800,000レアルを超える分には、4,800,000レアルにおける第6段階の連邦税と、同じICMSまたはISSを適用します。制限および除外の適用時期(超過額が20%を超える場合は翌月、それ以外は翌年)を通知しますRes. CGSN 140/2018, arts. 12 e 24; LC 123, art. 3º, §§ 9º e 9º-A, e art. 20, §§ 1º e 1º-A
事業開始時の月ごとの計算:2026年までは、初月は当月の売上高 × 12、第2月から第12月まではそれ以前の月の平均 × 12。2027年以降は、第1月と第2月は第1段階、第3月から第13月までは前月より前の月の平均 × 12art. 18, § 2º; Res. CGSN 140/2018, art. 22, e Res. CGSN 190/2026
事業開始年:開始月から12月までの月数(端数月も1か月として計算)に400,000.00レアルの上限額と300,000.00レアルの小額上限を乗じます。超過額が20%を超える場合は開始時点から、それ以外は翌年から除外されることを通知しますart. 3º, §§ 2º e 10 a 13; art. 31, III; Res. CGSN 140/2018, arts. 3º e 9º, § 2º
課税年度の税率表:2027年と2028年は第6段階の名目税率が0.1ポイント低くなり、2029年以降は現行の税率に戻りますLC 214/2025, art. 519 e Anexos XVIII a XXII
税目ごとの配分(parcelas_das、aliquotas_por_tributo):実効税率 × 各段階の割合。付属書IIIおよびIVの第5段階では、付属書の注記(*)に定める上限額のISSLC 123, Anexos I a V(LC 155/2016による改正後);LC 214/2025, Anexos XVIII a XXII
CNAE → 付属書(simples_nacional.cnae):対象外の小分類と、該当先が複数ある小分類を識別します。それ以外は事業活動に基づいて付属書を判定し、Fator Rで判定が分かれる場合はそれを考慮します。製造業は2026年までは付属書II、2027年以降は付属書IRes. CGSN 140/2018, art. 8º e Anexos VI(Res. CGSN 143/2018による改正後)およびVII(Res. CGSN 156/2020による改正後);LC 123, art. 18, §§ 4º e 5º a 5º-M; LC 214/2025, art. 517
各表の値は、2026/10/09に下院のウェブサイトで確認しました
(LC 155/2016、更新済みテキスト)。
出典はsimples_nacional/tabelas.pyの各表の横に記載しています。2027年と2028年の表は、同日に
LC 214/2025の更新済みテキストで確認しました。
2027年以降の第5区分の配分は、
Planaltの統合版テキストで
2026/10/09に確認し、2026/10/10に照合しました。税目別の配分は同じ下院のページで確認しました(2018年から2026年、および2029年以降は2026/10/10、2027年と2028年は2026/10/09)。各表の出典はsimples_nacional/tabelas_reparticao.pyに記載しています。

事業開始時のルールは、2026/10/09に歳入庁の法令ポータルで確認しました。 Res. CGSN 140/2018 およびRes. CGSN 190/2026です。 事業開始時の平均がゼロ(まだ売上がない場合)は、第1区分の税率になります。RBT12がゼロの場合、計算式は定義できないため、これはライブラリ独自の取り決めです。

年間収入がサブリミットを超えた月は、付表IIIおよびIVでは、RBT12の区分における連邦税分は、実効税率から5%を上限とするISSを差し引いた額になります。5%を超える差額は連邦税分となります(Res. CGSN 140、art. 21, III, a)。これはライブラリでの解釈です。R$ 3,6 milhõesにおける第5区分のISSは全額計上されます。この上限が変えるのは配分のみで、合計額ではないためです。

2027年以降、月額はCBSとIBSの内訳を含むDAS全額です。この2つの税を通常制度で納付することを選択した場合(LC 123, art. 13, § 9º)、これらは別途納付され、DASは少なくなります。この計算は対象外です。

対象外:州のサブリミット、事業開始年の翌年以降にサブリミットを超過する年(art. 3º, §§ 11 a 15)、独自の上限がある輸出収入(art. 3º, § 14)、2027年以降に年間収入がサブリミットを超える月(Res. CGSN 140, art. 24。IBSによりエラーになります)、その場合の事業開始年(§ 1º)と個別の輸出(§ 8º)、選択年の前年に設立された企業(Res. CGSN 140, art. 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/:「ブラウザーで試す」ページです。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。こちらはプッシュごとにも実行されます)。
  • 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 と Lucro Presumido および Lucro Real の比較、顧客ポートフォリオに対応します。価格と提供日は未定です。ウェイティングリストに登録するには、issue #1に 👍 でリアクションしてください。

貢献

PGDAS-D やご自身の計算結果と異なる値、または未対応のエッジケースを見つけましたか?架空の数値を使い、「期待した値と異なる」というテンプレートからissue を作成してください。コードを送る場合は、CONTRIBUTING.mdをご覧ください。やり取りには行動規範が適用されます。 セキュリティ上の問題は issue に投稿しないでください。非公開での報告方法についてはSECURITY.mdをご覧ください。

その他のプロジェクト

プロジェクト用途
numeros-publicos · サイトブラジル各自治体のオープンデータ(IBGE、Tesouro Nacional、INEP)。出典と照合済みで、自治体ごとに1ページ
linguagem-simples-br · サイトLei 15.263/2025(わかりやすい言葉)のオープン検証ツール。文章を第5条に照らして確認します
claude-context-cost · サイトClaude Code のセッションで、各ソース(CLAUDE.md、ルール、スキル、メモリー)がコンテキストに占めるコスト
vra-anacANAC の VRA によるブラジル国内線の定時運航状況
tts-ptbrオープンモデル(Kokoro と Piper)を使ったポルトガル語の合成音声。Whisper で評価
carrossel-terminalターミナル風の Instagram カルーセル。Markdown を PNG に変換し、公開前に確認してから投稿を Reel にします
ia-testada@peterwk.dev の投稿の根拠となる測定結果、スクリプト、および再現方法
numerasheets-site · サイトNumeraSheets ストアの紹介ページ:スプレッドシートのテンプレートと無料の計算ツール

ライセンス

MIT。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。