The Accounts API is divided into a collection of resources to allow managing
your Merchant Center accounts more efficiently with more precise control across
different aspects of your account.

This guide explains the key changes and helps you migrate your existing account
management integration from Content API for Shopping to Merchant API.

## From one resource to many

In Content API for Shopping, the `Account` resource was a monolithic object
containing everything from the account name and website URL to user lists and
business information.

Merchant API splits this into several smaller, more focused resources. This
change allows for more targeted and efficient API calls. For example, to update
only your business address, you now make a `PATCH` request to the `BusinessInfo`
resource instead of updating the entire `Account` object.

Here is a summary of how the concepts from the Content API for Shopping
`Account` resource map to the new resources in the Merchant API:

- [**Core account details**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-core-account-information) (ID, name, adult content settings) remain in the [`Account`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts) resource.
- [**Business information**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-business-information) (address, phone number, customer service) is now managed by the [`BusinessInfo`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.businessInfo) resource.
- [**Website URL and claiming**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-your-homepage) is handled by the [`Homepage`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.homepage) resource.
- [**User management**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-users) is handled by the [`User`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.users) resource.
- [**Account relationships**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-account-relationships-and-services) (links to advanced accounts, third-party providers, and other Google services) are managed by the [`AccountRelationship`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.relationships) and [`AccountService`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.services) resources.
- [**Business identity attributes**](https://developers.google.com/merchant/api/guides/compatibility/accounts#manage-business-identity) (for example, black-owned, women-owned) are managed by the [`BusinessIdentity`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.businessIdentity) resource.
- **Terms of Service (ToS) agreements** , a new feature, are managed by the [`TermsOfService`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/termsOfService) and [`TermsOfServiceAgreementState`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.termsOfServiceAgreementStates) resources.

## New capabilities

Merchant API also introduces new capabilities for account management that were
not available in Content API for Shopping:

- **Terms of Service:** Programmatically retrieve and accept Terms of Service using the [`TermsOfService`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/termsOfService) and [`TermsOfServiceAgreementState`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.termsOfServiceAgreementStates) resources.
- **Account creation** : The [`accounts.createAndConfigure`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts/createAndConfigure) method now supports creating accounts with relationships (such as `accountManagement`), setting an `alias`, and suppressing email verification using the `user.verificationMailSettings.verificationMailMode` field in favor of API-based verification using the new `accounts.verifySelf` method.
- **Account Access by Alias:** Access accounts using a `providerId~accountAlias` format, providing a consistent way for businesses that manage multiple accounts to use their own account identifiers.

## Requests

This table provides a consolidated comparison of the request URLs for common
account management tasks between Content API for Shopping and Merchant API.

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Get account | `GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts/{accountId}` | `GET https://merchantapi.googleapis.com/accounts/v1/accounts/{account}` |
| Get account by alias | Not directly available | `GET https://merchantapi.googleapis.com/accounts/v1/accounts/{provider}~{alias}` |
| List sub-accounts | `GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts` | `GET https://merchantapi.googleapis.com/accounts/v1/accounts/{provider}:listSubaccounts` |
| Create sub-account | `POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts` | `POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure` |
| Update account data | `PUT https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts/{accountId}` | `PATCH` on the appropriate resource. For example, to update the account name: `PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{account}` |
| Delete sub-account | `DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts/{accountId}` | `DELETE https://merchantapi.googleapis.com/accounts/v1/accounts/{account}` |
| Claim website | `POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts/{accountId}/claimwebsite` | `POST https://merchantapi.googleapis.com/accounts/v1/accounts/{account}/homepage:claim` |
| Link accounts | `POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/accounts/{accountId}/link` | `POST https://merchantapi.googleapis.com/accounts/v1/accounts/{account}/services:propose` |

## Manage core account information

The [`Account`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts) resource in
Merchant API contains the essential details of a Merchant Center account, such
as its name, ID, and basic settings.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Get account details | `GET /content/v2.1/{merchantId}/accounts/{accountId}` (accessing core attributes like `name`, `adult_content`) | `GET /accounts/v1/accounts/{account}` |
| Create a sub-account | `POST /content/v2.1/{merchantId}/accounts` | `POST /accounts/v1/accounts:createAndConfigure` |
| Update account details | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating core attributes) | `PATCH /accounts/v1/accounts/{account}` |
| Delete a sub-account | `DELETE /content/v2.1/{merchantId}/accounts/{accountId}` | `DELETE /accounts/v1/accounts/{account}` |

### Detailed field comparison

| Content API for Shopping (`Account`) | Merchant API (`Account`) | Notes |
|---|---|---|
| `id` | `account_id` | The numeric ID is now an output-only field. The primary identifier is the resource `name`. |
| `name` | `account_name` | The human-readable name of the account. |
| `language` | `language_code` | The field name is now `language_code`. |

## Manage business information

Use the
[`BusinessInfo`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.businessInfo)
resource to manage public information about your business, such as your address
and customer service contacts. This replaces the `businessInformation` object in
Content API for Shopping.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Get business information | `GET /content/v2.1/{merchantId}/accounts/{accountId}` (accessing the `business_information` attribute) | `GET /accounts/v1/accounts/{account}/businessInfo` |
| Update business information | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `business_information` attribute) | `PATCH /accounts/v1/accounts/{account}/businessInfo` |

### Detailed field comparison

| Content API for Shopping (`business_information`) | Merchant API (`BusinessInfo`) | Notes |
|---|---|---|
| `phone_number` | `phone` | The field is now `phone` and uses `google.type.PhoneNumber`. |
| `customer_service.url` | `customer_service.uri` | The field name is now `uri`. |

## Manage your homepage

To manage your store's website URL and perform verification and claiming, use
the [`Homepage`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.homepage)
resource. This replaces the `websiteUrl` field and the `accounts.claimwebsite`
method from Content API for Shopping.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Get homepage URL | `GET /content/v2.1/{merchantId}/accounts/{accountId}` (accessing the `website_url` attribute) | `GET /accounts/v1/accounts/{account}/homepage` |
| Update homepage URL | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `website_url` attribute) | `PATCH /accounts/v1/accounts/{account}/homepage` |
| Claim homepage | `POST /content/v2.1/{merchantId}/accounts/{accountId}/claimwebsite` | `POST /accounts/v1/accounts/{account}/homepage:claim` |
| Unclaim homepage | Not available | `POST /accounts/v1/accounts/{account}/homepage:unclaim` |

### Detailed field comparison

| Content API for Shopping (`Account`) | Merchant API (`Homepage`) | Notes |
|---|---|---|
| `website_url` | `uri` | The URL of the store's homepage. |
| Not directly available | `claimed` | A boolean field that is `true` if the homepage is claimed. |

## Manage users

The [`User`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.users) resource
lets you manage who can access a Merchant Center account. This replaces the
`users` array within the `Account` resource. A key difference is the user
creation process. In Merchant API, adding a user sends an invitation. The user
must accept the invitation before they can access the account.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| List users | `GET /content/v2.1/{merchantId}/accounts/{accountId}` (accessing the `users` attribute) | `GET /accounts/v1/accounts/{account}/users` |
| Create a user | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `users` attribute) | `POST /accounts/v1/accounts/{account}/users` |
| Update a user | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `users` attribute) | `PATCH /accounts/v1/accounts/{account}/users/{email}` |
| Delete a user | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `users` attribute) | `DELETE /accounts/v1/accounts/{account}/users/{email}` |

### Detailed field comparison

| Content API for Shopping (`users` array object) | Merchant API (`User` resource) | Notes |
|---|---|---|
| `email_address` | `name` (in format `accounts/{account}/users/{email}`) | The user's email is now part of the resource name. |
| `admin`, `order_manager`, `reporting_manager`, etc. | `access_rights` | Access rights are now consolidated into a repeated enum field. |
| Not available | `state` | A new output-only field indicating if the user is `PENDING` or `VERIFIED`. |

## Manage account relationships and services

In Content API for Shopping, relationships were managed with `accounts.link`.
Merchant API introduces a more explicit model with
[`AccountService`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.services)
and
[`AccountRelationship`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.relationships)
resources, requiring a handshake process (propose and accept).

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Link accounts | `POST /content/v2.1/{merchantId}/accounts/{accountId}/link` | `POST /accounts/v1/accounts/{account}/services:propose` |
| List linked accounts | `GET /content/v2.1/{merchantId}/accounts/{accountId}/listlinks` | `GET /accounts/v1/accounts/{account}/relationships` and `GET /accounts/v1/accounts/{account}/services` |

### Detailed field comparison

| Content API for Shopping (`AccountLink`) | Merchant API (`AccountService`, `AccountRelationship`) | Notes |
|---|---|---|
| `linked_account_id` | `provider` (in `AccountService`) | The ID of the account providing the service. |
| `service` | `service_type` (in `AccountService`) | The type of service being provided (e.g., `ACCOUNT_AGGREGATION`). |
| `status` | `handshake.approval_state` (in `AccountService`) | The status of the link (e.g., `PENDING`, `ESTABLISHED`). |

## Account tax settings

The `accounttax` service from the Content API for Shopping is not available in
Merchant API. It is no longer required to provide US sales tax, for more
information see
[Merchant Center product data specification update 2025](https://support.google.com/merchants/answer/16098264).

## Manage business identity

Use the
[`BusinessIdentity`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts.businessIdentity)
resource to self-declare attributes about your business. This replaces the
`businessIdentity` object in Content API for Shopping.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| Get business identity | `GET /content/v2.1/{merchantId}/accounts/{accountId}` (accessing the `business_identity` attribute) | `GET /accounts/v1/accounts/{account}/businessIdentity` |
| Update business identity | `PUT /content/v2.1/{merchantId}/accounts/{accountId}` (updating the `business_identity` attribute) | `PATCH /accounts/v1/accounts/{account}/businessIdentity` |

### Detailed field comparison

| Content API for Shopping (`business_identity`) | Merchant API (`BusinessIdentity`) | Notes |
|---|---|---|
| `black_owned.self_identified` (boolean) | `black_owned.identity_declaration` (enum) | The boolean is replaced by an enum (`SELF_IDENTIFIES_AS`, `DOES_NOT_SELF_IDENTIFY_AS`) for more explicit declaration. This applies to all identity attributes. |
| `include_for_promotions` (boolean) | `promotions_consent` (enum) | A global boolean is replaced by a more descriptive enum (`PROMOTIONS_CONSENT_GIVEN`, `PROMOTIONS_CONSENT_DENIED`). |

## List accounts

In Content API for Shopping the only type of advanced account was a
'Multi-Client Account (MCA)' and it exposed an `accounts.list` method to list
the accounts of the given Multi-Client Account. Advanced accounts in
Merchant API are much more powerful, allowing a broader range of account types
and relationships. To allow a straightforward migration for advanced accounts,
Merchant API provides a direct equivalent to Content API for Shopping's
`accounts.list` as a
[`accounts.listSubaccounts`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts/listSubaccounts)
method. We are introducing a new, more powerful
[`accounts.list`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts/list) method
that allows advanced account filtering.

### Request comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| List accounts of an advanced account | `GET /content/v2.1/{merchantId}/accounts` | `GET /accounts/v1/accounts/{providerId}:listSubaccounts` |
| List all accessible accounts | Not available | `GET /accounts/v1/accounts` |

### Detailed field comparison (Request parameters)

| Content API for Shopping (`accounts.list`) | Merchant API (`accounts.listSubaccounts`) | Notes |
|---|---|---|
| `merchant_id` (path parameter) | `provider` (path parameter) | The ID of the advanced account in the format `accounts/{account}`. |
| `max_results` | `page_size` | The maximum number of accounts to return. |