---
referrals: 3
kind: program
payer: domain:shop.example
code: example_shop
category: creator
status: open
at: 2026-10-30T00:00:00Z
net_of: tax, discount
---
# Example shop creator links

Rates, amounts and names in this file are placeholders, not recommendations or market rates. Each party sets its own terms.

In plain words: a creator earns 13% of net on a sale within 7 days of a post. A link earns only if its token says the post disclosed the pay. A bare short link says nothing, so here it earns nothing.

Change first: `payer`, `code`, the rate and the window. Tell creators to disclose in the post itself: a field in a record is not a disclosure.

## Rules

### sale_share

- on: purchase
- basis: percent
- rate: 13%
- of: net

## Attribution

- model: last_touch
- window_days: 7
- allowed_kinds: link, content, code

## Settlement

- holdback_days: 30
- clawback_days: 30
- cycle: monthly
- minimum_payout: 25.00
- payout_asset: USD
- rails: ach
- on_end: forfeit_below_minimum

## Disclosure

- required: true
- strict: true

## Example

Made-up lines. Ana's token says the post was disclosed, and the sale is two days later. Bob's bare link states nothing. Cara's token is disclosed, but the sale comes 19 days after it, past the window.

To run it, save this file as `REFERRALS.md` and these lines as `referrals.jsonl`, then run `node referrals.mjs run REFERRALS.md referrals.jsonl --as-of 2027-01-15T00:00:00Z`.

As of: 2027-01-15T00:00:00Z

```jsonl
{"type":"agreement","code":"ana","partner":"domain:ana.example","partner_role":"creator"}
{"type":"agreement","code":"bob","partner":"domain:bob.example","partner_role":"creator"}
{"type":"agreement","code":"cara","partner":"domain:cara.example","partner_role":"creator"}
{"type":"event","at":"2026-11-05T00:00:00Z","kind":"purchase","source":"billing:ord_1201","customer":"cu_d6e7f8091a2b3c4e","amount":"200.00","net":"200.00","asset":"USD","token":"rf1.example_shop.ana.post1.tnwg00.dhn.n.-"}
{"type":"event","at":"2026-11-06T00:00:00Z","kind":"purchase","source":"billing:ord_1202","customer":"cu_e7f8091a2b3c4d5f","amount":"200.00","net":"200.00","asset":"USD","token":"rf1.example_shop.bob"}
{"type":"event","at":"2026-11-20T00:00:00Z","kind":"purchase","source":"billing:ord_1203","customer":"cu_f8091a2b3c4d5e60","amount":"200.00","net":"200.00","asset":"USD","token":"rf1.example_shop.cara.post2.tnsqo0.dhw.n.-"}
```

## Worked result

Computed by `run_ledger` as of 2027-01-15T00:00:00Z, on the made-up lines above. Computed amounts are arithmetic on the records and terms you sent. They do not say what anyone owes. Your contract decides that.

| Event | Who | Working | Computed | Note |
|---|---|---|---|---|
| purchase, 2026-11-05 | ana | 13% of 200.00 | 26.00 |  |
| purchase, 2026-11-06 | bob | This touch is not marked as disclosed, or claims to be unpaid, so it earns nothing. | 0.00 | X06 |
| purchase, 2026-11-20 | cara | The touch is older than the program's window. | 0.00 | X02 |

| Payee | Asset | Earned | Reversed | Net | Held | Payable |
|---|---|---|---|---|---|---|
| ana | USD | 26.00 | 0.00 | 26.00 | 0.00 | 26.00 |


## Why these settings

`strict` makes the disclosure mark a condition of pay for every kind of touch, and a short window fits how fast a post stops mattering.
