Generated banner for Tax Season Organizer
Generated logo for Tax Season Organizer

Tax Season Organizer

AnthropicOfficialPublished by Anthropic

  • Skill
  • Content generator
  • Business and productivity
  • Apache-2.0
  • No issues found

From the author

Prepares tax-season materials for the owner's accountant, not tax advice. US federal tax; a non-US business gets its closed-books packet instead. Two modes: (1) quarterly estimated tax from YTD net income in the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); (2) year-end 1099 prep, scanning the ledger, PayPal, and Stripe for contractors paid over USD 600 into a 1099-NEC list with missing W-9 flags. Any tax request routes first to /tax-prep, which confirms the books are closed and reconciled before running this skill. Use this skill directly only when the owner says the period's books are already closed: "books are closed, now do the 1099s," "run the quarterly estimate off the closed numbers," or "just the contractor W-9 list."
— the description by Anthropic

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Tax Season Organizer assists business owners in preparing documentation for their accountants regarding US federal tax obligations. It operates in two primary modes: calculating quarterly estimated tax payments based on YTD net income from connected ledgers, and preparing year-end 1099-NEC lists by aggregating contractor payments from ledgers, PayPal, and Stripe. The skill explicitly states that it does not provide tax advice and requires that books be closed and reconciled before use. It produces structured outputs including assumptions, missing W-9 flags, and payment breakdowns to facilitate accountant review.

What it does

  • Calculates quarterly estimated federal income and self-employment tax based on annualized YTD net profit.
  • Aggregates contractor and vendor payments across multiple platforms to identify 1099-NEC filing candidates.
  • Flags payees missing W-9 information or EINs for follow-up.
  • Identifies payments near the USD 600 reporting threshold for accountant verification.
  • Generates structured tax preparation packets with explicit assumptions for accountant adjustment.
  • Provides non-US businesses with a closed-books packet instead of US-specific tax calculations.

When to use it

  • When the business owner needs to calculate quarterly estimated tax payments.
  • When preparing for year-end 1099-NEC filings for contractors and freelancers.
  • When the business books for the relevant period are already closed and reconciled.
  • When an accountant requires a structured summary of income, expenses, and contractor payments.

Advantages

  • Reduces manual data aggregation by pulling directly from connected ledgers and payment processors.
  • Provides clear visibility into missing W-9 documentation required for tax filing.
  • Standardizes the information provided to accountants, including necessary assumptions and disclaimers.
  • Helps identify potential 1099-NEC candidates by scanning multiple payment sources.

Usage examples

“books are closed, now do the 1099s”
The agent scans the ledger, PayPal, and Stripe for contractor payments, identifies those over USD 600, flags missing W-9s, and generates a 1099-NEC candidate list.
“run the quarterly estimate off the closed numbers”
The agent pulls YTD P&L data, calculates annualized net profit, estimates federal and self-employment tax, and provides a breakdown of the quarterly payment due.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/anthropics/tax-season-organizer/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip tax-season-organizer.zip -d .agents/skills

Documentation by Anthropic

Tax Season Organizer

Framing: This skill produces prep material for a CPA, not tax advice. Say so early and state every assumption explicitly so the accountant can adjust.

Quick start

Determine which mode the user needs, pull the relevant data, calculate or compile, and deliver a structured document the accountant can work from directly.

User: "what do I owe for estimated taxes this quarter?"
→ Pull YTD P&L from QuickBooks
→ Calculate estimated federal income tax + SE tax
→ Subtract payments already made this year
→ Show Q-specific amount due with due date and assumptions stated
→ Output: "Estimated Q2 payment due June 16: USD X — see full breakdown below"

User: "I need to send out 1099s"
→ Pull all contractor/vendor payments from QuickBooks + PayPal + Stripe
→ Identify contractors paid ≥ USD 600 YTD
→ Flag records missing W-9 / EIN
→ Output: 1099-NEC candidate list + missing W-9 action list

Step 0 — Check the country first

Both paths below are US federal tax: self-employment tax, the federal bracket table, 1099-NEC and W-9. Before choosing a mode, read Country from the ## Business context block (rule: ../../shared/currency-and-locale.md). If it is absent, ask.

  • US → continue to Determine mode.

  • Anything else → say so in one line and stop the US math: "The quarterly-estimate and 1099 paths here are built for US federal tax. Your books are in the UK, so I'll get your closed-books packet ready for your accountant instead of a US estimate." Then offer /close-month for the periods in scope. Do not run a US calculation on a non-US business, and do not relabel one as a generic estimate.

Every amount in the output is in the business's currency code; the USD 600 line is US law and is named as such.

Determine mode

Read the user's message and context to decide which path applies:

  • Quarterly estimate — keywords: estimated payment, quarterly taxes, how much to set aside, safe harbor, Q1/Q2/Q3/Q4

  • Year-end 1099 prep — keywords: 1099, 1099-NEC, year-end, contractors, W-9, send 1099s, file 1099s

  • Combined — some users will ask "year-end summary" and need both. Run quarterly last; run 1099 prep first since it drives the most action items.

If the intent is ambiguous, ask: "Are you looking at your estimated tax payment for this quarter, or are you preparing 1099s for your contractors — or both?"


Path 1: Quarterly estimated tax

1. Pull YTD financials

Use the connected ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books — peers, per ../../shared/connector-neutrality.md) to pull a Profit & Loss report from January 1 of the current year through the last day of the most recently completed quarter. Capture:

  • Gross revenue (total income)

  • Total expenses (operating expenses, COGS, etc.)

  • Net ordinary income = revenue − expenses

If no ledger is connected, ask the user to upload a P&L as CSV or paste the key numbers. For field names and query approach per ledger, see reference/connector-queries.md.

2. Ask about prior estimated payments

Before calculating, ask: "How much have you already paid in estimated taxes so far this year?" If the user doesn't know, note that you'll calculate total liability — they can subtract payments themselves or check with their accountant.

3. Calculate estimated liability

See reference/calculation-assumptions.md for the full math and the assumptions table you must include in output.

First, annualize. The math runs on projected full-year net profit, not YTD: annualized net = YTD net ÷ months elapsed × 12. Show both, labeled. Seasonal business: ask rather than straight-lining.

Short version, all six steps running on annualized net profit:

  1. SE tax = annualized net profit × 0.9235 × 0.153 (then halve it — the deductible half offsets income)

  2. Adjusted net = annualized net profit − (SE tax / 2)

  3. Federal income tax = apply the bracket rate appropriate to the user's business type and estimated annual income (default to 22% unless the user tells you their bracket; note this assumption explicitly)

  4. Total annual liability = federal income tax + SE tax

  5. Quarterly payment = (total annual liability − payments made) ÷ quarters still ahead

  6. Safe harbor check — note whether the user should verify against prior-year tax (100% of prior year, or 110% if AGI > USD 150k)

If a due date has already passed unpaid, name it and show the catch-up on its own line, separate from the next payment. Penalty and interest go to the accountant — flag that they apply, never estimate them. With no quarters left, it is due with the return.

4. State assumptions and deliver output

The full section-by-section document structure is in reference/output-formats.md.

Two things that are not negotiable: the tax year appears in the header, and the Assumptions section lists every assumption — bracket rate, business structure, state taxes excluded, deductible SE half, and the deductions not applied. The accountant adjusts from those levers, so leaving one out costs them a rebuild.


Path 2: Year-end 1099 prep

1. Pull contractor payments from all sources

Query each connected source for all payments made to individuals or businesses for services in the tax year. Do not include payments for goods, refunds, or internal transfers.

The ledger — try the live connector first, fall back to a CSV export. QuickBooks may return only category-level totals with no payee breakdown, in which case you need the user to export a Transaction List by Vendor. Xero supplies bills and payments by contact, and a 1099 report summary for US organisations. The detection logic, the exact wording to ask with, and the column mapping per ledger are in reference/connector-queries.md.

PayPal: Pull all "Goods & Services" payments sent. Note: PayPal issues its own 1099-K to contractors above the threshold — flag these separately in output so the accountant can determine whether a 1099-NEC is also needed.

Stripe: Pull all transfers/payouts made to external parties. Same 1099-K caveat as PayPal applies.

Square: holds no payments to external parties through the connector (payouts go to the owner's own bank; contractor pay is in Square Payroll, which it does not reach). Name it as a source with nothing to contribute rather than dropping it silently; the 1099-K note applies to the business's own receipts. Detail in reference/connector-queries.md.

Desktop/CSV: If the user uploads a CSV directly (without going through QuickBooks export), map columns: payee name, amount, date, payment method, EIN/SSN status.

2. Aggregate by payee

Combine across sources and sum payments by individual or business entity. Deduplicate by name (watch for "John Smith" vs "John A. Smith" — flag likely duplicates for human review rather than auto-merging).

3. Apply the USD 600 threshold
  • Flag for 1099-NEC: any payee paid ≥ USD 600 for services (contractors, freelancers, consultants)

  • Flag for 1099-MISC: any payee paid ≥ USD 600 for rent, attorney fees, prizes/awards

  • Near-threshold alert: flag payees paid USD 400–USD 599 — close to the threshold, accountant may want to verify

Corporations (Inc., Corp., LLC taxed as C or S corp) generally do not need a 1099-NEC — note this but flag for accountant confirmation.

4. Check W-9 status

For each flagged payee, note whether a W-9 / EIN is on file in the ledger. Mark as:

  • ✅ W-9 on file (EIN/SSN recorded in the ledger's vendor or contact record)

  • ⚠️ Missing — W-9 not on file; must collect before filing

  • ❓ Unknown — cannot determine from available data

5. Deliver the 1099 prep package

The full section-by-section structure is in reference/output-formats.md.

The parts that carry the most weight: the missing-W-9 action list, because those block filing and the deadline is January 31, and the payment processor note, because a contractor paid only through PayPal or Stripe may already be getting a 1099-K and the accountant has to decide whether a 1099-NEC is also needed.


Guardrails

  • Name the tax year in every output. The brackets, wage base, and due dates in reference/calculation-assumptions.md are 2025 figures. Preparing a different year: say so loudly before showing any number, then cite current figures from IRS.gov or ask the owner. Never invent a bracket, a wage base, or a due date.

  • Not tax advice. Open every deliverable with this: "Prepared for review by your accountant — not tax advice." Include it in the document header, not just in chat.

  • State every assumption. If you assumed a 22% bracket, say so. If you excluded state taxes, say so. The accountant will adjust; give them the levers.

  • Don't merge payees automatically. Flag likely duplicates for human review.

  • Don't file anything. The output is prep material. Filing is out of scope.

  • Corporation exemption is a judgment call. Note it; don't auto-exclude.

  • Never reproduce a contractor's SSN or a full bank or card number in the packet, the chat, or a rendered page. A business EIN on a 1099 is the one designed exception (../../shared/personal-data.md).

More sources

  • Gusto — payroll actually run: wages, withholdings, and contractor payments. This deepens both modes — quarterly estimates stop guessing at payroll figures, and 1099 prep can reconcile contractor payments against what Gusto already filed. When Gusto shows a 1099 was already issued for a payee, flag it rather than double-preparing.

  • Xero — P&L for the quarterly path; bills and payments by contact for the payee list; and, for a US organisation, a 1099 report summary that is the expected output of Path 2 in one read. Queries in reference/connector-queries.md.

  • Ramp, Expensify — card spend and expense detail for the deduction side of the quarterly estimate, and vendor payment detail that helps confirm the 1099 list is complete. Expensify's receipt filter finds the expenses that will not survive substantiation, which is the flag an accountant most wants before filing.

  • MYOB — P&L only, for MYOB shops. Read-only, three financial years of history, and no contractor or vendor payee detail — so it feeds the quarterly estimate and plays no part in 1099 prep.

Same tax math, same accountant packet. More sources, fewer assumptions to state.

Output

Deliver the estimate or 1099 package per the owner's stored output preference — never default to a markdown file. Check the ## Business context block's Output preference (shared style guide rule, ../../shared/artifact-style.md):

  • Visual artifact (the default): render the summary as an HTML page in the house style — the estimate or 1099 count as the lead stat tile, the assumptions table, missing W-9s as rows with a pill each, and the deadline up top. Open with the not-tax-advice line. The accountant documents themselves keep the structure in reference/output-formats.md.

  • docx / md / notion / canva preference: deliver the same content in that form — a DOCX or markdown file, a Notion page created via the connector (named destination, never overwriting), or a Canva Doc created via the Canva connector (a new design each run, named with the date; tables become lists); fall back to the visual artifact if Notion or Canva is not connected — and say that is why.

  • Best for skill: use the visual artifact — this output is a status page over accountant-bound documents.

After the packet

The estimate or the 1099 package is in the accountant's hands, assumptions stated. The natural next step is "close the month" — /close-month keeps the next estimate running on reconciled numbers instead of the raw register. Also nearby: "cash forecast" (cash-flow-snapshot) to confirm the payment clears on its due date, and "who owes me money" (invoice-chase) if collections need to cover it. Offer at most three, and skip any offer the owner already declined this session.

Reference files

Using a tool that isn't listed

The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer build-connector — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.

Files

reference/connector-queries.md

Connector Query Guide

How to pull the right data from each connector for each mode. Ledgers are peers (../../../shared/connector-neutrality.md): use whichever is connected. Both modes are US federal tax; the country check in the skill's Step 0 runs before any of this.


Xero — Quarterly mode (P&L)

get_profit_and_loss for January 1 through the last day of the most recently completed quarter. Capture the same three figures as the QuickBooks path: total income, total expenses, net profit.

Read get_organisation_info first if the business context has no Country or Currency: it returns both, plus the base currency the P&L is in. get_organisation_financial_year returns the year end; a US organisation on a calendar year is the case this path was built for, and a non-calendar year end changes which months "YTD" covers — resolve the dates once and say which basis the estimate is on.

Confirm each tool name in this section before the first live run.


Xero — Year-end mode (contractor payments)

Two reads, in this order:

  1. get_1099_report_summary — for a US organisation, Xero already computes the 1099 view: payees, totals for the year, and the contact's tax-ID status. This is the expected output of Path 2 in one call. Use it as the candidate list and skip to the W-9 check.

  2. get_bills with include_line_items=true, status PAID, grouped by contact.name — when the summary is unavailable, or to cross-check it. Attribute each bill to the year it was paid, not the year it was dated: 1099 totals are by payment date, so a bill dated in December and paid in January belongs to the later year. Read the payment date from the bill's payments (or fully_paid_on_date where the connector exposes it), pull bills from both calendar years around the boundary, and sum per contact by payment year. Exclude bills coded to goods, refunds, and transfers.

For each contact, capture: name, tax ID present or not (the W-9 signal), total paid, payment dates. Xero's contact record holds a tax number field; empty means no W-9 on file.

Worked example, shape only:

Xero 1099 summary, tax year 2025:
  Rivera Design Co        USD 14,200   tax ID on file
  M. Okafor               USD  2,850   no tax ID — collect W-9
  Northgate Electrical    USD    580   under threshold — near-threshold list

Same aggregation, threshold, and W-9 logic as every other source from here.


QuickBooks — Quarterly mode (P&L)

Pull a Profit & Loss report for the period January 1 through the last day of the most recently completed quarter.

Key fields to capture:

  • Total Income (gross revenue)

  • Total Expenses (all operating expenses)

  • Net Ordinary Income (= income − expenses; this is the basis for tax calculation)

If QuickBooks returns multiple income/expense categories, sum them. You want the single bottom-line net profit figure.

If the user's QuickBooks is on cash basis, use that. If accrual, note it in output — the accountant should confirm which basis to use for estimated taxes.


QuickBooks — Year-end mode (contractor payments)

Pull all bill payments and checks to vendors for the full tax year (Jan 1 – Dec 31).

Filter for:

  • Vendor type = "1099 eligible" (if the user has tagged vendors in QuickBooks)

  • OR any vendor whose category is: consulting, contract labor, subcontractor, freelance, design, legal, accounting, marketing, staffing

For each vendor record, capture:

  • Vendor name (legal name if available)

  • EIN / SSN (from vendor profile — indicates W-9 on file)

  • Total payments for the year

  • Payment dates and amounts (for cross-reference)

  • Vendor type / 1099 eligibility flag

Common issue: Many QuickBooks users do not tag vendors as 1099-eligible. If 1099 eligible returns few or no results, pull ALL vendors with significant payment totals and let the user / accountant classify them. Note this in output.

When the connector returns totals with no payee breakdown

Try the live connector first, then fall back. Three steps:

  1. Try the live connector. Attempt to pull vendor-level payment records via the QuickBooks MCP. If it returns individual payee records with name, amount, and account category, use them directly and skip the rest of this section.

  2. Detect an aggregate-only response. If the response carries only category-level totals — "Contract labor: USD 7,500" with no payee breakdown — the connector does not support vendor-level queries on this account. Ask for an export:

    "QuickBooks returned summary data only — I need payee-level detail to build your 1099 list. Please export a Transaction List by Vendor report (QuickBooks → Reports → Expenses → Transaction List by Vendor, filtered to this tax year) and upload the CSV here. I'll process it automatically."

  3. Process the CSV. Map columns: payee name, amount, date, payment method, and EIN/SSN status. From there the aggregation and threshold logic is identical regardless of which source the data came from.

If the QuickBooks MCP later exposes vendor payment records directly, step 1 simply succeeds and the fallback is skipped. No skill change is needed — the try-first order handles it.


PayPal — Year-end mode

Pull all "Goods & Services" payments sent (not received) for the tax year.

Key fields:

  • Recipient name / email

  • Total amount per recipient (aggregate for the year)

  • Transaction type = "Payment" or "Business Payment"

  • Date

Exclude: personal payments ("Friends & Family"), refunds, disputes, transfers to own accounts.

1099-K note: PayPal issues its own 1099-K to any recipient who receives ≥ USD 600 in goods & services payments. Flag this in output — the accountant determines whether the business must also issue a 1099-NEC or can rely on PayPal's 1099-K.


Stripe — Year-end mode

Pull all transfers to external accounts (payouts to contractors, not payouts to the business owner's own bank).

Key fields:

  • Recipient name / ID

  • Total transferred per recipient for the year

  • Payment description / metadata (to confirm these are for services)

Exclude: Stripe payouts to the business's own bank account.

1099-K note: Same as PayPal — Stripe issues 1099-K to contractors above the threshold. Flag and defer to accountant.


Square — both modes

Square is a peer of PayPal and Stripe in the payments category, and it holds less of what this skill needs. Say what it cannot do, in one line, and move on.

Quarterly mode: the P&L comes from the ledger, not from Square. Square's payments list (all locations — ListPayments without location_id returns only the main one) gives gross card receipts for the period, useful only as a cross-check that the ledger's income line is not missing a location. Never substitute it for the P&L.

Year-end mode: Square exposes no payments to external parties through the connector — its payouts go to the business's own bank, and contractor pay lives in Square Payroll, which the connector does not reach. Square contributes nothing to the 1099-NEC list. Say so by name in the Sources section rather than leaving it out silently.

1099-K note: like PayPal and Stripe, Square issues a 1099-K to the business for card receipts above the threshold. That is the business's own income reporting, not a contractor's; note it for the accountant so gross receipts on the return reconcile to the processors.


Ramp — both modes

Card transactions with GL and category coding, vendor bills with their approval history, vendor records, and reimbursements.

  • Quarterly mode: card spend by category, for the expense side of the estimate. Anything not yet synced to the ledger is spend the P&L does not know about — name it as an adjustment rather than folding it in silently.

  • Year-end mode: vendor and bill records help confirm a payee list built from the ledger. Ramp is a cross-check, not the source of truth.

Ramp can approve bills and mark them ready to sync. Nothing in this skill writes. Read only.


Expensify — both modes

Read-only search. Expense reports, individual expenses, receipts, invoices, trips, category-grouped totals, and approval-state statuses.

  • Quarterly mode: category-grouped expense totals, for the deduction side.

  • Receipt substantiation is a first-class filter. Search for expenses with no receipt attached and report the total and the count. That is the line the accountant acts on: an expense without a receipt is a deduction that may not hold.

  • Expensify does not carry contractor payee detail suitable for a 1099 list. Do not build one from it.


NetSuite — both modes

P&L via ns_runReport for the quarterly path; vendor bill payments by payee via ns_runCustomSuiteQL for the year-end path. Same fields as the QuickBooks path. NetSuite vendor records carry the tax-ID field that stands in for the W-9 signal.


MYOB — quarterly mode only

Read-only, and P&L-side only. MYOB gives net profit with monthly or quarterly breakdown and a prior-year comparison — which is exactly the input the quarterly estimate needs.

What it cannot do:

  • No contractor or payee detail. MYOB has no role in 1099 prep. Say so and fall back to PayPal, Stripe, or a CSV for the payee list.

  • No bank balances.

  • Three financial years only — the current and prior two. Anything older is unavailable.

Resolve the business financial-year dates once before pulling the P&L and reuse them. Any "last quarter" or "FYTD" reference means the financial year, not the calendar year, unless the owner says otherwise — and if the financial year is not the calendar year, say which basis the estimate is on, because the accountant needs that stated.


Zoho Books — both modes

No report endpoints, so both modes are assembled from document lists and labelled as such.

Quarterly mode. list_invoices for January 1 through the quarter end with response_option=3 (summed total), and list_expenses for the same range summed on total. Income minus expenses is the net figure for the estimate — an invoiced-and-recorded estimate, not a P&L. Say that in the output; the accountant confirms basis. get_organization supplies country_code, currency_code, and fiscal_year_start_month for the Step 0 country check and the YTD dates.

Year-end mode. list_contacts with contact_type=vendor, reading track_1099 (Zoho's own 1099-eligible flag) and tax_id_type / tax ID presence as the W-9 signal. Then list_expenses per vendor_id for the tax year, summed on total by payment year.

What it cannot do: there is no bill object and no vendor-payment list, so only expenses count toward each payee's total. A vendor paid through bills in Zoho Books is invisible here — say so, and ask for the Payments Made or Vendor Balances export from Reports for the payee list when the business uses bills.


Desktop / CSV fallback

If any connector is unavailable, ask the user to:

  1. Export a P&L from their ledger as CSV (QuickBooks: Reports → Profit & Loss → Export; Xero: Reports → Profit and Loss → Export; Zoho Books: Reports → Profit and Loss → Export; and for the year-end path, Xero's 1099 report or a Payable Invoice Summary by contact, or Zoho Books' Payments Made report by vendor)

  2. Export a transaction history from PayPal (Activity → Download → CSV)

  3. Export a payout report from Stripe (Dashboard → Payouts → Export)

When reading uploaded CSVs, look for these columns (names vary by export):

  • P&L: Description, Amount, Type (Income / Expense)

  • PayPal: Name, Type, Amount, Date, Transaction ID

  • Stripe: Description, Amount, Created date, Status

If columns don't match, ask the user to identify the payee name and amount columns.

Requirements and compatibility

Written for: Claude Code, Claude apps

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Declares allowed tools

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Anthropic
Publisher
Anthropic (Official)
Source
anthropics/knowledge-work-plugins · small-business/skills/tax-season-organizer · commit e050c2e
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Anthropic or Anthropic.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download tax-season-organizer.zip