---
title: legal.acceptShopTerms | Doing Work API
description: The shop owner, on the hosted shop terms page, ticks the box and accepts the current Terms of Service for the shop (accept_terms_version). Records the time
url: https://doingwork.work/docs/reference/legal-acceptshopterms/
---

# legal.acceptShopTerms

The shop owner, on the hosted shop terms page, ticks the box and accepts the current Terms of Service for the shop (accept_terms_version). Records the time, version, person, IP address and browser.

|  |  |
|---|---|
| Who | Hosted page only (a person does it in the browser) |
| REST | `POST /v1/legal/shop-terms/accept` |
| MCP tool | Not an MCP tool |
| Writes | yes, send an Idempotency-Key |
| Area | [Sign-in and agent access](https://doingwork.work/docs/reference/#sign-in-and-agent-access) |

## When to use it

To start a new shop for someone, call shops.signUp once with accept_terms true, the shop name, the jurisdiction and the owner's name and email. That accepts the Terms of Service for the shop.

## What to tell the owner

Send the person the link. They finish this step themselves on the page; you never do it for them.

## Input

| Field | Type | Required |
|---|---|---|
| `shop_id` | string | yes |
| `accept_terms_version` | string | yes |

## Example

```http
POST https://doingwork.work/v1/legal/shop-terms/accept
content-type: application/json
Idempotency-Key: 3f1c...

{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "accept_terms_version": "..."
}
```

## Output

| Field | Type | Always there |
|---|---|---|
| `shop_id` | string | yes |
| `shop` | string | yes |
| `current_version` | string | yes |
| `terms_url` | string | yes |
| `owner_accepted_current` | boolean | yes |
| `owner_accepted_at` | ['string', 'null'] | yes |
| `terms_emailed_at` | ['string', 'null'] | yes |
| `opt_out_window_start` | ['string', 'null'] | yes |
| `opt_out_deadline` | ['string', 'null'] | yes |
| `opt_out_open` | boolean | yes |
| `opted_out` | boolean | yes |
| `opted_out_at` | ['string', 'null'] | yes |
| `opted_out_by` | ['string', 'null'] | yes |
| `page_url` | string | yes |
| `acceptance_id` | string | yes |

```json
{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "shop": "...",
  "current_version": "...",
  "terms_url": "...",
  "owner_accepted_current": true,
  "owner_accepted_at": "...",
  "terms_emailed_at": "...",
  "opt_out_window_start": "...",
  "opt_out_deadline": "...",
  "opt_out_open": true,
  "opted_out": true,
  "opted_out_at": "...",
  "opted_out_by": "...",
  "page_url": "...",
  "acceptance_id": "00000000-0000-4000-8000-000000000000"
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
