Add Signatory Details — Step 08 of 16
Submits the authorised signatory for the merchant agreement.
Endpoint
PUT /api/v1/merchants/{uuid}/signatory_details
Prerequisite Steps
- Step 07: Website details submitted
Entity Applicability
All entities
Request Body (x-www-form-urlencoded)
| Parameter | Type | Required | Validation | Description |
|---|---|---|---|---|
merchant[signatory_...[0][authorised_signatory]] | string | Yes | "true" | Marks as authorised signatory |
merchant[signatory_...[0][name]] | string | Yes | Non-empty | Full legal name |
merchant[signatory_...[0][pancard_number]] | string | Yes | ABCDE1234F | Signatory PAN |
merchant[signatory_...[0][email]] | string | Yes | Valid email | E-sign OTPs sent here |
merchant[signatory_...[0][contact_detail_type]] | string | Yes | "Signing Authority" | Contact type |
merchant[signatory_...[0][cin_number]] | string | Conditional | 21 chars | ONLY for: Pvt Ltd, Public Limited, One Person Company |
CIN Field Eligibility in Signatory
| Entity Type | Send CIN? |
|---|---|
| Pvt Ltd | Yes |
| Public Limited | Yes |
| One Person Company | Yes |
| All others | No — omit this field entirely |
Critical: Prerequisite for Step 09
DigiLocker (Step 09) will fail if signatory details are not submitted. Always complete this step before attempting DigiLocker.
Response Fields (200 OK — when successful via Postman)
Returns full merchant object including signing_authority_details[] array with the added signatory.
Error Response Fields
| Field | Type | Description |
|---|---|---|
error | string | "param is missing or the value is empty: bank_detail" — bank_detail params must be included (see note above) |
Multiple Signatories
Up to 4 signatories can be submitted in a single request using array indexing [0], [1], [2], [3].
- Only one signatory should have
authorised_signatory = true— this is the person who signs the merchant agreement - Additional signatories (index 1-3) are disabled by default in this collection — enable them as needed
- Each signatory requires: name, PAN, email, contact_detail_type
- CIN is only needed for CIN-eligible entities (Pvt Ltd, Public Limited, One Person Company)
Next Step
Proceed to Step 09 — DigiLocker Verification.
API path:
PUT /api/v1/merchants/{uuid}/signatory_details— use the merchantuuidfrom Step 01. (OpenAPI uses a distinct path-parameter name on this page so ReadMe can import Step 08 separately from Step 12, which share the same HTTP method and path.)
The Add Signatory Details API submits the authorised signatory for the merchant agreement (Step 08 of 16).
Notes:
- Prerequisite: Step 07 (website details).
- Entity applicability: All entities.
- This step is mandatory before DigiLocker (Step 09). CIN in signatory details applies only to CIN-eligible entities (Pvt Ltd, Public Limited, OPC).
HTTP Method: PUT
Environment
| URL | |
|---|---|
| Test Environment | https://test-partner.payu.in/api/v1/merchants/{uuid}/signatory_details |
| Production Environment | https://partner.payu.in/api/v1/merchants/{uuid}/signatory_details |
Note: DigiLocker (Step 09) and VKYC (Step 11) fail if signatory details are missing. Complete this step before those APIs.
Sample Request
Sample request
curl --location --request PUT 'https://test-partner.payu.in/api/v1/merchants/{{uuid}}/signatory_details' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][authorised_signatory]]=true' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][name]]=Signatory 1 Name' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][pancard_number]]=ABCDE1234F' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][email]][email protected]' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][contact_detail_type]]=Signing Authority' \
--data-urlencode 'merchant[signatory_contact_details_attributes[0][cin_number]]='Sample Response
Success scenario
Success scenario
{
"merchant": {
"mid": 12345678,
"status": "account_created"
}
}Failure scenario
Failure scenario
- 401 Unauthorized — Token invalid or expired; call Step 00 again
{
"error": "unauthorized",
"message": "Invalid or expired token"
}- 422 Validation Failed — Request parameters failed validation
{
"error": "validation_failed",
"message": "Check the error details in the response body"
}Response parameters
Response parameters
| Parameter | Description | Example |
|---|---|---|
| merchant.mid | integer — Merchant ID | 12345678 |
| merchant.status | string — Current onboarding status | account_created |
Additional request parameters info
Header parameters
Header parameters
| Header | Description | Example |
|---|---|---|
Authorizationmandatory | string — Bearer token from Step 00 (GetToken) | Bearer {{access_token}} |
Content-Typemandatory | string — Must be application/x-www-form-urlencoded | application/x-www-form-urlencoded |
Path parameters
Path parameters
| Parameter | Description | Example |
|---|---|---|
uuidmandatory | string — Merchant UUID from Step 01 (CreateMerchant) | 11ef-d968-6b042d6c-9b94-02975f21d323 |
Body parameters
Body parameters
| Parameter | Description | Example |
|---|---|---|
merchant[signatory_contact_details_attributes[0][authorised_signatory]]mandatory | string — true for the authorised signatory | true |
merchant[signatory_contact_details_attributes[0][name]]mandatory | string — Signatory full name | Signatory 1 Name |
merchant[signatory_contact_details_attributes[0][pancard_number]]mandatory | string — Signatory PAN | ABCDE1234F |
merchant[signatory_contact_details_attributes[0][email]]mandatory | string — Signatory email | [email protected] |
merchant[signatory_contact_details_attributes[0][contact_detail_type]]mandatory | string — e.g. Signing Authority | Signing Authority |
merchant[signatory_contact_details_attributes[0][cin_number]]conditional | string — CIN only for Pvt Ltd / Public Ltd / OPC | (empty for others) |
400Bad Request
401Unauthorized - Invalid or expired token
403Forbidden - No access to this resource
404Not Found
422Validation Failed
500Internal Server Error
