---
title: "Pay"
url: https://services.dev/docs/people/pool/pay
captured: [legal-check.txt, pool-pay.txt]
---
# Pay

URL: https://services.dev/docs/people/pool/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](https://services.dev/docs/people/pool/fill.md) 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](https://services.dev/docs/people/pool/register.md).

## Three moments

| 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:

```txt
→ GET /me/earnings/tsk_7Hq2   # as mbr_eligible: one Task, from the act to the bank
```

```txt title="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](https://services.dev/docs/people/pool/track.md#contests) can record one. Pay accrued on that act is then reversed, and nothing else is.

## Your payout account

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:

```txt
→ GET /me/earnings?period=2026-10   # as mbr_eligible: the month, a line per brand
```

```txt title="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](https://services.dev/docs/people/pool/door.md#the-demand-board) publish that number:

```txt
→ GET /owner/pools/translators/payouts?week=2026-W44   # the owner: the same payout, from the brand's side
```

```txt title="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
```

## Every schedule

| `payouts` | 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.

## Other lines a member earns

| 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](https://services.dev/docs/service/time.md#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.

## Whose fee it is

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:

```bash
npx services.dev check
```

```txt title="captured/legal-check.txt · magic values: none"
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
services/provisional-patent.ts · 24 lines · $199 per job, within 5 days, charged on file's receipt.
  ledger  +$199.00 · AI $2.10 (example) · practitioner $150.00 (rail brand) · coverage $4.00 · you $42.90
services/trademark-response.ts · 21 lines · $349 per job, within 48 hours, charged on file's receipt.
  ledger  +$349.00 · attorney's fee $175.00, sold by the attorney (rail member) · brand $174.00 · AI $2.10 (example) · coverage $4.00 · you $167.90
```

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](https://services.dev/docs/people/pool/door.md#the-member-charter) holds every Pool to it.

## How it earns

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.

## Every form

| 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? }` | &#123; at: `'act'`, after: `'2d'` &#125;, 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. |

## What it writes

| 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. |

---

- Up: [Pool(): your marketplace](https://services.dev/docs/people/pool.md)
- Previous: [Tasks: offered, never assigned](https://services.dev/docs/people/pool/tasks.md)
- Next: [Conflicts without disclosure](https://services.dev/docs/people/pool/conflicts.md)
