---
title: "A year, and the next"
url: https://services.dev/docs/examples/tax/years
captured: [tax-years.txt]
---
# A year, and the next

URL: https://services.dev/docs/examples/tax/years

> The tax example's gate. A company's 2025 return, then a Tax Plan run for a year on a test clock with tick 1y. The plan mints each 1099 filing, return and estimate, a rung deposits the tax and files each state's extension by its own rule, a state is repaired in time, a CP161 is answered, and the plan renews into the next year.

*tax's words: return is a job, taxpayer is a subject, review is a task, preparer is a member (examples/tax/brand.ts).*

Acme Robotics files federally and in three states, with twelve simulated preparers. The magic values script the year: the books come 160 days late, New York rejects once, a W-9 comes late, and a notice arrives in November.

## The year before

The 2025 return runs on a clock of its own, its balance paid with the return:

```bash
npx services.dev annual-return "business=Acme Robotics <books@acme.example>" "owner=Ada Lovelace <signs@example.test>" ein=12-3456789 "entity=C corp" jurisdictions=US,US-CA,US-NY,US-NJ books=https://books.example/acme tax_year=2025 --max 1800 --test-clock tc_7Hq3
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
job_4Tx2 · working · $1,800.00 held
job_4Tx2 · delivered · workpapers-2025.txt · return.txt · $1,800.00 charged
  record  consent · owner · §7216 · use: prepare · disclose: none, so members located in the US | organizer.books · answered | organizer.bank · answered | organizer.payroll · answered | organizer.assets · answered | organizer.ca_account · answered | organizer.ny_account · answered | organizer.nj_account · answered | organizer · owner · upload | compute · code | expiring clock · rolled 2045-12-31 → 2046-01-02 · weekend, holiday | draft · ai | check · ai · adversarial · 3 lenses · pass | sign · person · ptin and enrolled agent · * · mbr_8Ea1 · paid-preparer block for apis.tax | authorize · owner · Form 8879-CORP · id-verified | file · IRS and states · efin simulated · 4 accepted · tax with the return
  clocks  file · due 2026-04-15 · mbr_8Ea1 · satisfied
          pay · due 2026-04-15 · buyer · satisfied
          assessment · due 2029-04-17 (rolled from 2029-04-15) · the brand · open · on the subject
          refund · due 2029-04-17 (rolled from 2029-04-15) · mbr_8Ea1 · open · on the subject
          expiring · due 2046-01-02 (rolled from 2045-12-31) · the brand · open · on the subject
  ledger  +$1,800.00 · AI $1.68 · signer $105.00 · you $1,693.32
  next    npx services.dev accept job_4Tx2
```

```bash
npx services.dev clocks get clk_7Hq3
```

```txt title="magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
clk_7Hq3 · pay · due 2026-04-15 · buyer · satisfied
```

## The plan

On a second clock, on 20 January 2027, the business buys the plan:

```bash
npx services.dev tax-plan "business=Acme Robotics <books@acme.example>" "owner=Ada Lovelace <signs@example.test>" ein=12-3456789 "entity=C corp" jurisdictions=US,US-CA,US-NY,US-NJ books=https://books.example/acme --max 2400 --test-clock tc_7Hq4 --metadata 'sandbox.asks={"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}' --metadata 'sandbox.outside={"reject":{"file.US-NY":["ein_mismatch"]}}' --metadata 'sandbox.events={"notice.received":{"at":"2027-11-14T15:00:00Z","data":{"notice":{"url":"data:text/plain,CP161%3A%20balance%20due%202026.","name":"cp161.pdf"},"reply_by":"2027-12-14","tax_years":["2026","2027"]}}}'
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
sbn_7Hq2 · tax-plan · active · cycle 1 · 2027-01-20 → 2028-01-20 · $2,400.00 per year
  allowances  annual-return 0 of 1 · information-returns 0 of 25 · estimate 0 of 4 · question 0 of 12 · notice-response 0 of 2
  minted      2027-01-20  catch_up open → job_4Tx1 information-returns · period 2026 · due 2027-02-01, rolled from 2027-01-31 · weekend
  schedule    information → information-returns · next 2028-01-05 (5d after end 2027-12-31)
  schedule    annual → annual-return · next 2027-02-01 (1mo after end 2026-12-31)
  schedule    estimate → estimate · next 2027-04-05 (10d before pay 2027-04-15)
  event       question.asked → question
  event       notice.received → notice-response
```

## A year, on the clock

`tick 1y` moves the clock a year. January and February: the 1099s are filed, and the 2026 return is minted, its organizer started from 2025:

```bash
npx services.dev tick 1y --test-clock tc_7Hq4 --market normal
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
tc_7Hq4 · 2027-01-20 09:00:00 → 2028-01-20 09:00:00 · 214 fired
  2027-01-20 09:00:00  job_4Tx1  read → list · 5 payees, each W-9 on file
  2027-01-20 09:00:00  job_4Tx1  match · TIN matching · 5 matched
  2027-01-20 09:00:00  job_4Tx1  ask confirm · signs@example.test · decided "file them"
  2027-01-20 09:00:00  job_4Tx1  file · IRS, through IRIS · 5 1099-NECs accepted · due 2027-02-01
  2027-01-20 09:00:00  job_4Tx1  send · 5 payee copies · delivered · collected $0.00 · allowance 5 of 25
  2027-01-27 09:00:00  job_4Tx1  accepted · earned $0.00
  2027-02-01 14:00:00  sbn_7Hq2  schedule annual → job_4Tx3 annual-return · period 2026 · $0.00 · allowance 1 of 1
  2027-02-01 14:00:00  job_4Tx3  ask consent · signs@example.test · §7216 consented as officer · use: prepare · disclose: none
  2027-02-01 14:00:00  job_4Tx3  ask organizer · signs@example.test · 8 items from 2025 (job_4Tx2) · 6 answered · 1 waived · 1 open (books)
  2027-02-01 14:00:00  job_4Tx3  waits on party at organizer
```

Spring: the first estimate is paid in each state. Three days before the date to file, a rung deposits the tax the ledger expects and files each extension its state needs. Each date to file moves by its own rule; the date to pay doesn't. The return keeps the rungs of `2027-01`, the version it opened under:

```bash
npx services.dev tick 1y --test-clock tc_7Hq4 --market normal
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
  2027-03-16 13:00:00  job_4Tx3  clock file · rung notice 30d · due 2027-04-15 · US, US-CA, US-NY · owner of_record
  2027-04-01 13:00:00  job_4Tx3  clock pay · rung notice 14d · due 2027-04-15 · owner buyer · about $324 a month if it's late
  2027-04-05 13:00:00  sbn_7Hq2  schedule estimate → job_4Tx4 estimate · period 2027-Q1 · $0.00 · allowance 1 of 4
  2027-04-05 13:00:00  job_4Tx4  clock pay · rung notice 10d · due 2027-04-15 · owner buyer · about $284 a quarter if it's left unpaid
  2027-04-05 13:00:00  job_4Tx4  compute · 2026 isn't filed yet: 2025's tax (job_4Tx2) · US $16,223 · US-CA $1,639 · US-NJ $1,391 · US-NY's first installment goes with its CT-5
  2027-04-05 13:00:00  job_4Tx4  ask approve · signs@example.test · decided "pay it"
  2027-04-05 13:00:00  job_4Tx4  review
  2027-04-05 13:00:00  job_4Tx4  pay · Treasury and states · 3 accepted, US first · rcp_7Hq6
  2027-04-05 13:00:00  job_4Tx4  clock pay · satisfied · pay committed
  2027-04-05 13:00:00  job_4Tx4  record
  2027-04-05 13:00:00  job_4Tx4  delivered · collected $0.00
  2027-04-09 13:00:00  job_4Tx3  clock file · rung ack daily 7d · acknowledged, simulated · the acknowledgement due 7 days out
  2027-04-10 13:00:00  job_4Tx3  clock file · rung ack daily 7d · acknowledged, simulated · the acknowledgement due 6 days out
  2027-04-11 13:00:00  job_4Tx3  clock file · rung ack daily 7d · acknowledged, simulated · the acknowledgement due 5 days out
  2027-04-12 13:00:00  job_4Tx3  clock file · rung run tentative 3d → tentative proposed · committed
  2027-04-12 13:00:00  job_4Tx3  tentative · the year as the ledger stands · US $73,710 · US-CA $6,205 · US-NY $7,605, and 2027's first installment $1,901 · US-NJ $6,318
  2027-04-12 13:00:00  job_4Tx3  clock file · rung ack daily 7d · acknowledged, simulated · the acknowledgement due 4 days out
  2027-04-12 13:00:00  job_4Tx3  clock pay · rung escalate 3d · due 2027-04-15 · owner buyer
  2027-04-12 13:00:00  job_4Tx3  pay · Treasury and states · 4 accepted, US first · rcp_7HqB · $95,739.00 deposited
  2027-04-12 13:00:00  job_4Tx3  clock pay · satisfied · pay committed
  2027-04-12 13:00:00  job_4Tx3  extend · US Form 7004 accepted → US-CA automatic, no filing; paid by voucher · US-NY CT-5 accepted · US-NJ CBT-200-T accepted, 100% paid · all in
  2027-04-12 13:00:00  job_4Tx3  clock file · moved 2027-04-15 → 2027-10-15 · US, US-NY · US-NJ 2027-05-17 → 2027-11-15 · US-CA → 2027-11-15, automatic · each by its own rule · clock pay unmoved, still 2027-04-15
  2027-04-12 13:00:00  job_4Tx3  waits on party at organizer
  2027-04-12 13:00:00  job_4Tx4  accepted · the subject keeps paid · earned $0.00
```

July: the books arrive. The return is drafted with the deposit credited, signed with last year's beside it, and filed with $0 due. New York rejects it once, and the refiling keeps its first time:

```bash
npx services.dev tick 1y --test-clock tc_7Hq4 --market normal
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
  2027-07-11 14:00:00  job_4Tx3  ask organizer · books answered · done
  2027-07-11 14:00:00  job_4Tx3  compute · carryforwards read off 2025 (job_4Tx2) · $95,739.00 deposited with the extension, credited · balance due $0.00 → draft → check · waits on claim at sign
  2027-07-11 14:00:00  job_4Tx3  sign · offered first to mbr_8Ea1, of record · claimed · 2025 beside it (job_4Tx2)
  2027-07-11 14:00:00  job_4Tx3  ask authorize · signs@example.test · Form 8879-CORP signed id-verified as officer · sha256:69d3…
  2027-07-11 14:00:00  job_4Tx3  file · US 1120 accepted → US-CA 100 accepted, US-NJ CBT-100 accepted, US-NY CT-3 rejected ein_mismatch → organizer
  2027-07-11 14:00:00  job_4Tx3  clock file · US, US-CA, US-NJ satisfied · US-NY open until its own receipt
  2027-07-11 14:00:00  job_4Tx3  ask organizer · signs@example.test · 1 item · 1 open (ny_account)
  2027-07-11 14:00:00  job_4Tx3  waits on party at organizer
  2027-07-13 14:00:00  job_4Tx3  ask organizer · ny_account answered · done
  2027-07-13 14:00:00  job_4Tx3  compute · carryforwards read off 2025 (job_4Tx2)
  2027-07-13 14:00:00  job_4Tx3  ask.voided · authorize
  2027-07-13 14:00:00  job_4Tx3  ask authorize · signs@example.test · sha256:0513… · open
  2027-07-13 14:00:00  job_4Tx3  draft → check · waits on claim at sign
  2027-07-13 14:00:00  job_4Tx3  sign · mbr_8Ea1 again, a new act paid again · 2025 beside it (job_4Tx2)
  2027-07-13 14:00:00  job_4Tx3  ask.voided · authorize
  2027-07-13 14:00:00  job_4Tx3  ask authorize · signs@example.test · Form 8879-CORP signed id-verified as officer · sha256:9375…
  2027-07-13 14:00:00  job_4Tx3  file · US-NY CT-3 accepted (keeps 2027-07-11)
  2027-07-13 14:00:00  job_4Tx3  clock file · US-NY satisfied · file committed · every item closed
  2027-07-13 14:00:00  job_4Tx3  delivered · collected $0.00
  2027-07-20 14:00:00  job_4Tx3  accepted · the subject keeps carryforwards, tax, paid, first_installment · earned $0.00
```

Then three more estimates, September's catching up, a CP161 answered, the next 1099s, and the renewal:

```bash
npx services.dev tick 1y --test-clock tc_7Hq4 --market normal
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
tc_7Hq4 · 2027-01-20 09:00:00 → 2028-01-20 09:00:00 · 214 fired
  2027-04-12 13:00:00  job_4Tx3  clock file · moved 2027-04-15 → 2027-10-15 · US, US-NY · US-NJ 2027-05-17 → 2027-11-15 · US-CA → 2027-11-15, automatic · each by its own rule · clock pay unmoved, still 2027-04-15
  2027-06-05 13:00:00  sbn_7Hq2  schedule estimate → job_4Tx5 estimate · period 2027-Q2 · $0.00 · allowance 2 of 4
  2027-06-05 13:00:00  job_4Tx5  clock pay · rung notice 10d · due 2027-06-15 · owner buyer · about $284 a quarter if it's left unpaid
  2027-06-05 13:00:00  job_4Tx5  compute · 2026 isn't filed yet: 2025's tax (job_4Tx2) · US $16,222 · US-CA $2,185 · US-NY $1,447 · US-NJ $1,390
  2027-06-05 13:00:00  job_4Tx5  ask approve · signs@example.test · decided "pay it"
  2027-06-05 13:00:00  job_4Tx5  review
  2027-06-05 13:00:00  job_4Tx5  pay · Treasury and states · 4 accepted, US first · rcp_7HqC
  2027-06-05 13:00:00  job_4Tx5  clock pay · satisfied · pay committed
  2027-06-05 13:00:00  job_4Tx5  record
  2027-06-05 13:00:00  job_4Tx5  delivered · collected $0.00
  2027-06-12 13:00:00  job_4Tx5  accepted · the subject keeps paid · earned $0.00
  2027-09-05 13:00:00  sbn_7Hq2  schedule estimate → job_4Tx6 estimate · period 2027-Q3 · $0.00 · allowance 3 of 4
  2027-09-05 13:00:00  job_4Tx6  clock pay · rung notice 10d · due 2027-09-15 · owner buyer · about $400 a quarter if it's left unpaid
  2027-09-05 13:00:00  job_4Tx6  compute · 2026's tax (job_4Tx3), the safe harbor · US $22,838, catching up the $4,410 Q1 and Q2 were short of it · US-NY $2,356 · US-NJ $1,958 · US-CA has no third installment
  2027-09-05 13:00:00  job_4Tx6  ask approve · signs@example.test · decided "pay it"
  2027-09-05 13:00:00  job_4Tx6  review
  2027-09-05 13:00:00  job_4Tx6  pay · Treasury and states · 3 accepted, US first · rcp_7HqI
  2027-09-05 13:00:00  job_4Tx6  clock pay · satisfied · pay committed
  2027-09-05 13:00:00  job_4Tx6  record
  2027-09-05 13:00:00  job_4Tx6  delivered · collected $0.00
  2027-09-12 13:00:00  job_4Tx6  accepted · the subject keeps paid · earned $0.00
  2027-11-14 15:00:00  sbn_7Hq2  event notice.received → job_4Tx7 notice-response · $0.00 · allowance 1 of 2
  2027-11-14 15:00:00  job_4Tx7  read · CP161 · balance due $76,289.85 for 2026: tax $73,710.00, failure-to-pay penalty $2,579.85
  2027-11-14 15:00:00  job_4Tx7  match · rcp_7HqB · US $73,710.00 · Form 7004 for 2026 · posted to 2027
  2027-11-14 15:00:00  job_4Tx7  classify · misapplied → respond
  2027-11-14 15:00:00  job_4Tx7  review · waits on claim at respond
  2027-11-14 15:00:00  job_4Tx7  respond · claimed by mbr_8Ea1, CAF 0312-45678R
  2027-11-14 15:00:00  job_4Tx7  ask poa · signs@example.test · Form 2848 granted esign as officer · names mbr_8Ea1 · income, 1120, 2026 and 2027 · until 2028-11-13
  2027-11-14 15:00:00  job_4Tx7  respond · a transfer request citing rcp_7HqB · stamped
  2027-11-14 15:00:00  job_4Tx7  send · rcp_7HqJ accepted
  2027-11-14 15:00:00  job_4Tx7  delivered · collected $0.00
  2027-11-21 15:00:00  job_4Tx7  accepted · the Form 2848 withdrawn on acceptance · earned $0.00
  2027-12-05 14:00:00  sbn_7Hq2  schedule estimate → job_4Tx8 estimate · period 2027-Q4 · $0.00 · allowance 4 of 4
  2027-12-05 14:00:00  job_4Tx8  clock pay · rung notice 10d · due 2027-12-15 · owner buyer · about $322 a quarter if it's left unpaid
  2027-12-05 14:00:00  job_4Tx8  compute · 2026's tax (job_4Tx3), the safe harbor · US $18,427 · US-CA $2,381 · US-NY $1,901 · US-NJ $1,579
  2027-12-05 14:00:00  job_4Tx8  ask approve · signs@example.test · decided "pay it"
  2027-12-05 14:00:00  job_4Tx8  review
  2027-12-05 14:00:00  job_4Tx8  pay · Treasury and states · 4 accepted, US first · rcp_7HqK
  2027-12-05 14:00:00  job_4Tx8  clock pay · satisfied · pay committed
  2027-12-05 14:00:00  job_4Tx8  record
  2027-12-05 14:00:00  job_4Tx8  delivered · collected $0.00
  2027-12-12 14:00:00  job_4Tx8  accepted · the subject keeps paid · earned $0.00
  2028-01-05 14:00:00  sbn_7Hq2  schedule information → job_4TxA information-returns · period 2027 · $0.00
  2028-01-05 14:00:00  job_4TxA  read → list · 6 payees · 1 W-9 not on file: Lumen Design LLC
  2028-01-05 14:00:00  job_4TxA  ask w9 · Lumen Design LLC · Form W-9 · open
  2028-01-05 14:00:00  job_4TxA  waits on party at w9
  2028-01-17 14:00:00  job_4TxA  clock file · rung notice 14d · due 2028-01-31 · owner brand
  2028-01-20 09:00:00  sbn_7Hq2  renews · cycle 2 · $2,400.00 charged · allowances reset · ends 2029-01-20
```

## And the next

Thirteen days on, the 1099s go in, and the 2027 return is minted, its dates rolled past a weekend and a holiday:

```bash
npx services.dev tick 13d --test-clock tc_7Hq4 --market normal
```

```txt title="magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
tc_7Hq4 · 2028-01-20 09:00:00 → 2028-02-02 09:00:00 · 19 fired
  2028-01-24 14:00:00  job_4TxA  ask w9 · Lumen Design LLC · uploaded
  2028-01-24 14:00:00  job_4TxA  match · TIN matching · 6 matched
  2028-01-24 14:00:00  job_4TxA  ask confirm · signs@example.test · decided "file them"
  2028-01-27 14:00:00  job_4TxA  file · IRS, through IRIS · 6 1099-NECs accepted · due 2028-01-31
  2028-01-27 14:00:00  job_4TxA  send · 6 payee copies · delivered · collected $0.00 · allowance 11 of 25, cycle 1
  2028-02-01 14:00:00  sbn_7Hq2  schedule annual → job_4Tx9 annual-return · period 2027 · $0.00 · allowance 1 of 1
  2028-02-01 14:00:00  job_4Tx9  clock pay · due 2028-04-18, rolled from 2028-04-15 · weekend, holiday
  2028-02-01 14:00:00  job_4Tx9  clock file · due 2028-04-18, rolled from 2028-04-15 · weekend, holiday · US, US-CA, US-NY · US-NJ and US-TX due 2028-05-15
  2028-02-01 14:00:00  job_4Tx9  clock file · rung notice 90d · owed 2028-01-19, armed by the mint: fires in place · US, US-CA, US-NY
  2028-02-01 14:00:00  job_4Tx9  ask consent · signs@example.test · §7216 consented as officer · use: prepare · disclose: none
  2028-02-01 14:00:00  job_4Tx9  ask organizer · signs@example.test · 10 items from 2026 (job_4Tx3) · 8 answered · 1 waived · 1 open (books)
  2028-02-01 14:00:00  job_4Tx9  affinity · mbr_8Ea1, of record, is offered its review first until 2028-02-15
  2028-02-01 14:00:00  job_4Tx9  waits on party at organizer
```

The plan and the taxpayer, read back:

```bash
npx services.dev subscriptions get sbn_7Hq2
```

```txt title="captured/tax-years.txt · magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
sbn_7Hq2 · tax-plan · active · cycle 2 · 2028-01-20 → 2029-01-20 · $2,400.00 per year
  allowances  annual-return 1 of 1 · information-returns 0 of 25 · estimate 0 of 4 · question 0 of 12 · notice-response 0 of 2
  schedule    information → information-returns · next 2029-01-05 (5d after end 2028-12-31)
  schedule    annual → annual-return · next 2029-02-01 (1mo after end 2028-12-31)
  schedule    estimate → estimate · next 2028-04-05 (10d before pay 2028-04-15)
  event       question.asked → question
  event       notice.received → notice-response
  minted      2027-01-20  catch_up open → job_4Tx1 information-returns · period 2026 · $0.00
  minted      2027-02-01  schedule annual → job_4Tx3 annual-return · period 2026 · $0.00
  minted      2027-04-05  schedule estimate → job_4Tx4 estimate · period 2027-Q1 · $0.00
  minted      2027-06-05  schedule estimate → job_4Tx5 estimate · period 2027-Q2 · $0.00
  minted      2027-09-05  schedule estimate → job_4Tx6 estimate · period 2027-Q3 · $0.00
  minted      2027-11-14  event notice.received → job_4Tx7 notice-response · $0.00
  minted      2027-12-05  schedule estimate → job_4Tx8 estimate · period 2027-Q4 · $0.00
  minted      2028-01-05  schedule information → job_4TxA information-returns · period 2027 · $0.00
  minted      2028-02-01  schedule annual → job_4Tx9 annual-return · period 2027 · $0.00
```

```txt
→ GET /taxpayers/sbj_7Hq2
```

```txt title="magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
← sbj_7Hq2 · taxpayer 12-3456789 · of record mbr_8Ea1, Katherine Johnson, until 2030-07-11
  period  2025     annual-return        job_4Tx2 · accepted
  period  2026     information-returns  job_4Tx1 · accepted
  period  2026     annual-return        job_4Tx3 · accepted
  period  2027-Q1  estimate             job_4Tx4 · accepted
  period  2027-Q2  estimate             job_4Tx5 · accepted
  period  2027-Q3  estimate             job_4Tx6 · accepted
  period  2027-Q4  estimate             job_4Tx8 · accepted
  period  2027     information-returns  job_4TxA · delivered
  period  2027     annual-return        job_4Tx9 · waiting
  keeps   carryforwards 2025    US credit 2025 $8,370, US-CA credit 2025 $6,537 · job_4Tx2 at compute · 2026-02-01
  keeps   carryforwards 2026    US credit 2026 $13,800, US-CA credit 2025 $331, US-CA credit 2026 $12,000 · job_4Tx3 at compute · 2027-07-20
  keeps   tax           2025    US $64,890 · US-CA $5,463 · US-NY $6,695 · US-NJ $5,562 · job_4Tx2 at compute · 2026-02-01
  keeps   tax           2026    US $73,710 · US-CA $6,205 · US-NY $7,605 · US-NJ $6,318 · job_4Tx3 at compute · 2027-07-20
  keeps   paid          2026    US $73,710 · US-CA $6,205 · US-NY $7,605 · US-NJ $6,318, with the extension · job_4Tx3 at pay · 2027-07-20
  keeps   first_installment 2026  US-NY $1,901, toward 2027 · job_4Tx3 at tentative · 2027-07-20
  keeps   paid          2027-Q1 US $16,223 · US-CA $1,639 · US-NJ $1,391 · job_4Tx4 at record · 2027-04-12
  keeps   paid          2027-Q2 US $16,222 · US-CA $2,185 · US-NY $1,447 · US-NJ $1,390 · job_4Tx5 at record · 2027-06-12
  keeps   paid          2027-Q3 US $22,838 · US-NY $2,356 · US-NJ $1,958 · job_4Tx6 at record · 2027-09-12
  keeps   paid          2027-Q4 US $18,427 · US-CA $2,381 · US-NY $1,901 · US-NJ $1,579 · job_4Tx8 at record · 2027-12-12
  clocks  assessment and refund, 2025: 2029-04-17 · 2026: 2030-07-11 · expiring 2046-12-31, US credit 2026 $13,800 · each the brand's, the refunds mbr_8Ea1's
```

## The gate

```txt
→ GET /taxpayers/sbj_7Hq2
```

```txt title="magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }"
  keeps   paid          2026    US $73,710 · US-CA $6,205 · US-NY $7,605 · US-NJ $6,318, with the extension · job_4Tx3 at pay · 2027-07-20
  keeps   paid          2027-Q1 US $16,223 · US-CA $1,639 · US-NJ $1,391 · job_4Tx4 at record · 2027-04-12
  keeps   paid          2027-Q2 US $16,222 · US-CA $2,185 · US-NY $1,447 · US-NJ $1,390 · job_4Tx5 at record · 2027-06-12
  keeps   paid          2027-Q3 US $22,838 · US-NY $2,356 · US-NJ $1,958 · job_4Tx6 at record · 2027-09-12
  keeps   paid          2027-Q4 US $18,427 · US-CA $2,381 · US-NY $1,901 · US-NJ $1,579 · job_4Tx8 at record · 2027-12-12
# the gate, read off the run: the tax brand holds each line
  periods     2026, 2027 minted, each free · their 1099s too, 11 payees of 25
  read        carryforwards off 2025 (job_4Tx2), by value: 2 in, $14,907; 3 out, $26,131
  filed       1 federal and 3 linked state returns · the tentative tax deposited, then each extension its state's rule needs, proposed by a rung (by: clock, owed 2027-04-12 13:00)
  extended    US, US-NY to 2027-10-15 · US-NJ to 2027-11-15 · US-CA to 2027-11-15, automatic, no filing
  paid        2026: $95,739 with the extension, credited on the return · balance due $0.00
  repaired    US-NY ein_mismatch · refiled 2027-07-13, keeps 2027-07-11 · US-NJ filed 2027-07-11, on time
  estimates   4 kept by quarter, each state its own · Q3 catches up the $4,410 Q1 and Q2 were short · the 2027 organizer asks: Confirm the 4 federal payments for 2027, $73,710 in all
  notice      CP161 for 2026: rcp_7HqB found posted to 2027 · a transfer request under a Form 2848 naming mbr_8Ea1
  2027        file due 2028-04-18, rolled from 2028-04-15 (weekend, holiday) · US-NJ and US-TX 2028-05-15 · America/New_York
  renewed     cycle 2 · allowances reset
  folded      15 clocks, each rebuilt from its events alone: every one the same
```

[Two clients, over the years](https://services.dev/docs/examples/tax/clients.md) runs what comes after. [Keeping time](https://services.dev/docs/service/time.md) covers every kind of time it uses.

---

- Up: [The tax example](https://services.dev/docs/examples/tax.md)
- Previous: [The season](https://services.dev/docs/examples/tax/season.md)
- Next: [Two clients, over the years](https://services.dev/docs/examples/tax/clients.md)
