Pay

The running jobjob_7Hq2 · waiting · on approval · $49.00 held

A member's pay accrues when the gate accepts their act, becomes payable on its own clock, and is paid on the Pool's schedule to one payout account. Nothing claws it back except a contest ruling that records bad faith.

Pay answers one question: when is a member's money theirs, and how does it reach them?

A role's pay is fixed when its Task posts, and the fill ladder only raises it. Every act the gate accepts is paid at the fee as it stands: an attestation, a send-back, a decline, or a completed Task in a work register.

MomentWhenEvent
Accruedthe gate accepts the actpay.accrued
Payableafter the act, two days unless the Pool sets itpay.payable
Paidthe Pool's next payout, to the member's payout accountpay.paid

One captured Task, from the act to the bank:

Call
→ GET /me/earnings/tsk_7Hq2   # as mbr_eligible: one Task, from the act to the bank
200 · tsk_7Hq2 · lingua · translator · sign · $30.00 · paid · magic values: member = mbr_eligible
  accrued   Tue 27 Oct 14:02   attestation accepted     pay.accrued   $30.00
  payable   Thu 29 Oct 14:02   after: '2d'              pay.payable   $30.00
  paid      Fri 30 Oct 09:00   payout po_7Hq2, $110.00  pay.paid      $30.00
  account   acct_…4242, connected at /join · one for every Pool and brand
  holds     none: past the first 3 Tasks (hold_first)
  final     yours · only a ruling that records bad faith takes it back

Accrued pay is the member's. A buyer's send-back, a withdrawal, a refund or a chargeback never takes it back, because the brand carries those on its own account. The one exception is a recorded finding of bad faith, and only a contest ruling can record one. Pay accrued on that act is then reversed, and nothing else is.

A member connects a payout account once, at the last step of /join, on Stripe. The same account serves every Pool and every brand they work for, so one payout carries a line per brand, and one set of tax forms a year covers them all:

Call
→ GET /me/earnings?period=2026-10   # as mbr_eligible: the month, a line per brand
200 · mbr_eligible · October 2026 · $2,500.00 earned · $2,410.00 paid · $60.00 payable · $30.00 accrued · magic values: member = mbr_eligible
  lingua     58 Tasks   $1,740.00   attest 52 · send back 4 · decline 2
  captions   36 Tasks     $720.00   attest 36
  referral    1         $25.00     mbr_7Hr2 finished probation
  kill        1         $15.00     tsk_7Hp9 withdrawn after you cleared it
  payouts    po_7Hn1 · po_7Hp4 · po_7Hq2 · po_7Hq8, every Friday
  tax forms  one set for 2026 · a line per brand · ready by 31 Jan

The owner reads the same payout from the brand's side, with the median time from act to bank. Pool health and the door's demand board publish that number:

Call
→ GET /owner/pools/translators/payouts?week=2026-W44   # the owner: the same payout, from the brand's side
200 · translators · week 44 · 41 members paid · $6,210.00 · median 2.1 days from act to bank · magic values: member = mbr_eligible
  po_7Hq2   mbr_eligible   $110.00   4 Tasks   lingua $90.00 · captions $20.00
payoutsPayablePaid/earnings shows
left out2 days after the actevery Fridayeach act, its payable date and the Friday it lands
{ at: 'act', after: '1d' }1 day after the actevery Fridaythe same, a day sooner
'same-day'after the acteach evening, once payableeach act, and today's payout
'weekly'after the actevery Fridayeach act, and this week's payout
{ schedule, hold_first: { tasks: 3, for: '7d' } }a new member's first 3 Tasks, 7 days after the act; then afteron schedulethe hold, and the Task that lifts it
{ schedule, instant_fee: 'brand' }after the acton schedule, or at once when the member asksan instant payout, its fee paid by the brand
{ schedule, instant_fee: 'member' }after the acton schedule, or at once when the member asksan instant payout, with the processor's fee shown before they choose it

A member chooses an instant payout. It is never the only way to be paid, and services.dev takes nothing from its fee.

LineKeyAccrues when
The kill sharekill, '50%' unless seta Task the member cleared is withdrawn because the job ended. In a work register, a claimed Task the client cancels inside notice accrues it too. A Task only claimed accrues nothing
A referralgrow.referral_usdthe member they referred finishes probation
A standby retainerstandby: { window, hours, retainer_usd }each week of the window the member keeps the hours open, whether or not a Task comes
A contest rulingthe original Task's feethe peer rules a contest, upheld or overturned

Standby runs on the tick. While its window is open, members who commit their hours are offered each Task first, and each week the retainer accrues to every member who kept the hours open, from your line, paid on the Pool's schedule. A member who drops their hours stops accruing from that week, and a retainer already accrued is theirs.

The rules row decides who sells a member's fee. On the brand's rail, the brand pays the member. On the member's rail, the member sells it on their own connected account at the buyer's checkout, and the receipt names two sellers. The legal example has both:

captured/legal-check.txt · magic values: none
$ npx services.dev check
services/contract-review.ts · 16 lines · $99 per job, within 48 hours, charged on acceptance.
  ledger  +$99.00 · attorney's fee $50.00, sold by the attorney (rail member) · brand $49.00 · AI $1.26 (example) · coverage $4.00 · you $43.74
services/demand-letter.ts · 26 lines · $149 per job, within 48 hours, charged on send's receipt.
  ledger  +$149.00 · attorney's fee $75.00, sold by the attorney (rail member) · brand $74.00 · AI $2.10 (example) · coverage $4.00 · you $67.90
services/docket-watch.ts · 10 lines · $12 per month, charged at the start of each month.
  ledger  +$12.00 · AI $0.84 (example) · watcher $4.00 · coverage $4.00 · you $3.16
services/formation.ts · 30 lines · $299 per job, within 48 hours, charged on form_entity's receipt.
  ledger  +$299.00 · attorney's fee $60.00 at advise_entity, sold by the attorney (rail member) · attorney's fee $60.00 at advise_83b, sold by the attorney (rail member) · brand $179.00 · AI $0.84 (example) · coverage $8.00 · you $170.16

Either way, the member is never charged to work. The one member charge a Pool may carry is a flat software fee, fee, shown on the door before anyone joins. The door's charter holds every Pool to it.

Pay is one line of the job's charge, and it is the member's: you = charge − AI − pay − …. A raise the ladder makes comes out of the brand's share, capped so a brand-funded raise never loses money. services.dev's take never touches a member's pay.

KeyWrittenLeft outDoes
roles.<r>.paynumber | { usd: number; on: Outcome }nothingWhat the act earns, fixed when its Task posts.
payouts{ at: 'act'; after?: Within } | 'same-day' | 'weekly' | { schedule; hold_first?; instant_fee? }{ at: 'act', after: '2d' }, paid every FridayWhen pay is payable, and when payouts move it.
killPct'50%'The share of a cleared Task's fee a member keeps when the job ends under them.
standby{ window: string; hours: number; retainer_usd: number }noneCommitted hours for a dated window, paid as a weekly retainer.
grow.referral_usdnumbernoneA bonus for a referred member who finishes probation.
fee{ usd: number; per: 'month' }noneThe one member charge a Pool may carry: a flat software fee, shown on the door.
EventAudienceSays
pay.accruedmember, ownerPay for an accepted act, at the fee as it stood, or a kill share, a referral, a retainer or a ruling.
pay.payablemember, ownerAccrued pay became payable, after the act.
pay.paidmember, ownerA payout moved payable pay to the member's account: one payout, a line per brand.