Create and manage sub-accounts

An advanced Merchant Center account (sometimes referred to as a multi-client account) is designed for larger, more complex businesses that manage multiple sellers or domains. This includes marketplaces, multi-country retailers, or third-party providers who manage accounts on behalf of their clients. A key feature of advanced accounts is the ability to create and manage sub-accountsdirectly under their own account structure.

This guide explains how to use Merchant API to create and manage these sub-accounts. Sub-accounts are distinct Merchant Center accounts that are nested under your advanced account, allowing for centralized management while maintaining separate settings, websites, and data feeds. You can use the Merchant Accounts sub-API to create new sub-accounts under your advanced account.

To create sub-accounts, you must first have an advanced account setup . You must be an account administrator to convert your Merchant Center account to an advanced account, and your account must not have any pending issues . Note that you cannot use Merchant API to move existing standalone Merchant Center accounts into a sub-account relationship under your advanced account.

To create a new sub-account under your advanced account, call accounts.createAndConfigure . In the request body:

  1. Provide the details of the sub-account you want to create in the account field.
  2. Optionally, specify any new authorized users in the users field. User access for the sub-account is also inherited from the parent advanced account.
  3. In the service field, specify accountAggregation and set the provider to the resource name of your advanced account (for example, providers/ {ADVANCED_ACCOUNT_ID} ). This establishes your advanced account as the aggregator for the new sub-account.

Here's an example request to create a sub-account named "merchantStore" under the advanced account {ADVANCED_ACCOUNT_ID} :

  POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure 
 { 
 "account": { 
 "accountName": "merchantStore", 
 "adultContent": false, 
 "timeZone": { 
 "id": "America/New_York" 
 }, 
 "languageCode": "en-US" 
 }, 
 "service": [ 
 { 
 "accountAggregation": {}, 
 "provider": "providers/ {ADVANCED_ACCOUNT_ID} 
" 
 } 
 ] 
 } 
 

A successful call creates the new sub-account and links it under your specified advanced account. The response body will contain the newly created Account resource.

The following samples demonstrate how you can use the accounts.createAndConfigure to create a new sub-account.

Java

  import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.Account 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountAggregation 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest.AddAccountService 
 ; 
 import 
  
 com.google.type.TimeZone 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.merchant.samples.utils.Config 
 ; 
 /** This class demonstrates how to create a sub-account under an advanced account. */ 
 public 
  
 class 
 CreateSubAccountSample 
  
 { 
  
 private 
  
 static 
  
 String 
  
 getParent 
 ( 
 String 
  
 accountId 
 ) 
  
 { 
  
 return 
  
 String 
 . 
 format 
 ( 
 "accounts/%s" 
 , 
  
 accountId 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 createSubAccount 
 ( 
 Config 
  
 config 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 // Obtains OAuth token based on the user's configuration. 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 // Creates service settings using the credentials retrieved above. 
  
 AccountsServiceSettings 
  
 accountsServiceSettings 
  
 = 
  
 AccountsServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 // Creates parent/provider to identify the advanced account into which to insert the subaccount. 
  
 String 
  
 parent 
  
 = 
  
 getParent 
 ( 
 config 
 . 
 getAccountId 
 (). 
 toString 
 ()); 
  
 // Calls the API and catches and prints any network failures/errors. 
  
 try 
  
 ( 
 AccountsServiceClient 
  
 accountsServiceClient 
  
 = 
  
 AccountsServiceClient 
 . 
 create 
 ( 
 accountsServiceSettings 
 )) 
  
 { 
  
 CreateAndConfigureAccountRequest 
  
 request 
  
 = 
  
 CreateAndConfigureAccountRequest 
 . 
 newBuilder 
 () 
  
 . 
 setAccount 
 ( 
  
 Account 
 . 
 newBuilder 
 () 
  
 . 
 setAccountName 
 ( 
 "Demo Business" 
 ) 
  
 . 
 setAdultContent 
 ( 
 false 
 ) 
  
 . 
 setTimeZone 
 ( 
 TimeZone 
 . 
 newBuilder 
 (). 
 setId 
 ( 
 "America/New_York" 
 ). 
 build 
 ()) 
  
 . 
 setLanguageCode 
 ( 
 "en-US" 
 ) 
  
 . 
 build 
 ()) 
  
 . 
 addService 
 ( 
  
 AddAccountService 
 . 
 newBuilder 
 () 
  
 . 
 setProvider 
 ( 
 parent 
 ) 
  
 . 
 setAccountAggregation 
 ( 
 AccountAggregation 
 . 
 getDefaultInstance 
 ()) 
  
 . 
 build 
 ()) 
  
 . 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending Create SubAccount request" 
 ); 
  
 Account 
  
 response 
  
 = 
  
 accountsServiceClient 
 . 
 createAndConfigureAccount 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Inserted Account Name below" 
 ); 
  
 // Format: `accounts/{account} 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 response 
 . 
 getName 
 ()); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 Config 
 . 
 load 
 (); 
  
 createSubAccount 
 ( 
 config 
 ); 
  
 } 
 } 
  
 

PHP

  use Google\ApiCore\ApiException; 
 use Google\Shopping\Merchant\Accounts\V1\Account; 
 use Google\Shopping\Merchant\Accounts\V1\AccountAggregation; 
 use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient; 
 use Google\Shopping\Merchant\Accounts\V1\CreateAndConfigureAccountRequest; 
 use Google\Shopping\Merchant\Accounts\V1\CreateAndConfigureAccountRequest\AddAccountService; 
 use Google\Type\TimeZone; 
 /** 
 * This class demonstrates how to create a sub-account under an MCA account. 
 */ 
 class CreateSubAccount 
 { 
 private static function getParent(string $accountId): string 
 { 
 return sprintf("accounts/%s", $accountId); 
 } 
 public static function createSubAccount(array $config): void 
 { 
 // Gets the OAuth credentials to make the request. 
 $credentials = Authentication::useServiceAccountOrTokenFile(); 
 // Creates options config containing credentials for the client to use. 
 $options = ['credentials' => $credentials]; 
 // Creates a client. 
 $accountsServiceClient = new AccountsServiceClient($options); 
 // Creates parent/provider to identify the MCA account into which to insert the subaccount. 
 $parent = self::getParent($config['accountId']); 
 // Calls the API and catches and prints any network failures/errors. 
 try { 
 $request = new CreateAndConfigureAccountRequest([ 
 'account' => (new Account([ 
 'account_name' => 'Demo Business', 
 'adult_content' => false, 
 'time_zone' => (new TimeZone(['id' => 'America/New_York'])), 
 'language_code' => 'en-US', 
 ])), 
 'service' => [ 
 (new AddAccountService([ 
 'provider' => $parent, 
 'account_aggregation' => new AccountAggregation, 
 ])), 
 ], 
 ]); 
 print "Sending Create SubAccount request\n"; 
 $response = $accountsServiceClient->createAndConfigureAccount($request); 
 print "Inserted Account Name below\n"; 
 // Format: `accounts/{account} 
 print $response->getName() . PHP_EOL; 
 } catch (ApiException $e) { 
 print $e->getMessage(); 
 } 
 } 
 public function callSample(): void 
 { 
 $config = Config::generateConfig(); 
 self::createSubAccount($config); 
 } 
 } 
 $sample = new CreateSubAccount(); 
 $sample->callSample();  
 
 

Python

  from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 Account 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 AccountAggregation 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 AccountsServiceClient 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 CreateAndConfigureAccountRequest 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 def 
  
 get_parent 
 ( 
 account_id 
 ): 
 return 
 f 
 "accounts/ 
 { 
 account_id 
 } 
 " 
 def 
  
 create_sub_account 
 (): 
  
 """Creates a sub-account under an advanced account.""" 
 # Get OAuth credentials. 
 credentials 
 = 
 generate_user_credentials 
 . 
 main 
 () 
 # Create a client. 
 client 
 = 
 AccountsServiceClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Get the parent advanced account ID. 
 parent 
 = 
 get_parent 
 ( 
 _ACCOUNT 
 ) 
 # Create the request. 
 request 
 = 
 CreateAndConfigureAccountRequest 
 ( 
 account 
 = 
 Account 
 ( 
 account_name 
 = 
 "Demo Business" 
 , 
 adult_content 
 = 
 False 
 , 
 time_zone 
 = 
 { 
 "id" 
 : 
 "America/New_York" 
 }, 
 language_code 
 = 
 "en-US" 
 , 
 ), 
 service 
 = 
 [ 
 CreateAndConfigureAccountRequest 
 . 
 AddAccountService 
 ( 
 provider 
 = 
 parent 
 , 
 account_aggregation 
 = 
 AccountAggregation 
 (), 
 ) 
 ], 
 ) 
 # Make the request and print the response. 
 try 
 : 
 print 
 ( 
 "Sending Create SubAccount request" 
 ) 
 response 
 = 
 client 
 . 
 create_and_configure_account 
 ( 
 request 
 = 
 request 
 ) 
 print 
 ( 
 "Inserted Account Name below" 
 ) 
 print 
 ( 
 response 
 . 
 name 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 print 
 ( 
 e 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 create_sub_account 
 () 
  
 

cURL

  curl -X POST \ 
 "https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure" \ 
 -H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \ 
 -H "Content-Type: application/json" \ 
 -d '{ 
 "account": { 
 "accountName": "Demo Business", 
 "adultContent": false, 
 "timeZone": { 
 "id": "America/New_York" 
 }, 
 "languageCode": "en-US" 
 }, 
 "service": [ 
 { 
 "accountAggregation": {}, 
 "provider": "providers/ {ADVANCED_ACCOUNT_ID} 
" 
 } 
 ] 
 }' 
 

Retrieve sub-accounts

To list all sub-accounts for a given advanced account, use the accounts.listSubaccounts method. Provide the ID of your advanced account in the provider field of the request URL.

Here's a sample request:

  GET https://merchantapi.googleapis.com/accounts/v1/accounts/ {ADVANCED_ACCOUNT_ID} 
:listSubaccounts 
 

Here's a sample response from a successful call:

  { 
 "accounts" 
 : 
  
 [ 
  
 { 
  
 "name" 
 : 
  
 "accounts/<var class=\"readonly\">{SUB_ACCOUNT_ID_1}</var>" 
 , 
  
 "accountId" 
 : 
  
 "<var class=\"readonly\">{SUB_ACCOUNT_ID_1}</var>" 
 , 
  
 "accountName" 
 : 
  
 "<var class=\"readonly\">{SUB_ACCOUNT_NAME_1}</var>" 
 , 
  
 "timeZone" 
 : 
  
 { 
  
 "id" 
 : 
  
 "America/Los_Angeles" 
  
 }, 
  
 "languageCode" 
 : 
  
 "en-US" 
  
 }, 
  
 { 
  
 "name" 
 : 
  
 "accounts/<var class=\"readonly\">{SUB_ACCOUNT_ID_2}</var>" 
 , 
  
 "accountId" 
 : 
  
 "<var class=\"readonly\">{SUB_ACCOUNT_ID_2}</var>" 
 , 
  
 "accountName" 
 : 
  
 "<var class=\"readonly\">{SUB_ACCOUNT_NAME_2}</var>" 
 , 
  
 "timeZone" 
 : 
  
 { 
  
 "id" 
 : 
  
 "America/Los_Angeles" 
  
 }, 
  
 "languageCode" 
 : 
  
 "en-US" 
  
 } 
  
 ] 
 } 
 

The following samples demonstrate how to list all sub-accounts for your advanced account.

Java

  import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.Account 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceClient.ListSubAccountsPagedResponse 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.ListSubAccountsRequest 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.merchant.samples.utils.Config 
 ; 
 /** This class demonstrates how to list all the subaccounts of an advanced account. */ 
 public 
  
 class 
 ListSubAccountsSample 
  
 { 
  
 private 
  
 static 
  
 String 
  
 getParent 
 ( 
 String 
  
 accountId 
 ) 
  
 { 
  
 return 
  
 String 
 . 
 format 
 ( 
 "accounts/%s" 
 , 
  
 accountId 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 listSubAccounts 
 ( 
 Config 
  
 config 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 // Obtains OAuth token based on the user's configuration. 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 // Creates service settings using the credentials retrieved above. 
  
 AccountsServiceSettings 
  
 accountsServiceSettings 
  
 = 
  
 AccountsServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 // Creates parent/provider to identify the advanced account from which to list all sub-accounts. 
  
 String 
  
 parent 
  
 = 
  
 getParent 
 ( 
 config 
 . 
 getAccountId 
 (). 
 toString 
 ()); 
  
 // Calls the API and catches and prints any network failures/errors. 
  
 try 
  
 ( 
 AccountsServiceClient 
  
 accountsServiceClient 
  
 = 
  
 AccountsServiceClient 
 . 
 create 
 ( 
 accountsServiceSettings 
 )) 
  
 { 
  
 // The parent has the format: accounts/{account} 
  
 ListSubAccountsRequest 
  
 request 
  
 = 
  
 ListSubAccountsRequest 
 . 
 newBuilder 
 (). 
 setProvider 
 ( 
 parent 
 ). 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending list subaccounts request:" 
 ); 
  
 ListSubAccountsPagedResponse 
  
 response 
  
 = 
  
 accountsServiceClient 
 . 
 listSubAccounts 
 ( 
 request 
 ); 
  
 int 
  
 count 
  
 = 
  
 0 
 ; 
  
 // Iterates over all rows in all pages and prints the datasource in each row. 
  
 // Automatically uses the `nextPageToken` if returned to fetch all pages of data. 
  
 for 
  
 ( 
 Account 
  
 account 
  
 : 
  
 response 
 . 
 iterateAll 
 ()) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 account 
 ); 
  
 count 
 ++ 
 ; 
  
 } 
  
 System 
 . 
 out 
 . 
 print 
 ( 
 "The following count of accounts were returned: " 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 count 
 ); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "An error has occured: " 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 Config 
 . 
 load 
 (); 
  
 listSubAccounts 
 ( 
 config 
 ); 
  
 } 
 } 
  
 

PHP

  use Google\ApiCore\ApiException; 
 use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient; 
 use Google\Shopping\Merchant\Accounts\V1\ListSubAccountsRequest; 
 /** 
 * This class demonstrates how to list all the subaccounts of an advanced account. 
 */ 
 class ListSubAccounts 
 { 
 private static function getParent(string $accountId): string 
 { 
 return sprintf("accounts/%s", $accountId); 
 } 
 public static function listSubAccounts(array $config): void 
 { 
 // Gets the OAuth credentials to make the request. 
 $credentials = Authentication::useServiceAccountOrTokenFile(); 
 // Creates options config containing credentials for the client to use. 
 $options = ['credentials' => $credentials]; 
 // Creates a client. 
 $accountsServiceClient = new AccountsServiceClient($options); 
 // Creates parent/provider to identify the advanced account from which 
 //to list all accounts. 
 $parent = self::getParent($config['accountId']); 
 // Calls the API and catches and prints any network failures/errors. 
 try { 
 // The parent has the format: accounts/{account} 
 $request = new ListSubAccountsRequest(['provider' => $parent]); 
 print "Sending list subaccounts request:\n"; 
 $response = $accountsServiceClient->listSubAccounts($request); 
 $count = 0; 
 // Iterates over all rows in all pages and prints the datasource in each row. 
 // Automatically uses the `nextPageToken` if returned to fetch all pages of data. 
 foreach ($response->iterateAllElements() as $account) { 
 print_r($account); 
 $count++; 
 } 
 print "The following count of accounts were returned: "; 
 print $count . PHP_EOL; 
 } catch (ApiException $e) { 
 print "An error has occured: \n"; 
 print $e->getMessage(); 
 } 
 } 
 public function callSample(): void 
 { 
 $config = Config::generateConfig(); 
 self::listSubAccounts($config); 
 } 
 } 
 $sample = new ListSubAccounts(); 
 $sample->callSample();  
 
 

Python

  from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 AccountsServiceClient 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 ListSubAccountsRequest 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 def 
  
 get_parent 
 ( 
 account_id 
 ): 
 return 
 f 
 "accounts/ 
 { 
 account_id 
 } 
 " 
 def 
  
 list_sub_accounts 
 (): 
  
 """Lists all the subaccounts of an advanced account.""" 
 # Get OAuth credentials. 
 credentials 
 = 
 generate_user_credentials 
 . 
 main 
 () 
 # Create a client. 
 client 
 = 
 AccountsServiceClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Get the parent advanced account ID. 
 parent 
 = 
 get_parent 
 ( 
 _ACCOUNT 
 ) 
 # Create the request. 
 request 
 = 
 ListSubAccountsRequest 
 ( 
 provider 
 = 
 parent 
 ) 
 # Make the request and print the response. 
 try 
 : 
 print 
 ( 
 "Sending list subaccounts request:" 
 ) 
 response 
 = 
 client 
 . 
 list_sub_accounts 
 ( 
 request 
 = 
 request 
 ) 
 count 
 = 
 0 
 for 
 account 
 in 
 response 
 : 
 print 
 ( 
 account 
 ) 
 count 
 += 
 1 
 print 
 ( 
 f 
 "The following count of accounts were returned: 
 { 
 count 
 } 
 " 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 print 
 ( 
 "An error has occured: " 
 ) 
 print 
 ( 
 e 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 list_sub_accounts 
 () 
  
 

cURL

  curl -X GET \ 
 "https://merchantapi.googleapis.com/accounts/v1/accounts/ {ADVANCED_ACCOUNT_ID} 
:listSubaccounts" \ 
 -H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" 
 

If you no longer need to manage a sub-account under your advanced account, you can delete it using the accounts.delete method.

Executing this method requires administrator access to the sub-account being deleted.

Here's a sample request:

  DELETE https://merchantapi.googleapis.com/accounts/v1/accounts/ {SUB_ACCOUNT_ID} 
 
 

If successful, the response body is an empty JSON object, indicating the sub-account has been deleted.

The following samples demonstrate how to delete a sub-account.

Java

  import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountName 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.AccountsServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.DeleteAccountRequest 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.merchant.samples.utils.Config 
 ; 
 /** This class demonstrates how to delete a given Merchant Center account. */ 
 public 
  
 class 
 DeleteAccountSample 
  
 { 
  
 // This method can delete a standalone, advanced account or sub-account. If you delete an advanced 
  
 // account, 
  
 // all sub-accounts will also be deleted. 
  
 // Admin user access is required to execute this method. 
  
 public 
  
 static 
  
 void 
  
 deleteAccount 
 ( 
 Config 
  
 config 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 // Obtains OAuth token based on the user's configuration. 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 // Creates service settings using the credentials retrieved above. 
  
 AccountsServiceSettings 
  
 accountsServiceSettings 
  
 = 
  
 AccountsServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 // Gets the account ID from the config file. 
  
 String 
  
 accountId 
  
 = 
  
 config 
 . 
 getAccountId 
 (). 
 toString 
 (); 
  
 // Creates account name to identify the account. 
  
 String 
  
 name 
  
 = 
  
 AccountName 
 . 
 newBuilder 
 () 
  
 . 
 setAccount 
 ( 
 accountId 
 ) 
  
 . 
 build 
 () 
  
 . 
 toString 
 (); 
  
 // Calls the API and catches and prints any network failures/errors. 
  
 try 
  
 ( 
 AccountsServiceClient 
  
 accountsServiceClient 
  
 = 
  
 AccountsServiceClient 
 . 
 create 
 ( 
 accountsServiceSettings 
 )) 
  
 { 
  
 DeleteAccountRequest 
  
 request 
  
 = 
  
 DeleteAccountRequest 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
 name 
 ) 
  
 // Optional. If set to true, the account will be deleted even if it has offers or 
  
 // provides services to other accounts. Defaults to 'false'. 
  
 . 
 setForce 
 ( 
 true 
 ) 
  
 . 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending Delete Account request" 
 ); 
  
 accountsServiceClient 
 . 
 deleteAccount 
 ( 
 request 
 ); 
  
 // No response returned on success. 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Delete successful." 
 ); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 Config 
 . 
 load 
 (); 
  
 deleteAccount 
 ( 
 config 
 ); 
  
 } 
 } 
  
 

PHP

  use Google\ApiCore\ApiException; 
 use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient; 
 use Google\Shopping\Merchant\Accounts\V1\DeleteAccountRequest; 
 /** 
 * This class demonstrates how to delete a given Merchant Center account. 
 */ 
 class DeleteAccount 
 { 
 private static function getParent(string $accountId): string 
 { 
 return sprintf("accounts/%s", $accountId); 
 } 
 // This method can delete a standalone, advanced account or sub-account. 
 // If you delete an advanced account, all sub-accounts will also be deleted. 
 // Admin user access is required to execute this method. 
 public static function deleteAccount(array $config): void 
 { 
 // Gets the OAuth credentials to make the request. 
 $credentials = Authentication::useServiceAccountOrTokenFile(); 
 // Creates options config containing credentials for the client to use. 
 $options = ['credentials' => $credentials]; 
 // Creates a client. 
 $accountsServiceClient = new AccountsServiceClient($options); 
 // Gets the account ID from the config file. 
 $accountId = $config['accountId']; 
 // Creates account name to identify the account. 
 $name = self::getParent($accountId); 
 // Calls the API and catches and prints any network failures/errors. 
 try { 
 $request = new DeleteAccountRequest([ 
 'name' => $name, 
 // Optional. If set to true, the account will be deleted even if it has offers or 
 // provides services to other accounts. Defaults to 'false'. 
 'force' => true, 
 ]); 
 print "Sending Delete Account request\n"; 
 $accountsServiceClient->deleteAccount($request); // No response returned on success. 
 print "Delete successful.\n"; 
 } catch (ApiException $e) { 
 print $e->getMessage(); 
 } 
 } 
 public function callSample(): void 
 { 
 $config = Config::generateConfig(); 
 self::deleteAccount($config); 
 } 
 } 
 $sample = new DeleteAccount(); 
 $sample->callSample();  
 
 

Python

  from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 AccountsServiceClient 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 DeleteAccountRequest 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 def 
  
 get_parent 
 ( 
 account_id 
 ): 
 return 
 f 
 "accounts/ 
 { 
 account_id 
 } 
 " 
 def 
  
 delete_account 
 (): 
  
 """Deletes a given Merchant Center account.""" 
 # Get OAuth credentials. 
 credentials 
 = 
 generate_user_credentials 
 . 
 main 
 () 
 # Create a client. 
 client 
 = 
 AccountsServiceClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create the account name. 
 name 
 = 
 get_parent 
 ( 
 _ACCOUNT 
 ) 
 # Create the request. 
 request 
 = 
 DeleteAccountRequest 
 ( 
 name 
 = 
 name 
 , 
 force 
 = 
 True 
 ) 
 # Make the request and print the response. 
 try 
 : 
 print 
 ( 
 "Sending Delete Account request" 
 ) 
 client 
 . 
 delete_account 
 ( 
 request 
 = 
 request 
 ) 
 print 
 ( 
 "Delete successful." 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 print 
 ( 
 e 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 delete_account 
 () 
  
 

cURL

  curl -X DELETE \ 
 "https://merchantapi.googleapis.com/accounts/v1/accounts/ {SUB_ACCOUNT_ID} 
?force=true" \ 
 -H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" 
 

Accept the Terms of Service

Sub-accounts inherit the Merchant Center Terms of Service (TOS) that the parent advanced account signed.

Update your business information

You can use the Merchant Accounts API to edit the business information for your sub-accounts.

Design a Mobile Site
View Site in Mobile | Classic
Share by: