shops.transferStart
Start handing the shop to a current worker (owner, on a hosted page). They accept on their own hosted page within 14 days, and ownership moves at once. If the shop has a payments account, it stops taking new payments and only settles what is in flight; the new owner connects their own.
| |
|---|
| Who | Hosted page only (a person does it in the browser) |
| REST | POST /v1/shops/transfers |
| MCP tool | Not an MCP tool |
| Writes | yes, send an Idempotency-Key |
| Area | Shop |
When to use it
Start handing the shop to a current worker (owner, on a hosted page). They accept on their own hosted page within 14 days, and ownership moves at once.
What to tell the owner
Send the person the link. They finish this step themselves on the page; you never do it for them.
| Field | Type | Required |
|---|
shop_id | string (uuid) | yes |
to_membership_id | string (uuid) | yes |
old_owner_stays_as_office | boolean | no |
Example
POST https://doingwork.work/v1/shops/transfers
content-type: application/json
Idempotency-Key: 3f1c...
{
"shop_id": "00000000-0000-4000-8000-000000000000",
"to_membership_id": "00000000-0000-4000-8000-000000000000"
}
Output
| Field | Type | Always there |
|---|
transfer_id | string (uuid) | yes |
shop_id | string (uuid) | yes |
shop | string | yes |
from_person_id | string (uuid) | yes |
from_name | ['string', 'null'] | yes |
to_person_id | string (uuid) | yes |
to_name | ['string', 'null'] | yes |
status | string | yes |
old_owner_stays_as_office | boolean | yes |
started_at | string (date-time) | yes |
expires_at | string (date-time) | yes |
completed_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
cancelled_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
processor_reverify_status | string | yes |
you_are | string | yes |
{
"transfer_id": "00000000-0000-4000-8000-000000000000",
"shop_id": "00000000-0000-4000-8000-000000000000",
"shop": "...",
"from_person_id": "00000000-0000-4000-8000-000000000000",
"from_name": "...",
"to_person_id": "00000000-0000-4000-8000-000000000000",
"to_name": "...",
"status": "...",
"old_owner_stays_as_office": true,
"started_at": "...",
"expires_at": "...",
"completed_at": "...",
"cancelled_at": "...",
"processor_reverify_status": "...",
"you_are": "..."
}
Errors
| Code | Status | What to do |
|---|
invalid_input, invalid_token, rate_limited | | Can happen on any call. See errors. |