Pay
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.
| Moment | When | Event |
|---|---|---|
| Accrued | the gate accepts the act | pay.accrued |
| Payable | after the act, two days unless the Pool sets it | pay.payable |
| Paid | the Pool's next payout, to the member's payout account | pay.paid |
One captured Task, from the act to the bank:
→ GET /me/earnings/tsk_7Hq2 # as mbr_eligible: one Task, from the act to the bank 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 backAccrued 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:
→ GET /me/earnings?period=2026-10 # as mbr_eligible: the month, a line per brand 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 JanThe 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:
→ GET /owner/pools/translators/payouts?week=2026-W44 # the owner: the same payout, from the brand's side po_7Hq2 mbr_eligible $110.00 4 Tasks lingua $90.00 · captions $20.00payouts | Payable | Paid | /earnings shows |
|---|---|---|---|
| left out | 2 days after the act | every Friday | each act, its payable date and the Friday it lands |
{ at: 'act', after: '1d' } | 1 day after the act | every Friday | the same, a day sooner |
'same-day' | after the act | each evening, once payable | each act, and today's payout |
'weekly' | after the act | every Friday | each 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 after | on schedule | the hold, and the Task that lifts it |
{ schedule, instant_fee: 'brand' } | after the act | on schedule, or at once when the member asks | an instant payout, its fee paid by the brand |
{ schedule, instant_fee: 'member' } | after the act | on schedule, or at once when the member asks | an 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.
| Line | Key | Accrues when |
|---|---|---|
| The kill share | kill, '50%' unless set | a 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 referral | grow.referral_usd | the member they referred finishes probation |
| A standby retainer | standby: { window, hours, retainer_usd } | each week of the window the member keeps the hours open, whether or not a Task comes |
| A contest ruling | the original Task's fee | the 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:
$ 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.
| Key | Written | Left out | Does |
|---|---|---|---|
roles.<r>.pay | number | { usd: number; on: Outcome } | nothing | What 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 Friday | When pay is payable, and when payouts move it. |
kill | Pct | '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 } | none | Committed hours for a dated window, paid as a weekly retainer. |
grow.referral_usd | number | none | A bonus for a referred member who finishes probation. |
fee | { usd: number; per: 'month' } | none | The one member charge a Pool may carry: a flat software fee, shown on the door. |
| Event | Audience | Says |
|---|---|---|
pay.accrued | member, owner | Pay for an accepted act, at the fee as it stood, or a kill share, a referral, a retainer or a ruling. |
pay.payable | member, owner | Accrued pay became payable, after the act. |
pay.paid | member, owner | A payout moved payable pay to the member's account: one payout, a line per brand. |