Skill: vendor-compliance-1099
Description
1099 vendor compliance pipeline for accounting firms. Pulls the full-year General Ledger from QBO, aggregates vendor payments by name, applies IRS $600 threshold, classifies 1099-NEC vs 1099-MISC, checks corporate exemptions, tracks W-9 and TIN status, filters credit card payments (1099-K handled by processor), calculates late-filing penalties, and produces a year-over-year CDC. Outputs an 8-tab Excel workbook.
Trigger phrases: "run 1099 compliance," "vendor 1099 check," "pull 1099 list," "who needs a 1099," "1099 vendor scan," "W-9 tracker," "1099-NEC list," "1099-MISC list"
NOT for: payroll W-2 compliance, 1042-S foreign withholding, 1099-K reconciliation (CC processor), or non-US entities.
Pipeline Location
CODEBLOCK0
Usage
CODEBLOCK1
Arguments:
| Flag | Required | Default | Notes |
|---|
| INLINECODE0 | ✅ | — | QBO client slug |
| INLINECODE1 |
✅ | — | Tax year (e.g. 2025) |
|
--sandbox | ❌ | false | Use QBO sandbox |
|
--skip-gl | ❌ | false | Skip GL pull (empty output — testing only) |
|
--out | ❌ | ~/Desktop | Output directory |
Output: 8-Tab Excel Workbook
| Tab | Contents |
|---|
| Vendor Summary | All vendors: total paid, ACH/check/wire vs CC split, form type, corp exempt flag, action required |
| 1099-NEC List |
Contractors/service vendors ≥$600 (reportable amount only), W-9 status, TIN status, action |
|
1099-MISC List | Rent, royalties, prizes ≥$600 with MISC box classification (Box 1/2/3/6/10) |
|
Exemptions | Corp-flagged vendors (LLC/Inc/Corp/Ltd) requiring manual entity-type verification before skipping 1099 |
|
W-9 Tracker | Per-vendor W-9 received/pending/missing status; persisted between runs; editable date/TIN fields |
|
Payment Methods | ACH/check/wire vs. credit card split per vendor; CC excluded from 1099 reportable amount |
|
Penalties Calc | IRC §6721/6722 penalty scenarios: on-time, 15/30/45/60/90 days late + today's actual exposure |
|
CDC Log | New vendors (not in prior year), dropped vendors, amount changes ≥10% or ≥$500 YoY |
Output filename: VendorCompliance_1099_{slug}_{year}.xlsx
Key IRS Rules Implemented
$600 Threshold
- - Applied to ACH/check/wire amounts only — credit card payments excluded (processor files 1099-K)
- Threshold is per-vendor, full calendar year aggregate
1099 Type Classification
| Form | When | Keyword triggers |
|---|
| 1099-NEC | Non-employee compensation: contractors, consultants, attorneys, sole proprietors | contractor, freelance, consultant, attorney, repair, cleaning, design, etc. |
| 1099-MISC |
Rent, royalties, prizes, medical payments | rent, royalty, prize, award, medical, healthcare |
Default is 1099-NEC — NEC is assumed for all service payments unless account/memo indicates MISC category.
Corporate Exemption
- - Vendor names matching
LLC|Inc|Corp|Ltd|Co.|Company|etc. → flagged as potentially exempt - Still appear in Exemptions tab for manual verification
- Exception — always file regardless of entity type:
- Attorneys (IRC §6045(f)) → 1099-NEC
- Medical providers → 1099-MISC Box 6
Payment Method Filter
- - Credit card keywords in memo/txn_type/split → classified as CC, excluded from reportable amount
- ACH/check/wire → included in reportable amount
- Unclassified payments → included (conservative — better to over-report)
W-9 & TIN Tracking
- - W-9 status persisted at INLINECODE7
- New vendors auto-default to
NO status - TIN status persisted at INLINECODE9
- Backup withholding: 24% applies if vendor fails to provide valid TIN
Filing Deadlines
| Form | Recipient Copy | IRS Paper | IRS e-File |
|---|
| 1099-NEC | January 31 | January 31 | January 31 |
| 1099-MISC (Box 7) |
January 31 | January 31 | January 31 |
| 1099-MISC (other boxes) | January 31 | February 28 | March 31 |
e-File required if filing 10+ information returns.
Penalty Rates (IRC §6721/6722 — 2024)
| Days Late | Per Form | Small Biz Annual Cap |
|---|
| ≤30 days | $60 | $232,500 |
| 31–60 days |
$120 | $664,500 |
| >60 days | $310 | $1,329,000 |
| Intentional disregard | $630 minimum | No cap |
Small business = avg annual gross receipts ≤$5M for 3 prior years.
Cache Files
| File | Purpose |
|---|
| INLINECODE10 | YoY snapshot for CDC (auto-saved each run) |
| INLINECODE11 |
Prior year snapshot for comparison |
|
.cache/vendor-compliance-1099/{slug}-w9.json | W-9 status (persisted, editable manually) |
|
.cache/vendor-compliance-1099/{slug}-tin.json | TIN status (persisted, editable manually) |
Updating W-9 status manually:
# Edit cache file directly to update W-9 status
cat .cache/vendor-compliance-1099/my-client-w9.json
# Modify "VendorName": "YES" | "NO" | "PENDING"
# Then re-run pipeline — status will be loaded automatically
Integration Requirements
- - QBO Client: Node.js QBO client (auth token must be set)
- Python packages: INLINECODE14
- GL access required: Pipeline reads full-year GL — ensure QBO auth has GL report access
- No write access to QBO — read-only integration
Decimal Math
All financial calculations use Python Decimal with ROUND_HALF_UP at 2 decimal places. No float arithmetic. Same pattern as tax-package-prep.py and pl-deep-analysis.py.
When NOT to Use This Skill
- - Payroll / W-2 compliance → separate payroll workflow
- 1099-K reconciliation → CC processor provides (not Sam's responsibility)
- Foreign vendor withholding → Form 1042-S, different rules
- State-level 1099 filing → varies by state, not covered here
- 1099-INT / 1099-DIV / 1099-B → investment/bank-issued, not vendor compliance
Workflow Checklist
Run this pipeline as part of year-end close:
- 1. November/December: Pre-screen — run pipeline to identify missing W-9s before year-end
- January (early): Final run — full year GL aggregation
- January 15: W-9 collection deadline (internal)
- January 25: Prepare and review filings
- January 31: File 1099-NEC (recipient + IRS)
- February 28 / March 31: File 1099-MISC (IRS paper/e-file)
技能:供应商合规-1099
描述
面向会计师事务所的1099供应商合规处理流程。从QBO提取全年总账,按名称汇总供应商付款,应用国税局600美元门槛,分类1099-NEC与1099-MISC,检查公司豁免资格,追踪W-9和TIN状态,过滤信用卡付款(1099-K由处理方处理),计算逾期申报罚款,并生成同比变化检测报告。输出包含8个工作表的Excel工作簿。
触发短语: 运行1099合规检查、供应商1099核查、提取1099清单、谁需要1099、1099供应商扫描、W-9追踪器、1099-NEC清单、1099-MISC清单
不适用于: 工资W-2合规、1042-S外国预扣税、1099-K对账(信用卡处理方)、或非美国实体。
流程位置
scripts/pipelines/vendor-compliance-1099.py
使用方法
bash
标准运行
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025
QBO沙箱
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --sandbox
自定义输出目录
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --out ~/Desktop/1099s
跳过总账提取(空供应商列表——仅用于测试)
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --skip-gl
参数:
| 标志 | 必填 | 默认值 | 说明 |
|---|
| --slug | ✅ | — | QBO客户标识 |
| --year |
✅ | — | 纳税年度(例如2025) |
| --sandbox | ❌ | false | 使用QBO沙箱 |
| --skip-gl | ❌ | false | 跳过总账提取(输出为空——仅用于测试) |
| --out | ❌ | ~/Desktop | 输出目录 |
输出:8个工作表Excel工作簿
| 工作表 | 内容 |
|---|
| 供应商汇总 | 所有供应商:付款总额、ACH/支票/电汇与信用卡拆分、表格类型、公司豁免标志、需采取行动 |
| 1099-NEC清单 |
承包商/服务供应商≥600美元(仅报告金额)、W-9状态、TIN状态、需采取行动 |
|
1099-MISC清单 | 租金、版税、奖金≥600美元,含MISC表格分类(第1/2/3/6/10栏) |
|
豁免项 | 标记为公司的供应商(LLC/Inc/Corp/Ltd),需手动核实实体类型后方可跳过1099 |
|
W-9追踪器 | 各供应商W-9已收/待收/缺失状态;在运行间持久保存;可编辑日期/TIN字段 |
|
付款方式 | 各供应商ACH/支票/电汇与信用卡拆分;信用卡从1099报告金额中排除 |
|
罚款计算 | IRC §6721/6722罚款情景:按时、逾期15/30/45/60/90天+当前实际风险敞口 |
|
同比变化检测日志 | 新增供应商(上一年度不存在)、消失供应商、金额同比变化≥10%或≥500美元 |
输出文件名: VendorCompliance1099{slug}_{year}.xlsx
已实施的关键国税局规则
600美元门槛
- - 仅适用于ACH/支票/电汇金额——信用卡付款排除(处理方申报1099-K)
- 门槛按供应商计算,为整个日历年度汇总
1099类型分类
| 表格 | 适用场景 | 关键词触发 |
|---|
| 1099-NEC | 非雇员报酬:承包商、顾问、律师、个体工商户 | 承包商、自由职业者、顾问、律师、维修、清洁、设计等 |
| 1099-MISC |
租金、版税、奖金、医疗付款 | 租金、版税、奖金、奖励、医疗、医疗保健 |
默认类型为1099-NEC——除非账户或备注表明属于MISC类别,否则所有服务付款均默认为NEC。
公司豁免
- - 供应商名称匹配LLC|Inc|Corp|Ltd|Co.|Company|等→标记为可能豁免
- 仍出现在豁免项工作表中供手动核实
- 例外——无论实体类型如何均需申报:
- 律师(IRC §6045(f))→1099-NEC
- 医疗服务提供者→1099-MISC第6栏
付款方式过滤
- - 备注/交易类型/拆分中的信用卡关键词→归类为信用卡,从报告金额中排除
- ACH/支票/电汇→计入报告金额
- 未分类付款→计入(保守做法——宁可多报)
W-9和TIN追踪
- - W-9状态持久保存在.cache/vendor-compliance-1099/{slug}-w9.json
- 新供应商自动默认状态为NO
- TIN状态持久保存在.cache/vendor-compliance-1099/{slug}-tin.json
- 备用预扣税: 若供应商未能提供有效TIN,适用24%预扣税率
申报截止日期
| 表格 | 收款人副本 | 国税局纸质 | 国税局电子申报 |
|---|
| 1099-NEC | 1月31日 | 1月31日 | 1月31日 |
| 1099-MISC(第7栏) |
1月31日 | 1月31日 | 1月31日 |
| 1099-MISC(其他栏) | 1月31日 | 2月28日 | 3月31日 |
需电子申报若申报10份及以上信息申报表。
罚款费率(IRC §6721/6722 — 2024年)
| 逾期天数 | 每份表格 | 小型企业年度上限 |
|---|
| ≤30天 | 60美元 | 232,500美元 |
| 31–60天 |
120美元 | 664,500美元 |
| >60天 | 310美元 | 1,329,000美元 |
| 故意忽视 | 最低630美元 | 无上限 |
小型企业=前三年年均总收入≤500万美元。
缓存文件
| 文件 | 用途 |
|---|
| .cache/vendor-compliance-1099/{slug}-{year}.json | 同比变化检测的年度快照(每次运行自动保存) |
| .cache/vendor-compliance-1099/{slug}-{year-1}.json |
上一年度快照用于比较 |
| .cache/vendor-compliance-1099/{slug}-w9.json | W-9状态(持久保存,可手动编辑) |
| .cache/vendor-compliance-1099/{slug}-tin.json | TIN状态(持久保存,可手动编辑) |
手动更新W-9状态:
bash
直接编辑缓存文件以更新W-9状态
cat .cache/vendor-compliance-1099/my-client-w9.json
修改 VendorName: YES | NO | PENDING
然后重新运行流程——状态将自动加载
集成要求
- - QBO客户端: Node.js QBO客户端(必须设置认证令牌)
- Python包: pip install openpyxl
- 需要总账访问权限: 流程读取全年总账——确保QBO认证具有总账报告访问权限
- 无QBO写入权限——只读集成
十进制计算
所有财务计算使用Python Decimal,采用ROUNDHALFUP保留2位小数。不使用浮点运算。与tax-package-prep.py和pl-deep-analysis.py相同模式。
何时不使用此技能
- - 工资/W-2合规→单独工资流程
- 1099-K对账→信用卡处理方提供(非Sam职责)
- 外国供应商预扣税→表格1042-S,规则不同
- 州级1099申报→各州不同,此处不涵盖
- 1099-INT / 1099-DIV / 1099-B→投资/银行出具,非供应商合规
工作流检查清单
作为年终结账的一部分运行此流程:
- 1. 11月/12月: 预筛选——运行流程以在年底前识别缺失的W-9
- 1月(早期): 最终运行——全年总账汇总
- 1月15日: W-9收集截止日期(内部