---
name: contractor_1099_filing
description: Run contractor 1099 filing without the January scramble: collect W-9 forms at onboarding, track payments against the filing threshold through the year, flag worker classification risks, handle backup withholding and TIN mismatches, and prepare the 1099-NEC and 1099-MISC filing packet with deadlines and penalty risks marked. Use when onboarding a contractor or vendor, tracking contractor payments, deciding if a 1099 is due, choosing between 1099-NEC and 1099-MISC, chasing a missing W-9, or preparing January information returns.
---

# Contractor 1099 Filing

## Purpose

January filing fails in the summer, not in January. A contractor paid all year with no W-9 on file, payments scattered across three systems, and a role that drifted from project work into set hours is a filing problem you cannot fix in the last week of January. This skill moves the work to where it belongs: the W-9 at onboarding, the payment total as each payment lands, the classification check when the role changes, and a filing packet that is mostly done by December.

It ships a tracker, not just advice. `scripts/tracker.py` totals reportable payments per contractor for a payment year, excludes card and platform payments, applies the threshold for that year, sorts each payee into 1099-NEC, 1099-MISC, exempt, or blocked, and flags missing W-9 forms, TIN problems, and classification risks. The tracker flags and sorts. A human, with the business tax preparer where classification or a filing position is close, makes the final calls.

This is a process skill for United States federal filing, with state duties flagged as a check. It is not tax advice for a specific payer. Hand a disputed classification, a foreign payee, or a penalty notice to the tax preparer.

## Workflow

1. **Collect the W-9 before the first payment.** Follow `references/classification-and-w9.md`. Send the current Form W-9 at contract signing through a secure channel, hold payment until a complete and signed form is on file, and check it the day it comes back: legal name matching the TIN, classification box and LLC letter, address, signature. Run IRS TIN Matching for that name and TIN pair and record the result in the vendor record. A foreign person does not complete a W-9: stop and use the W-8 route in the reference file. Keep the W-9 with the vendor record, never loose in an inbox, and keep it for at least four years.

2. **Set up one vendor record per payee.** Record the legal name from the W-9, the entity type, the classification facts at the start of the work, and every payment in the same record. One person paid through a bank account, a bill pay tool, and a check run is one payee with one yearly total. Duplicate vendor records are the most common reason a payee who crossed the threshold gets no form: each fragment sits under the line and the total never shows.

3. **Log each payment with method and category as it happens.** The tracker and the filing both turn on two fields people skip in the moment: how the payment was made and what it was for. Use categories services, rent, royalties, prizes, medical, other_income, and gross_proceeds_attorney. Mark card and third party platform payments for what they are: the settlement entity reports those on Form 1099-K, and you do not count them toward your NEC or MISC totals or report them again. Cash, check, ACH, wire, bank transfer, and Zelle type direct payments count.

4. **Run the tracker every quarter, and again at December close.** Build the ledger in the shape of `assets/example-ledger.json`, then run `python3 scripts/tracker.py ledger.json --year 2026`. The tracker applies 600 dollars for payment years through 2025 and 2,000 dollars for 2026, and flags its 2027 and later threshold as provisional until you pass the IRS figure for that year with `--threshold`. It returns exit code 1 while any blocker stands. Work the output in this order:
   - Blockers first: no W-9, an unsigned W-9, no TIN, or a TIN mismatch. Nothing files cleanly for that payee until the blocker clears or backup withholding is running.
   - Forms to file: the NEC and MISC list with amounts, checked against the payment register.
   - Warnings: near threshold totals, corporate exemption calls, unknown categories, and classification risk.
   See the worked review below for how a mixed list reads.

5. **Check classification flags when the role is set, and again when it changes.** Score each contractor on the three IRS categories in `references/classification-and-w9.md`: behavioral control, financial control, and type of relationship. The tracker scores the ten facts in the ledger and returns NONE_FLAGGED, LOW, REVIEW, or HIGH. A REVIEW or HIGH result, or a project role that has grown set hours, core work, or payer training, goes to a classification review before the next payment cycle. The contract label does not settle status, and neither does the tracker score. Both are prompts to look at the real relationship.

6. **Run backup withholding the moment a trigger hits.** If a payee has not furnished a correct TIN, withhold 24 percent of each reportable payment, remit it to the IRS, track it per payee in the ledger, and report the year total on Form 945 due January 31. The tracker files a form for a payee with any withholding even when the total is under the threshold, because that withholding has to be reported to the payee. Stop withholding only when a correct certified TIN is furnished and any IRS notice condition clears. Document the stop date.

7. **Build the filing packet in the fall, file it in January.** Work `assets/filing-packet-checklist.md` from October: TIN Matching done, W-9 chase closed, totals reconciled to the bank register to the cent, e-file route ready. Know your aggregate count early: at 10 or more information returns of all types combined, including W-2 forms, you must file electronically. File and furnish Form 1099-NEC by January 31, with the next business day rule when that date lands on a weekend or a legal holiday. Form 1099-MISC has later IRS dates and an earlier furnish date. All dates, the extension forms, and the correction and B notice steps are in `references/filing-rules.md`.

8. **Close the loop after filing.** File the e-file confirmations, any Form 1096 copies, the tracker output, and the final ledger together as the packet for that year. Open a corrections log the day you file. An error corrected within 30 days of the due date sits in the lowest penalty tier. When a CP2100 notice arrives, work it at once against the W-9 file: your copy error, the payee record, or backup withholding on future payments, in that order.

### Worked review: a mixed list for 2026 payments

The example ledger in `assets/example-ledger.json` holds five payees. Running it for 2026 gives three forms, two blockers, and a packet that is not ready, which is the right answer for that list:

- Jordan Lee, sole proprietor, was paid 2,500 dollars by ACH and check for services, plus 900 dollars by card. The card payment is excluded, the reportable total is 2,500 dollars, and the tracker returns one 1099-NEC. A January worker who added every payment together would have overstated the form by 900 dollars.
- Rivera Design LLC, taxed as an S corporation, was paid 5,200 dollars for services. The tracker returns no form and a warning that services paid to a corporation are generally exempt. The warning matters: the exemption is the filing position, written down, not a payee someone forgot.
- Sam Patel was paid 1,850 dollars, has no W-9 and no TIN on file, and scores HIGH on classification: the payer sets the schedule, provides training, directs the work, and the work is core and open ended. Two blockers and a classification review. In 2026 the total is also near the 2,000 dollar threshold, so one more payment triggers a filing for a payee you cannot yet file for correctly. Run the same ledger as a 2025 year and the tracker returns a 1099-NEC at the 600 dollar threshold, which shows why the payment year, not the filing year, picks the threshold.
- North Clinic Inc, a corporation paid 2,400 dollars for medical services, gets a 1099-MISC. Medical payments are an exception to the corporate exemption, and a tracker that treated every corporation as exempt would have missed it.
- Alex Kim was paid only 300 dollars, with 72 dollars of backup withholding taken. The tracker returns a 1099-NEC anyway. Withholding was taken, so the payee needs the form to claim the credit, whatever the total.

With five other information returns in the same year, the aggregate count in the example is eight, under the electronic filing line. Two more returns of any type would cross it. Count the aggregate in October, not on filing day.

## Output Contract

Deliver all of the following for each filing year:

- **Tracker output**: the JSON from `scripts/tracker.py` for the full year ledger, with the payment year, the threshold used and its source, the aggregate return count, and the e-file call.
- **Forms list**: per payee, the form to file (1099-NEC, 1099-MISC, or no form with the exemption or under threshold reason written out), the category, and the amount, reconciled to the payment register.
- **Blocker list cleared or carried**: every missing W-9, TIN gap, and mismatch, each with the chase date, the withholding status, and the name of the person who owns the fix.
- **Classification memo**: for every REVIEW or HIGH contractor, the facts in the three IRS categories, the review outcome, and who made the call.
- **Completed filing packet checklist**: a copy of `assets/filing-packet-checklist.md`, filled in, with filing confirmations and the corrections log filed beside it.
- **Withholding reconciliation** when any backup withholding was taken: per payee withheld totals matched to deposits and to the Form 945 draft.

## Operating Rules

1. **No W-9, no first payment.** The hold is the control. A contractor who will not furnish a tax ID gets backup withholding at 24 percent, not an exception, and the contract says so before work starts.
2. **The payment year picks the threshold.** Payments through 2025 use 600 dollars, payments in 2026 use 2,000 dollars, and later years use the inflation adjusted figure in that year IRS instructions. Never apply the new threshold to an old year, and never quote a threshold without the year and the source beside it.
3. **Count reportable payments only, and count them once.** Card and platform payments belong to the settlement entity 1099-K. Direct payments count. One payee, one record, one total, across every payment channel the business used.
4. **An exemption is a written position, not a skip.** Every payee at or over the threshold with no form gets a reason in the forms list: corporation, merchandise only, under a specific exception, or another stated basis. A silent gap reads as a missed filing.
5. **Classification follows the facts, and facts drift.** Rescore a contractor when hours, training, tools, benefits, or the core nature of the work change. A REVIEW or HIGH score pauses new work under contractor terms until a review settles it.
6. **Filing and furnishing are two duties.** A form filed with the IRS on time and furnished to the payee late has still failed one duty, and penalties under sections 6721 and 6722 can stack on the same form. Calendar both dates for every form type.
7. **Correct fast.** A correction inside 30 days of the due date costs a fraction of one left past August 1. The corrections log opens on filing day, not when the first error surfaces.
8. **Tax ID data gets sensitive handling.** W-9 forms and TINs live in access controlled storage, move through secure channels only, and never appear in a ledger, a spreadsheet shared by email, or this skill output. The tracker works from flags, tin_on_file and tin_match, never from the number itself.
9. **The tracker flags, people decide.** A clean tracker run does not prove a classification is right or a category is mapped correctly. Close calls on classification, category, corporate exceptions, and foreign payees go to the business tax preparer, and the decision goes in the packet.
