Card
A Card is a payment credential a Startup issues to one Worker under one Mandate, with controls compiled from that Mandate.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
form | string | required | singleUse pays one Task and closes; merchant pays one merchant until the Mandate ends; physical is for a Human only. |
status | string | required | Follows its Mandate: frozen while the Mandate is paused, closed once it is revoked or a single-use Card has paid. |
merchants | string[] | The merchants or merchant categories it may pay, compiled from the Mandate. | |
limit | Limit | required | The amount per charge and per period; every interval is set, so the rail’s default never decides. |
task | Task | For a singleUse Card: the Task it pays for, which also holds the receipt. | |
last4 | string | The last four digits; the full number never leaves the rail. |
Object
{
"$id": "https: //api.sb/ quietcopy.com/ cards/ card_1",
"$type": "Card",
"form": "singleUse",
"status": "active",
"merchants": [
"advertising"
],
"limit": "limit_1",
"task": "task_1",
"last4": "4242"
}Relationships
- A Card is carried by one Worker: a Worker carries the Cards issued for its Mandates; the cardholder on the rail is always the Company.
carriedBy, inversecarries. - A Card is funded by one Mandate: a Mandate funds the Cards that spend under it; pausing it freezes them and revoking it closes them.
fundedBy, inversefunds.
Lifecycle
| State | Meaning | Moves to |
|---|---|---|
active (first) | It pays the merchants its Mandate allows, within its Limit. | frozen on Mandate.paused when the Mandate is this Card’s; closed on Mandate.revoked when the Mandate is this Card’s; closed on Mandate.spent when this Card is single-use and paid its Task |
frozen | Its Mandate is paused, so every charge is declined. | active on Mandate.resumed when the Mandate is this Card’s; closed on Mandate.revoked when the Mandate is this Card’s |
closed | Its Mandate is revoked or its single use is spent; the record and its charges stay. | None: it ends here. |
Verbs
getReturns one Card by id.GET /{namespace}/cards/{id}listReturns Cards, newest first, one page at a time.GET /{namespace}/cardsissueIssue creates a Card under a Mandate once the Mandate check passes, with explicit limits on every interval.POST /{namespace}/cards/issue
A Card is kept forever and never edited: it has no update or delete.
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Card.get | Yes | Yes | Yes | Yes |
Card.list | Yes | Yes | Yes | Yes |
Card.issue | Yes | Yes | Yes | No |
Stripe
Issuing Card (issuing.card). The source of truth is db.sb, and Stripe holds a copy written from it.
| Property | Stripe field | Source of truth |
|---|---|---|
status | status | db.sb |
limit | spending_controls.spending_limits[] | db.sb |
merchants | spending_controls.allowed_categories | db.sb |
last4 | last4 | Stripe |
Call it
Issue the latest card with a mandate.Example
The Marketing Lead Agent at a sleep-tracking app holds two Cards under one Mandate. One is a merchant Card for its ad network at $2,000 a month; the other is a singleUse Card for a $450 design tool. Pausing the Mandate freezes both at once.