面向会计事务所的1099供应商合规流程。从QBO提取全年总账数据,聚合供应商付款,应用IRS 600美元报税门槛并自动分类。
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.
text
scripts/pipelines/vendor-compliance-1099.py
bash
# Standard run
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025
# QBO sandbox
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --sandbox
# Custom output directory
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --out ~/Desktop/1099s
# Skip GL pull (empty vendor list — testing only)
python3 scripts/pipelines/vendor-compliance-1099.py --slug my-client --year 2025 --skip-gl
Arguments:
FlagRequiredDefaultNotes--slug✅—QBO client slug--year✅—Tax year (e.g. 2025)--sandbox❌falseUse QBO sandbox--skip-gl❌falseSkip GL pull (empty output — testing only)--out❌~/DesktopOutput directory
TabContentsVendor SummaryAll vendors: total paid, ACH/check/wire vs CC split, form type, corp exempt flag, action required1099-NEC ListContractors/service vendors ≥$600 (reportable amount only), W-9 status, TIN status, action1099-MISC ListRent, royalties, prizes ≥$600 with MISC box classification (Box 1/2/3/6/10)ExemptionsCorp-flagged vendors (LLC/Inc/Corp/Ltd) requiring manual entity-type verification before skipping 1099W-9 TrackerPer-vendor W-9 received/pending/missing status; persisted between runs; editable date/TIN fieldsPayment MethodsACH/check/wire vs. credit card split per vendor; CC excluded from 1099 reportable amountPenalties CalcIRC §6721/6722 penalty scenarios: on-time, 15/30/45/60/90 days late + today's actual exposureCDC LogNew vendors (not in prior year), dropped vendors, amount changes ≥10% or ≥$500 YoY
Output filename: VendorCompliance_1099_{slug}_{year}.xlsx
FormWhenKeyword triggers1099-NECNon-employee compensation: contractors, consultants, attorneys, sole proprietorscontractor, freelance, consultant, attorney, repair, cleaning, design, etc.1099-MISCRent, royalties, prizes, medical paymentsrent, royalty, prize, award, medical, healthcare
Default is 1099-NEC — NEC is assumed for all service payments unless account/memo indicates MISC category.
LLC|Inc|Corp|Ltd|Co.|Company|etc. → flagged as potentially exempt.cache/vendor-compliance-1099/{slug}-w9.jsonNO status.cache/vendor-compliance-1099/{slug}-tin.jsonFormRecipient CopyIRS PaperIRS e-File1099-NECJanuary 31January 31January 311099-MISC (Box 7)January 31January 31January 311099-MISC (other boxes)January 31February 28March 31
e-File required if filing 10+ information returns.
Days LatePer FormSmall Biz Annual Cap≤30 days$60$232,50031–60 days$120$664,500>60 days$310$1,329,000Intentional disregard$630 minimumNo cap
Small business = avg annual gross receipts ≤$5M for 3 prior years.
FilePurpose.cache/vendor-compliance-1099/{slug}-{year}.jsonYoY snapshot for CDC (auto-saved each run).cache/vendor-compliance-1099/{slug}-{year-1}.jsonPrior year snapshot for comparison.cache/vendor-compliance-1099/{slug}-w9.jsonW-9 status (persisted, editable manually).cache/vendor-compliance-1099/{slug}-tin.jsonTIN status (persisted, editable manually)
Updating W-9 status manually:
bash
# 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
pip install openpyxlAll 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.
Run this pipeline as part of year-end close: