The rules table

The running jobjob_4Tx2 · delivered · workpapers-2026.txt · return.txt · $1,800.00 charged

Who may perform each act in the tax brand's Services, frozen under a version. Who prepares and signs, the EFIN a return goes under, where the §7216 consent lets return information go, who represents, which advice waits for a signer, and the fee no return may carry. Every row is illustrative and records its position.

tax's wordsreturn is a jobtaxpayer is a subjectreview is a taskpreparer is a member

Every row is illustrative: a brand's counsel writes its real table, and each row says what the brand does and why. An act is reserved to a credential, a consent or the brand's own credential, open to the brand, or refused: Rules.

Run
cat rules.ts
magic values: none
  prepare: { reserved: preparer, where: '*', in: { 'US-CA': { all: ['ptin'], any: ['ctec', 'cpa', 'enrolled agent', 'attorney'] } }, position: 'A paid preparer holds a PTIN; on a California leg the brand staffs a CTEC registrant, a CPA, an enrolled agent or an attorney.' },
  sign: { reserved: signer, where: '*', position: 'The signer holds a PTIN, and a CPA licence or an enrolled agent\'s card, and signs as the paid preparer for the brand\'s firm.' },
  file: { reserved: preparer, and: { brand: 'efin' }, where: '*', position: 'E-filed under the brand\'s own EFIN, the signer\'s PTIN in the paid-preparer block.' },
  disclose: { reserved: { consent: '7216' }, position: '§7216: return information goes only where the taxpayer\'s signed consent names, and abroad only when it says so.' },
  price_outcome: { refused: true, position: 'Circular 230 §10.27: no fee is contingent on a return as prepared or amended.' },
  version: '2026-10',
      extend: { open: true, position: 'An extension asks for time, not a return: the brand files it, or answers that a state needs none.' },
      pay: { open: true, position: 'Paying what is owed with the extension is a payment, not a return: the brand sends it.' },
      represent: { reserved: ['cpa', 'enrolled agent', 'attorney'], where: '*', self: true, position: 'Representing a taxpayer needs one of these and a Form 2848 that names the representative; a taxpayer may answer for themselves.' },
      send: { open: true, position: 'Sending a signed response under a live authorization is a delivery act.' },
      price_outcome: { open: { on: 'abated_usd' }, position: 'Circular 230 §10.27(b): a fee on a penalty the agency abates is permitted.' },
      advise: { reserved: signer, where: '*', kind: 'advice', position: 'An answer that tells a taxpayer what to do is a signer\'s advice, adopted in their name.' },
      match: { open: true, and: { brand: 'tin_matching' }, position: 'Each payee\'s name and TIN are matched under the brand\'s own TIN matching.' },
      file: { open: true, and: { brand: 'iris' }, position: 'A 1099 reports a payment, not a return: the brand files it under its own transmitter code.' },
      order: { reserved: { brand: 'ives' }, position: 'Transcripts are ordered through the brand\'s participant status.' },
      disclose: filing.disclose,
      prepare_return: { refused: true, route: 'https://apis.tax/annual-return', position: 'A paid preparer with a PTIN prepares a return: the transcript door prepares none.' },
      represent_taxpayer: { refused: true, route: 'https://apis.tax/notice-response', position: 'A CPA, enrolled agent or attorney represents a taxpayer: the transcript door represents none.' },
      sign_consent: { refused: true, position: 'The taxpayer signs the consent: nothing here signs for them.' },

The whole file, and check after it.

ServiceActWho performs itWherePosition
annual-return, amended-returnpreparea PTIN holder; on a California leg, also a CTEC registration, a CPA licence, an EA card or a bar admissionevery legThe brand staffs California's leg the way California registers preparers.
annual-return, amended-returnsigna PTIN, and a CPA licence or an EA cardevery legThe signer signs as the paid preparer for the brand's firm, by name, PTIN and credential.
annual-return, amended-returnfilea PTIN, under the brand's own EFINevery legThe signer never lends their own e-file number.
annual-return, amended-return, transcriptdisclosethe taxpayer's signed §7216 consentwhere the consent namesReturn information goes nowhere the consent doesn't name, and abroad only when it says so.
annual-return, amended-returnprice_outcomerefusedCircular 230 §10.27: no fee rides on a return as prepared or amended.
annual-returnextend, paythe brand: openAn extension asks for time, not a return; a deposit is a payment.
notice-responserepresenta CPA, an EA or an attorney under a Form 2848 that names them, or the taxpayer for themselveseverywhere
notice-responsesendthe brand: openSending a signed response under a live grant is a delivery act.
notice-responseprice_outcomeopen, on a penalty abated§10.27(b): a fee on a penalty the IRS takes off is permitted.
questionadvisea signer: adviceeverywhereAn answer that tells a taxpayer what to do goes out in a signer's name.
information-returnsmatch, filethe brand: open, under its TIN matching and its transmitter codeA 1099 reports a payment; it isn't a return.
transcriptorderthe brand's own IVES participant status
transcriptprepare_return, represent_taxpayer, sign_consentrefused, the first two routed to the brand's own ServicesThe transcript door prepares, represents and signs nothing.

The disclose row joins the brand's two lines. The officer's consent lists each disclosure she allows, such as a lender she names, who then reads the filed return. A consent that leaves out disclosure abroad sends the review only to members who work in the US.

Each return pins the version it was ordered under, 2026-10.

Each step of the annual return, who does it, and the row that decides it:

Run
npx services.dev check --who services/annual-return.ts
magic values: none
services/annual-return.ts · Annual Return · 12 steps · $1,800 per return, charged when the federal return is accepted
  consent    party         the owner, as officer · an ask: the §7216 consent · nothing · Free
  organizer  party         the owner · an ask: upload the request list · nothing · Free
  compute    code          schedules, your code · by: schedules, citing each one · nothing · Free
  draft      ai            AI, citing the workpapers · the default · AI, at cost · Free
  check      ai            AI, with three adversarial lenses · the default · AI, at cost · Free
  sign       credentialed  a signer from practitioners: a PTIN, and a CPA licence or an enrolled agent's card, as the paid preparer for the brand's firm · rules: sign is reserved · $45 + $15 a jurisdiction an act · Launch: roles.signer.pool at :34
  authorize  party         the owner, id-verified · an ask: Form 8879-CORP or 8879-PE · nothing · Free
  file       brand         the brand, under its own EFIN, with the signer's PTIN in the paid-preparer block · rules: file is reserved, and the brand's efin · nothing · every plan: the floor
  prepare    credentialed  a preparer from practitioners: a PTIN, and on a California leg a CTEC registration or a CPA, EA or bar card · rules: prepare is reserved; a rejection no route names · $90 + $15 a jurisdiction an act · Launch: roles.preparer.pool at :34
  tentative  code          tentative, your code · three days out and unfiled · nothing · Free
  pay        system        Treasury and each state · a submit; rules: pay is open · the taxpayer's own payment · Free
  extend     system        the IRS and each state that needs a filing · a submit; rules: extend is open · nothing · Free
  beyond     the steps: subject at :29 · subject.of_record.custodian at :31, Team · subject.keeps at :32 · the assessment, refund and expiring clocks on the subject at :55-57
  plan       Team (services.dev) · the highest line · on Free, you sign and staff prepare: check --fit free services/annual-return.ts

A refusal cites its row, names whose act it is, and meters nothing:

Call
→ POST /returns {"service":"prepare_return","max_usd":100,"key":"prepare_return"}
magic values: none
← 403 act_refused: prepare_return is never performed here: A paid preparer with a PTIN prepares a return: the transcript door prepares none.
  cites  rules 2026-10 · services['transcript'].prepare_return
  next   hand_to_person https://apis.tax/annual-return

→ POST /returns {"service":"represent_taxpayer","max_usd":100,"key":"represent_taxpayer"}
← 403 act_refused: represent_taxpayer is never performed here: A CPA, enrolled agent or attorney represents a taxpayer: the transcript door represents none.
  cites  rules 2026-10 · services['transcript'].represent_taxpayer
  next   hand_to_person https://apis.tax/notice-response

→ POST /returns {"service":"sign_consent","max_usd":100,"key":"sign_consent"}
← 403 act_refused: sign_consent is never performed here: The taxpayer signs the consent: nothing here signs for them.
  cites  rules 2026-10 · services['transcript'].sign_consent
  next   none: the act is never performed here

← GET /owner/events: no return.ordered and no charge, and the key has spent $0

A refused row binds a price too. A fee on a return's refund fails check; the notice response's abatement may carry one:

Run
npx services.dev check services/annual-return.ts
magic values: none
services/annual-return.ts · 45 lines · $1,800 per job, or 20% of the refund, filed 5 days before its deadline, 20% off if late, or we pay the penalty and its interest, up to $5,000, after we ask the IRS to take it off, charged when file is accepted.
  ✗ rules_refused · annual-return price.outcome: rules 2026-10 refuses a fee contingent on the return as prepared. Circular 230 §10.27: no fee is contingent on a return as prepared or amended. Take outcome off the price; a notice's abated penalty may carry one.
    at services/annual-return.ts:60 · price.outcome · rules.ts:16 · price_outcome
✗ 1 to fix
  next    Take outcome off the price.
Run
npx services.dev check services/notice-response.ts --only price
magic values: none
services/notice-response.ts · 19 lines · $299 per job, or $99 if you answer it yourself, or 25% of a penalty abated, $99 at least, within 48 hours, charged on send's receipt.
  price   outcome on abated_usd · 25%, $99.00 at least · when kind is penalty · rules 2026-10 · services['notice-response'].price_outcome, open

A row with in asks more of one leg. A PTIN alone can't claim California's repair; an EA card can:

Call
→ POST /reviews/tsk_7Hq3/claim   # as mbr_7Hq6
magic values: none
← 403 ineligible · credential: prepare on US-CA needs ptin, and ctec, cpa, enrolled agent or attorney, and the verifier holds ptin alone for mbr_7Hq6 · rules 2026-10 · services['annual-return'].prepare
Call
→ POST /reviews/tsk_7Hq3/claim   # as mbr_8Ea1
magic values: none
← 200 claimed · prepare · tsk_7Hq3 · US-CA · $150.00 · held for you 24 hours

A lender the consent doesn't name is refused at $0:

Call
→ POST /returns {"service":"transcript","taxpayer":{"name":"Fern & Co","email":"books@fern.example"},"ein":"98-7654350","tin_last4":"4350","years":[2026],"source":"filed","purpose":"business lending","max_usd":12,"key":"tr-fern-2"}   # Northline Credit's key
magic values: none
← 403 consent_required: disclose needs the taxpayer's §7216 consent to name this lender, and job_4Ta1's names Harbor Bank alone. Ask Maya Fern for one, or order with source: 'ives' and her Form 4506-C.
  cites  rules 2026-10 · services['transcript'].disclose
  next   hand_to_person https://apis.tax/asks/new?consent=7216&for=Northline%20Credit

Where an act happens covers where and in, and Refusals and cures every refusal a row can bring.