API reference
Split rules
A split rule shares each paid order it applies to among saved addresses. Nothing is ever sent by a rule: when an order is paid, the engine creates one payout of kind split_leg per share in awaiting_approval, and a key-holding member approves them in the dashboard, together or one by one. A rule made or changed through the API is awaiting_approval until an Owner or Finance member confirms it with a passkey (split_rule.* has no events of its own; each leg sends the ordinary payout.* events).
The split_rule object
JSON
{
"id": "srl_4n7q0t2w5z8c1f3h6k9m2p4r",
"object": "split_rule",
"livemode": true,
"created": "2026-10-11T14:20:00.000Z",
"name": "Roaster share",
"status": "active",
"scope": {
"kind": "product",
"product": "prod_8m2k5q9x1w4e7r0t3y6u2i5o",
"payment_link": null
},
"shares": [
{
"saved_address": "dst_3f7k0n2p5s8v1x4z7b0d3g6j",
"percent": "30.00"
},
{
"saved_address": "dst_9c2e5h8k1n4q7t0w3z6b9d2g",
"percent": "10.00"
}
],
"kept_percent": "60.00",
"remind_daily": false,
"pending": {
"legs": 14,
"totals": [
{
"asset": "base:usdc",
"amount": "412.800000"
}
]
}
}| Field | Meaning |
|---|---|
status | awaiting_approval (made or changed, not yet confirmed by a key holder; creates no legs), active, inactive. |
scope. | product, payment_link or merchant (every order). At most one active rule applies to an order: product, then payment link, then merchant. |
shares | 1 to 20 entries. Each saved_address must be active and of kind other. percent has two decimals and is above zero; the total is at most 100.00. |
kept_percent | What stays with the merchant: 100 minus the shares. |
pending | Legs waiting for approval. A leg under US$1.00 for one destination waits until that destination's total passes US$1.00. |
| Call | Body | Answer |
|---|---|---|
POST /v1/split_rules | name (1 to 40), scope, shares, remind_daily? | 201 with status: "awaiting_. Idempotency-Key accepted. |
GET /v1/split_rules/{id} | None | The object. |
GET /v1/split_rules | List parameters; status, scope_kind | A list. |
PATCH /v1/split_rules/{id} | Any of name, shares, remind_daily | 200; a change of shares returns the rule to awaiting_approval (the old shares keep applying until it is confirmed). |
DELETE /v1/split_rules/{id} | None | 200 with status: "inactive". Legs already created stay and can still be approved or cancelled. |
Errors: split_rule_invalid, resource_missing, saved_address_not_active. For an Unverified merchant the legs are approved one at a time inside the limit on payouts to others (no batches).
Every field
Fields of the split_rule object
| Field | Type | Meaning |
|---|---|---|
id | string | Unique identifier: the object prefix, an underscore, 24 lower-case Crockford base32 characters. |
object | string | The type of this object. |
livemode | boolean | true for live mode (real money); false for test mode (simulated payments). |
created | string (date-time) | When the object was created. RFC 3339, UTC, milliseconds. |
name | string | The merchant's name for the rule. |
status | string | awaiting_approval: made or changed, not yet confirmed by a key-holding member with a passkey; creates no legs. One of awaiting_approval, active, inactive. |
scope | object | Which paid orders the rule applies to. |
scope. | string | One of product, payment_link, merchant. |
scope. | string or null | The prod_ id when the scope is a product; null otherwise. |
scope. | string or null | The plink_ id when the scope is a payment link; null otherwise. |
shares | array of objects | 1 to 20 shares; the percents total at most 100.00. |
shares[]. | string | The dst_ id of the active saved address that receives the share. |
shares[]. | string | Its share of each order, with two decimals. |
kept_percent | string | What stays with the merchant: 100 minus the shares. |
remind_daily | boolean | true when the Owners and Finance members are reminded each day of legs waiting for approval. |
pending | object | Legs made by the rule and waiting for approval. |
pending. | integer | How many. |
pending. | array of objects | Their total per asset. |