> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Stakeholder Documents

> Upload signatory documents for a Stakeholder using Razorpay APIs.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
  <span>🇸🇬 Singapore</span>
  <span>🇺🇸 United States</span>
</div>

Use this endpoint to upload signatory documents for a stakeholder. Know about the [various error responses](/docs/api/partners/errors) for this API.

<Info>
  **Handy Tips**

  If your product activation status is `requested`, you can update all the fields. If the status is `needs_clarification`, you can update only specific fields.
</Info>

<RequestExample>
  ```bash Curl theme={null}
  curl -X POST https://api.razorpay.com/v2/accounts/acc_Go5TSvGPw0NB8v/stakeholders/sth_Go5iFZJ8dqAfjg/documents \
  -u <ACCESS_TOKEN> \
  -F 'file=@/Users/your_name/Downloads/sample_uploaded.jpeg' // file path
  -F 'document_type=aadhar_front' 
  ```

  ```java Java theme={null}
  RazorpayClient razorpay = new RazorpayClient("[ACCESS_TOKEN]");

  String accoundId = "acc_LryDIBIjBDbOWy";
  String stakeholderId = "sth_M0zjeiVOLRJRPW";

  JSONObject request = new JSONObject();
  request.put("file","/Users/your_name/Downloads/sample_uploaded.jpeg");
  request.put("document_type","aadhar_front");

  Stakeholder stakeholder = instance.stakeholder.uploadStakeholderDoc(accoundId, stakeholderId, request);
  ```

  ```php PHP theme={null}
  $api = new Api(null, null, "<ACCESS_TOKEN>");

  $accountId = "acc_00000000000001";
  $stakeholderId = "sth_00000000000001";
  $payload = [
     'file'=> '/Users/your_name/Downloads/sample_uploaded.pdf',
     "document_type" => "aadhar_front"
  ];

  $stakeholders = $api->account->fetch($accountId)->stakeholders();

  $stakeholders->uploadStakeholderDoc($stakeholderId, $payload);
  ```

  ```javascript Node.js theme={null}
  const instance = new Razorpay({
    oauthToken: "<ACCESS_TOKEN>",
  });

  const accountId = "acc_GP4lfNA0iIMn5B";
  const stakeholderId = "sth_GOQ4Eftlz62TSL";

  const uploadFile = fs.createReadStream(
    "/Users/your_name/Downloads/sample_uploaded.jpeg",
  );

  const formData = {
    file: {
      value: uploadFile,
      options: {
        filename: "sample_uploaded.jpeg",
        contentType: null,
      },
    },
    document_type: "aadhar_front",
  };

  instance.stakeholders.uploadStakeholderDoc(accountId, stakeholderId, formData);
  ```

  ```ruby Ruby theme={null}
  require "razorpay"
  Razorpay.setup('ACCESS_TOKEN')
  account_id = "acc_0000000000001"
  stakeholder_id = "sth_00000000000001"

  Razorpay::Stakeholder.upload_stakeholder_doc(account_id, stakeholder_id, {
    "file": File.new("/Users/your_name/Downloads/sample_uploaded.jpeg"),
    "document_type": "aadhar_front"
  });
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
    "individual_proof_of_address": [
      {
        "type": "aadhar_front",
        "url": "https://rzp.io/i/bzDAbNg"
      }
    ]
  }
  ```
</ResponseExample>

## Path Parameters

<ParamField path="account_id" type="string" required>
  The unique identifier of a sub-merchant account generated by Razorpay. For example, `acc_GMh5YcLv9iGMKf`.
</ParamField>

<ParamField path="stakeholder_id" type="string" required>
  The unique identifier of the stakeholder generated by Razorpay. For example, `sth_GOUCFN3nE0XlYq`.
</ParamField>

## Request Parameters

<ParamField body="file" type="array" required>
  The URL generated once the business proof document is uploaded.
</ParamField>

<ParamField body="document_type" type="string" required>
  The documents for the valid proof type to be shared. In case of `individual_proof_of_address`, both the front and back of a document proof must be uploaded. Possible values:

  * individual\_proof\_of\_identification:<br />
    * `personal_pan`<br />
  * individual\_proof\_of\_address:<br />
    * `voter_id_back`<br />
    * `voter_id_front`<br />
    * `aadhar_front`<br />
    * `aadhar_back`<br />
    * `passport_front`<br />
    * `passport_back`
</ParamField>

## Response Parameters

<ResponseField name="individual_proof_of_address" type="array">
  The document submitted as individual proof of address.
</ResponseField>

<ResponseField name="type" type="string">
  The type of document. Possible values:

  * `voter_id_back`<br />
  * `voter_id_front`<br />
  * `aadhar_front`<br />
  * `aadhar_back`<br />
  * `passport_front`<br />
  * `passport_back`
</ResponseField>

<ResponseField name="url" type="string">
  The URL of the document.
</ResponseField>
