> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-60c89f9a-mintlify-audit-missing-sections-1778528421.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a Product Configuration

> **PATCH** `/v2/accounts/:account_id/products/:product_id`

Use this endpoint to update a product configuration.

### Request

````Curl: Curl  theme={null}
curl -X PATCH https://api.razorpay.com/v2/accounts/acc_HQVlm3bnPmccC0/products/acc_prd_HEgNpywUFctQ9e/ \
-u : \
-H "Content-Type: application/json" \
-d '{
   "settlements":{
      "account_number":"1234567890123456",
      "ifsc_code":"HDFC0000317",
      "beneficiary_name":"Gaurav Kumar"
   },
   "tnc_accepted":true
}'

```java: Java

RazorpayClient razorpay = new RazorpayClient("[YOUR_KEY_ID]", "[YOUR_KEY_SECRET]");

String accountId = "acc_HQVlm3bnPmccC0";

String productId = "acc_prd_HEgNpywUFctQ9e";

JSONObject productRequest = new JSONObject();

JSONObject settlements = new JSONObject();
settlements.put("account_number","1234567890123456");
settlements.put("ifsc_code","HDFC0000317");
settlements.put("beneficiary_name","Gaurav Kumar");

productRequest.put("settlements",settlements);

productRequest.put("tnc_accepted",true);

Account product = instance.product.edit(accountId, productId, productRequest);

```python: Python

import razorpay
client = razorpay.Client(auth=("YOUR_ID", "YOUR_SECRET"))

accountId = "acc_HQVlm3bnPmccC0"
productId = "acc_prd_HEgNpywUFctQ9e"

client.product.edit(accountId, productId, {
  "settlements": {
    "account_number": "1234567890123456",
    "ifsc_code": "HDFC0000317",
    "beneficiary_name": "Gaurav Kumar"
  },
  "tnc_accepted": True
})

```php: PHP

$api = new Api($key_id, $secret);

$accountId = "acc_HQVlm3bnPmccC0";
$productId = "acc_prd_HEgNpywUFctQ9e";

$api->account->fetch($accountId)->products()->edit($productId, array(
    "settlements" => array(
        "account_number" => "1234567890123456",
        "ifsc_code" => "HDFC0000317",
        "beneficiary_name" => "Gaurav Kumar"
    ),
    "tnc_accepted" => true
));

```csharp: .NET

RazorpayClient client = new RazorpayClient(your_key_id, your_secret);

string accountId = "acc_HQVlm3bnPmccC0";

string productId = "acc_prd_HEgNpywUFctQ9e";

Dictionary productRequest = new Dictionary();

Dictionary settlements = new Dictionary();
settlements.Add("account_number", "1234567891");
settlements.Add("ifsc_code", "HDFC0000317");
settlements.Add("beneficiary_name", "Gaurav Kumar");

productRequest.Add("settlements", settlements);
productRequest.Add("tnc_accepted", true);

Product product = client.Product.Fetch(accountId, productId).Edit(productRequest);

```ruby: Ruby

require "razorpay"
Razorpay.setup('YOUR_KEY_ID', 'YOUR_SECRET')

accountId = "acc_HQVlm3bnPmccC0"
productId = "acc_prd_HEgNpywUFctQ9e"

Razorpay::Product.edit(accountId, productId, {
  "settlements": {
    "account_number": "1234567890123456",
    "ifsc_code": "HDFC0000317",
    "beneficiary_name": "Gaurav Kumar"
  },
  "tnc_accepted": true
})

```javascript: Node.js

var instance = new Razorpay({ key_id: 'YOUR_KEY_ID', key_secret: 'YOUR_SECRET' })

var accountId = "acc_HQVlm3bnPmccC0";
var productId = "acc_prd_HEgNpywUFctQ9e";

instance.products.edit(accountId, productId, {
  "settlements": {
    "account_number": "1234567890123456",
    "ifsc_code": "HDFC0000317",
    "beneficiary_name": "Gaurav Kumar"
  },
  "tnc_accepted": true
});

```go: Go

import ( razorpay "github.com/razorpay/razorpay-go" )
client := razorpay.NewClient("YOUR_KEY_ID", "YOUR_SECRET")

accountId := "acc_HQVlm3bnPmccC0"
productId := "acc_prd_HEgNpywUFctQ9e"

data := map[string]interface{}{
    "settlements": map[string]interface{}{
        "account_number":"1234567890123456",
        "ifsc_code": "HDFC0000317",
        "beneficiary_name": "Gaurav Kumar",
    },
    "tnc_accepted": true
}

body, err := client.Product.Edit(accountId, productId, data, nil)
````

### Response

````json: Success theme={null}
{
   "requested_configuration":[
      
   ],
   "active_configuration":{
      "settlements":{
         "account_number":"1234567890123456",
         "ifsc_code":"HDFC0000317",
         "beneficiary_name":"Gaurav Kumar"
      }
   },
   "requirements":[
      
   ],
   "tnc":{
      "id":"tnc_K1eopApuHyBE7D",
      "accepted":true,
      "accepted_at":1659638222
   },
   "id":"acc_prd_K1eopFF8G21tux",
   "product_name":"route",
   "activation_status":"activated",
   "account_id":"acc_K1em7bWYEiwmnc",
   "requested_at":1659638222
}

```json: Failure
{
   "error":{
      "code":"BAD_REQUEST_ERROR",
      "description":"Linked account does not exist",
      "source":"",
      "step":"",
      "reason":"linked_account_id_does_not_exist",
      "metadata":{
         
      }
   }
}
````

### Parameters

`account_id` *mandatory*
: `string` The unique identifier of an account generated by Razorpay. For example, `acc_HQVlm3bnPmccC0`.

`product_id` *mandatory*
: `string` The unique identifier of a product generated by Razorpay. For example, `acc_prd_HEgNpywUFctQ9e`.

### Parameters

`settlements` *conditional*
: `object` The Settlement settings object.

`account_number`
: `string` The bank account number to which settlements are made. For example, `1234567890123456`.

`ifsc_code`
: `string` The IFSC associated with the bank account. For example, `HDFC0000317`.

`beneficiary_name` *mandatory*
: `string` The name of the beneficiary associated with the bank account.

`tnc_accepted` *mandatory*
: `boolean` This parameter is optional but needs to be added to accept terms and conditions. Possible value is only `true`.

### Parameters

`requested_configuration`
: `object` The configuration of the product requested by the user that is yet to be set as active.

`active_configuration`
: `object` The configuration of the product that has been set as active.

`settlements`
: `object` The Settlement settings object.

`account_number`
: `string` The bank account number to which settlements are made. Account details can be found on the Dashboard. For example, `7878780080310012`.

`ifsc_code`
: `string` The IFSC associated with the bank account. For example, `RATN0VAAPIS`.

`beneficiary_name`
: `string` The name of the beneficiary associated with the bank account.

<Info>
  **Handy Tip**
</Info>

This API parameter is needed to complete the KYC process. However, it is optional for this API.

`requirements`
: `object` The list of requirements to be enabled for this product or some of the configurations under this product.

### Errors

Linked account does not exist.

* code: 400
* description: This error occurs when the requester is not the parent of the child account, or the child account does not exist.
* solution: Ensure the Linked Account id exists before proceeding with the update API.

Merchant activation form has been locked for editing by admin.

* code: 400
* description: This error occurs when the submitted extra fields are under the review stage.
* solution: You can wait for the review to be successful.

Invalid IFSC Code.

* code: 400
* description: This error occurs when the IFSC is invalid.
* solution: Ensure to pass the valid IFSC.

The account number must be between 5 and 20 characters.

* code: 400
* description: This error occurs when the account number is less than 5 or more than 20 characters.
* solution: Ensure the account number is between 5 to 20 characters.
