> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update account domain

> Set or change an account's registered domain

`PATCH /api/v2/accounts/{customerId}/domain`

Sets the registered domain on an account. The domain gates domain auto-join and, for seller accounts, ties the account to its storefront. Requires the `ADMIN` role on the target account (direct membership, organization admin via the hierarchy, or SuperAdmin).

## Why buyers should set it

For buyer accounts, the registered domain is the buying organization sellers see. Interchange sends it as the AdCP `account.operator` on every account-scoped task (product discovery, account setup, booking, updates, cancellations, and delivery reporting), and sellers key their account for you on the pair of that operator domain and the advertised brand's domain. The account they open under that key is what carries your credit terms, approval state, and invoices with them.

Until an account has a registered domain, Interchange identifies it as `interchange.io`, meaning the buy is operating through the platform rather than under your own organization. That is accurate but less specific than sellers usually want, and every buyer without a domain shares one seller-side account. Setting your domain moves your activity onto an account in your own name.

Setting or changing the domain changes that key, so a seller you already transact with will see a new account on the next task. Existing media buys stay on the account they were created under. Coordinate the change with any seller you have live buys with.

## Request

```bash curl theme={null}
curl -X PATCH https://api.interchange.io/api/v2/accounts/200/domain \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerDomain": "retail.northwind.example"
  }'
```

## Parameters

| Field            | Type   | Required | Notes                                                                    |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `customerId`     | string | Yes      | Path parameter. ID of the account to update                              |
| `customerDomain` | string | Yes      | Registered domain to set (max 255). Lowercase host form, e.g. `acme.com` |

## Response

```json theme={null}
{
  "id": 200,
  "customerDomain": "retail.northwind.example",
  "customerDomainApproved": true
}
```

| Field                    | Type           | Notes                                                                                                     |
| ------------------------ | -------------- | --------------------------------------------------------------------------------------------------------- |
| `id`                     | integer        | Account ID                                                                                                |
| `customerDomain`         | string \| null | The domain now registered on the account                                                                  |
| `customerDomainApproved` | boolean        | Whether the domain was automatically verified (true when an active member's email matches the new domain) |

## Errors

* `400 VALIDATION_ERROR` — malformed `customerDomain`.
* `401 UNAUTHORIZED` — caller is not an `ADMIN` on the target account.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Account tasks" href="/v2/storefront/account/tasks" icon="list-check">
    All account operations
  </Card>

  <Card title="Update membership" href="/v2/storefront/account/tasks/update-membership" icon="user-gear">
    Enable domain auto-join
  </Card>

  <Card title="Account overview" href="/v2/storefront/account/overview" icon="building">
    Domain and hierarchy concepts
  </Card>
</CardGroup>
