---
title: "The delivery portal"
url: https://services.dev/docs/examples/tax/delivery-portal
captured: [tax-member.txt]
---
# The delivery portal

URL: https://services.dev/docs/examples/tax/delivery-portal

> One enrolled agent's season on gigs.tax, screen by screen. Katherine Johnson joins, reads an offer, opens a packet with last year's return beside it, signs one return and sends another back, is paid, is offered next year's return first, and leaves with a successor named.

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

Katherine Johnson is an enrolled agent in Albany. This is her season on the preparers' Pool, at `gigs.tax/practitioners`, as the brand serves it. [The delivery portal](https://services.dev/docs/app/members.md) covers every Pool's.

## Joining

She joins once for every tax brand on the door, with her PTIN, her CAF number and the least she'll take. Her PTIN is fresh to 31 December:

```txt
→ POST /practitioners/join {"email":"kjohnson@example.com","answers":{"turnaround":"24h","min_fee":90}}
```

```txt title="magic values: none"
← 200 mbr_8Ea1 · practitioners · kjohnson@example.com · verified: ptin on every leg, fresh to 2026-12-31; enrolled agent on every leg; CAF 0312-45678R · on
  standby  Feb 1 to Apr 15 · 20 hours a week · $400 a week, paid Fridays · offered each review first · join it or not
```

## An offer

An offer shows the act, the pay and the jurisdictions, never the taxpayer, until she claims. Unclaimed at two hours, it rises 10%:

*Screen: the delivery portal at `/practitioners`, tsk_7Hq1 offered (captured/screens/tax-delivery-offer.html).*

## The packet

The packet holds last year's return beside this one, the lenses the draft passed, and each line's source. She signs for apis.tax's firm, under its EFIN:

*Screen: the delivery portal at `/reviews/tsk_7Hq4/packet`, tsk_7Hq4 held · job_4Tx3 · waiting on person (captured/screens/tax-delivery-packet.html).*

```txt
→ GET /tasks/tsk_7Hq4/packet   # as mbr_8Ea1
```

```txt title="captured/tax-member.txt · 200 · sign · job_4Tx3 · Acme Robotics · 1120, 100, CT-3, CBT-100 · 2026 · magic values: none"
  beside   2025 · job_4Tx2 · signed by you · each line with this year's beside it: tax $64,890 → $73,710, income $412,000 → $468,000
  lenses   reviewer pass · compliance pass · numeric tie-out pass
  sources  every line to its source: the books, closed 2027-07-11 · the 2025 carryforwards by value · $95,739.00 deposited 2027-04-12, credited
  stamp    your name, PTIN and credential go in the paid-preparer block for apis.tax, firm EIN 88-1234567, filed under its EFIN, never yours
  binds    sha256:69d3… · the officer's Form 8879-CORP is asked for this hash, and a $1 change to the balance due voids both
```

## Signed or sent back

She signs, or sends the return back with its defects. A send-back is paid and counts nothing against her; the redraft comes back to her first:

```txt
→ POST /reviews/tsk_7Hr2/send_back {"defects":"Schedule M-1 line 5 is $18,000 short of the books' meals and entertainment; tie it out before I sign."}
```

```txt title="200 · sent back · draft · tsk_7Hr2 · you're paid for the review, $105.00, and nothing counts against you · magic values: none"
  next     the AI drafts again, the panel checks it, and the new version is offered to you first
```

```txt
→ POST /reviews/tsk_7Hr3/attest {"checklist":["every line traces to a source","due diligence answered","the officer's e-file authorization shows this return's figures"]}
```

```txt title="200 · attested · $105.00 · magic values: none"
← 200 · attested · $105.00
```

## Paid

Each act is payable two days after it and paid that evening. A re-sign after a repair is a new act; standby is paid on Fridays:

```txt
→ GET /practitioners/earnings   # as mbr_8Ea1
```

```txt title="200 · 2027 · magic values: none"
  2027-07-13  job_4Tx3  sign      $105.00  paid 2027-07-13
  2027-07-15  job_4Tx3  sign      $105.00  paid 2027-07-15 · the re-sign after New York's repair
  2027-07-15  job_4Tr2  review    $105.00  paid 2027-07-15 · the send-back
  2027-07-15  job_4Tr2  sign      $105.00  paid 2027-07-17
  2027-11-16  job_4Tx7  respond   $90.00   paid 2027-11-16 · the CP161, under a Form 2848 naming you
  standby     Feb 1 to Apr 15 · 11 weeks × $400.00 · Sep 1 to Oct 15 · 6 weeks × $300.00 · Away weeks unpaid
```

*Screen: the delivery portal at `/practitioners`, tsk_7Hq1 done · after the extension (captured/screens/tax-delivery-task.html).*

## Next year offered to you first

She stays of record for each return until its assessment date, and is offered the next one first for 14 days. Rungs that run themselves wait on no one:

*Screen: the delivery portal at `/practitioners`, tsk_7Hq1 done (captured/screens/tax-delivery-clocks.html).*

```txt
→ GET /practitioners   # as mbr_8Ea1, 2 February 2028
```

```txt title="200 · yours first · job_4Tx9 · Acme Robotics · 2027 · sign · $120.00 · 5 jurisdictions, Texas added · yours first until 15 Feb · magic values: none"
← 200 · yours first · job_4Tx9 · Acme Robotics · 2027 · sign · $120.00 · 5 jurisdictions, Texas added · yours first until 15 Feb
```

## Leaving

She withdraws and names a successor. Each taxpayer is told, and each seat passes once the successor accepts, or to the brand:

```txt
→ POST /practitioners/me/withdraw {"successor":"mbr_7Hq2","note":"retiring after the season"}
```

```txt title="200 · withdrawing · 3 taxpayers of record · each is told, and each seat passes to mbr_7Hq2 once she accepts, or to the brand · magic values: none"
  keeps    each signed packet stays with the brand to its assessment date or 3 years past its return period, whichever is later · the cover's tail runs to each return's assessment date
  next     open reviews finish or go back to the Pool, free; nothing about leaving scores against you
```

[The preparers' Pool](https://services.dev/docs/examples/tax/pool.md) has what protects a member, and [the season](https://services.dev/docs/examples/tax/season.md) standby.

---

- Up: [The tax example](https://services.dev/docs/examples/tax.md)
- Previous: [The customer portal](https://services.dev/docs/examples/tax/customer-portal.md)
- Next: [The owner console](https://services.dev/docs/examples/tax/console.md)
