个体户做账报税包
给个体工商户 / 一人公司 / 个人独资用的本地账套。先建档案、记账、贴票,到期再收齐「拿到电子税务局要填的材料」。
本 Skill 不自动报税、不登录税务局、不算死税率、不查验发票真伪(除非用户自己提供了本地查验文件)。
不是:企业四流合规、报销发票整理、节税筹划。
红线(先读)
详细见 references/safety.md。
- 税率、减免、是否免税、是否达起征点:以用户从电子税务局抄下来的征收信息为准。不知道就问,不要编 1% 或 3%。
- 核定征收:不要按查账利润去算个税。
- 用户要隐匿收入、公私账户混用逃税、私户收款不入账:拒绝,说明风险,指向
references/safety.md。 - 覆盖已有
profile.json/ 结账文件 / 申报包前,必须先确认或要求脚本加--force。 - 回复里不要输出完整身份证号或完整银行账号;资料里有就打码。
默认路径与逃生口
- 默认账套:用户指定的文件夹。用户没指定时用
~/opc-books/<字号>/,并在动手前把完整路径念出来让用户确认。 - 逃生口:用户只要说「换账套 / 只要清单不要结账 / 只要试算」就停在对应步骤,不往下覆盖文件。
- 脚本:本 Skill 目录下
scripts/,用用户机器上的python3。先--help。全部非交互;缺参数就问用户,不要input()。
<账套>/
profile.json # 征收方式、增值税身份、申报周期、经营所在地、征收率(用户填)
journal.json # 流水
journal.csv # 给人看的同一份
invoices/进项|销项 # 贴上的票(只复制)
closes/ # 月结/季结快照
申报包_YYYYQn/ # 当期材料(月报则为 申报包_YYYYMM)
工作流
按顺序:建账 → 记一笔 → 贴票 → 月结/季结 → 出申报包。每步结束都打印写过的文件路径。
0. 建账(第一次)
先问清这四项,一项未知就停,不要猜:
| 字段 | 取值 | 来源 |
|---|---|---|
| 征收方式 | 核定 / 查账 | 电子税务局登记,不要猜 |
| 增值税身份 | 小规模 / 一般 | 同上 |
| 申报周期 | 月 / 季 | 小规模常见按季,仍以登记为准 |
| 经营所在地 | 省市区 | 经营管理所在地 |
| 征收率 | 用户粘贴或手填 | 未知则留空,请用户粘贴电子税务局征收信息 |
python3 scripts/ledger.py init --books <账套> \
--name <字号> --levy 核定|查账 --vat 小规模|一般 \
--cycle 月|季 --location <经营所在地> [--vat-rate <用户抄的征收率>]
覆盖已有档案必须 --force,先确认。科目表见 references/coa.md,不要擅自改成企业会计全套。
1. 记一笔
用户给日期、金额、类型、摘要、对方。类型只能是:收入 / 成本 / 费用 / 损失 / 往来 / 业主提款。
python3 scripts/ledger.py add --books <账套> \
--date YYYY-MM-DD --kind 收入 --amount 1234.00 \
--party 客户A --memo 网站改版 \
[--invoice 票文件 --invoice-side 销项]
规则:
- 收入 → 营业收入;进货 → 成本;房租/软件/交通 → 费用;坏账/报废 → 损失;未收/未付 → 往来;老板拿走 → 业主提款(提款不是费用)。
- 有票就复制进
invoices/,分录只记相对路径。不要声称已验真伪。 - 记完一句话回报:编号、日期、类型、金额,以及
journal.json/journal.csv路径。
1b. 认票入账(加深点)
先解析,再确认,不要一张扫描件直接当已入账。
python3 scripts/invoice_parse.py parse --file 票.xml
python3 scripts/invoice_parse.py ingest --books <账套> --dir <票文件夹>
# 核对 inbox/proposed_日期.json 后:
python3 scripts/invoice_parse.py ingest --books <账套> --dir <票文件夹> --commit
- 认:数电票 XML、用户填的 JSON、能抽出文字的 PDF。
- 不认或认不准:OFD、纯图片扫描件 → 标
needs_review,让用户补 XML/JSON。 - 用税号判断进项/销项:购买方税号=本账套税号 → 费用/进项;销售方税号=本账套 → 收入/销项。对不上就待定。
- 不联网查验真伪。
详见 references/form-a.md 之前先把票入对期间。
2. 贴票(可后补)
python3 scripts/ledger.py attach --books <账套> --id J0001 --invoice 票文件 --side 进项|销项
进项/销项只是附件方向,不是抵扣计算。一般核对申报表时用人看这些副本。
3. 查看 / 试算
python3 scripts/ledger.py list --books <账套> [--from YYYY-MM-DD] [--to YYYY-MM-DD]
python3 scripts/trial_balance.py --books <账套> [--period 2026Q3]
经营所得口径利润 = 收入 - 成本 - 费用 - 损失(不含业主提款、不含往来)。核定户仍可算这个数,但申报时不许用。
4. 月结 / 季结
申报日历见 references/calendar.md。期间格式:季 YYYYQn,月 YYYY-MM。
python3 scripts/ledger.py close --books <账套> --period 2026Q3
写出 closes/2026Q3.json 和 closes/2026Q3.md。已存在则拒绝,确认后加 --force。结账后仍可补记,回复里标明「已结账后续记」。
5. 出申报包
python3 scripts/filing_pack.py --books <账套> --period 2026Q3
生成 申报包_2026Q3/:清单.md、利润口径.md、分录摘要.csv、发票副本、pack.json。清单只写「登录哪里、带什么、填哪张表」,不填税额。
- 查账征收:清单放收入/成本/费用,指向经营所得 A 表(预缴)或 B 表(汇算)。
- 核定征收:写明「按核定定额/定率申报,不要用本账套利润填应纳税所得额」。
- 增值税/附加:当地电子税务局(不是自然人电子税务局);征收率以当期为准。
- 有合同才准备印花税材料;没有就不要虚构。
5b. A 表底稿
A 表是预缴。金额是本年度开始经营月至本期累计,不是只算当季。
python3 scripts/form_a_draft.py --books <账套> --period 2026Q3
写出 申报包_2026Q3/A表底稿.md 和 .json。只填收入总额、成本费用;税率、速算扣除数、应纳税额留空。核定户利润标成禁止填入应纳税所得额。
filing_pack.py 结束时会顺带跑一遍底稿。口径见 references/form-a.md。
示例账:examples/(虚构税号,不能当真申报)。
官方事实(编码用,不要加戏)
出处写在 references/calendar.md。只使用下列口径:
- 经营所得:月/季终了后 15 日内预缴,报《个人所得税经营所得纳税申报表(A表)》;次年 3 月 31 日前汇算,报 B 表;两处以上再报 C 表。渠道:自然人电子税务局 WEB https://etax.chinatax.gov.cn
- 查账征收填收入成本;核定征收不要假装能算查账利润。
- 增值税/附加税费:不要把 1% vs 3% 写成当前法律。写「以税务机关当期征收率为准」。小规模常见按季。清单包含增值税申报表、附加税;有合同则印花税。
- 若提到「个体户年应纳税所得额不超过 200 万元减半征收」,必须标注:政策优惠需自行核对该年度是否仍有效。
回复要求
- 每次操作结束给出账套路径和写过的文件完整路径。
- 提到税时加一句:税额以电子税务局当期数据为准。
- 用户要逃税/隐匿收入:拒绝 + 风险说明,不提供任何操作步骤。
- 不要替用户登录、不要要密码、不要保存 Cookie。
和套件其他 Skill
- 报价、验收、回款:
opc-quote-to-cash。回款入账时回到本 Skill 记一笔收入。 - 项目交付签收:
opc-delivery-pack。未验收不要把尾款记成收入。