Partner APIs: Merchant Onboarding
Update Bank Details
Submits or updates the settlement bank account. PayGlocal performs a penny drop verification to confirm the account is active. Cannot be updated after verification step is complete.
PUT
/
gcc
/
v2
/
partner
/
merchant
/
onboard
/
{onboardingId}
/
bank-details
Update Bank Details
curl --request PUT \
--url https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details \
--header 'Content-Type: application/json' \
--header 'x-gl-auth: <api-key>' \
--header 'x-gl-digest: <api-key>' \
--data '
{
"bankAccountNumber": "123456789012",
"bankIfscCode": "HDFC0001234",
"accountType": "CURRENT"
}
'import requests
url = "https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details"
payload = {
"bankAccountNumber": "123456789012",
"bankIfscCode": "HDFC0001234",
"accountType": "CURRENT"
}
headers = {
"x-gl-auth": "<api-key>",
"x-gl-digest": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.put("https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details")
.header("x-gl-auth", "<api-key>")
.header("x-gl-digest", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"bankAccountNumber\": \"123456789012\",\n \"bankIfscCode\": \"HDFC0001234\",\n \"accountType\": \"CURRENT\"\n}")
.asString();const url = 'https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details';
const options = {
method: 'PUT',
headers: {
'x-gl-auth': '<api-key>',
'x-gl-digest': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
bankAccountNumber: '123456789012',
bankIfscCode: 'HDFC0001234',
accountType: 'CURRENT'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "",
"data": {
"merchantInfo": {
"onboardingId": "pg_onboard_abc123",
"partnerOnboardingId": "partner-merchant-001",
"onboardingStatus": "INITIATED",
"businessDetails": {
"entityType": "<string>",
"gstNumber": "<string>",
"natureOfBusiness": "<string>",
"registeredName": "<string>",
"tradeName": "<string>",
"iec": "<string>",
"businessMonthlySize": "<string>",
"websiteUrl": "<string>",
"purposeCode": "<string>",
"businessRegisteredAddress": {
"streetAddress1": "<string>",
"streetAddress2": "<string>",
"zipcode": "<string>",
"stateCode": "MH",
"city": "<string>",
"state": "Maharashtra"
},
"businessOperatingAddress": {
"streetAddress1": "<string>",
"streetAddress2": "<string>",
"zipcode": "<string>",
"stateCode": "MH",
"city": "<string>",
"state": "Maharashtra"
}
},
"directorDetails": [
{
"designation": "<string>",
"name": "<string>",
"pan": "<string>"
}
],
"beneficialOwnerDetails": [
{
"designation": "<string>",
"name": "<string>",
"pan": "<string>",
"percentageOwnership": 123
}
],
"authorisedSignatoryDetails": {
"authSignatoryName": "<string>",
"authSignatoryPan": "<string>",
"contact": {
"phone": "<string>",
"email": "<string>"
}
},
"settlementDetails": {
"bankAccountNumber": "<string>",
"bankIfscCode": "<string>",
"accountHolderName": "<string>",
"accountType": "CURRENT"
}
},
"merchantOnboardingCheckListStatus": {
"businessDetails": "COMPLETE",
"beneficialOwners": "COMPLETE",
"bankDetails": "COMPLETE",
"authorisedSignatory": "COMPLETE",
"vkyc": "COMPLETE",
"digiLocker": "COMPLETE",
"tncAcknowledged": "COMPLETE",
"documents": "COMPLETE",
"products": "COMPLETE",
"documentsToBeUploaded": [
"<string>"
]
}
}
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": null,
"errorDetails": [
{
"fieldName": "paymentData.totalAmount",
"message": "This field is required"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "UNAUTHORIZED",
"data": {},
"errors": null,
"errorDetails": [
{
"fieldName": "authorization",
"message": "Invalid x-gl-token-external"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": {},
"errorDetails": [
{
"field": "panNumber",
"message": "Required field is missing"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": {},
"errorDetails": [
{
"field": "panNumber",
"message": "Required field is missing"
}
]
}When to Use
Submits or updates the settlement bank account. PayGlocal performs a penny drop verification to confirm the account is active and the IFSC is valid.Bank details cannot be updated after the merchant’s verification step is complete. If the penny drop fails, prompt the merchant to re-enter their bank details.
Notes
- If penny drop verification fails in Production,
CANCELLED_CHEQUEis added todocumentsToBeUploaded. Upload a cancelled cheque via Upload Documents withmerchantDocType: CANCELLED_CHEQUE. - In UAT, use account number
1234567890and IFSCSBIN0000000for successful verification. Any other combination triggers aCANCELLED_CHEQUEpendency. See Sandbox Testing → Partner Onboarding.
Error Scenarios
| Scenario | HTTP Code |
|---|---|
| Required fields missing or empty | 400 |
| Penny drop verification fails | 400 |
| Update attempted after verification step is complete | 400 |
onboardingId does not exist | 404 |
onboardingId does not belong to this partner | 403 |
Authorizations
Static API Key generated from the PayGlocal Partner Dashboard.
Per-request HmacSHA256 signature, Base64-encoded, using your API Secret as the HMAC key.
- For GET requests: sign the request URI path (e.g.
/gcc/v2/partner/merchant/onboard/business-category), including query string if present. - For POST/PUT requests: sign the exact raw request body.
Path Parameters
Body
application/json
Update Bank Details
curl --request PUT \
--url https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details \
--header 'Content-Type: application/json' \
--header 'x-gl-auth: <api-key>' \
--header 'x-gl-digest: <api-key>' \
--data '
{
"bankAccountNumber": "123456789012",
"bankIfscCode": "HDFC0001234",
"accountType": "CURRENT"
}
'import requests
url = "https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details"
payload = {
"bankAccountNumber": "123456789012",
"bankIfscCode": "HDFC0001234",
"accountType": "CURRENT"
}
headers = {
"x-gl-auth": "<api-key>",
"x-gl-digest": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.put("https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details")
.header("x-gl-auth", "<api-key>")
.header("x-gl-digest", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"bankAccountNumber\": \"123456789012\",\n \"bankIfscCode\": \"HDFC0001234\",\n \"accountType\": \"CURRENT\"\n}")
.asString();const url = 'https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/bank-details';
const options = {
method: 'PUT',
headers: {
'x-gl-auth': '<api-key>',
'x-gl-digest': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
bankAccountNumber: '123456789012',
bankIfscCode: 'HDFC0001234',
accountType: 'CURRENT'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "",
"data": {
"merchantInfo": {
"onboardingId": "pg_onboard_abc123",
"partnerOnboardingId": "partner-merchant-001",
"onboardingStatus": "INITIATED",
"businessDetails": {
"entityType": "<string>",
"gstNumber": "<string>",
"natureOfBusiness": "<string>",
"registeredName": "<string>",
"tradeName": "<string>",
"iec": "<string>",
"businessMonthlySize": "<string>",
"websiteUrl": "<string>",
"purposeCode": "<string>",
"businessRegisteredAddress": {
"streetAddress1": "<string>",
"streetAddress2": "<string>",
"zipcode": "<string>",
"stateCode": "MH",
"city": "<string>",
"state": "Maharashtra"
},
"businessOperatingAddress": {
"streetAddress1": "<string>",
"streetAddress2": "<string>",
"zipcode": "<string>",
"stateCode": "MH",
"city": "<string>",
"state": "Maharashtra"
}
},
"directorDetails": [
{
"designation": "<string>",
"name": "<string>",
"pan": "<string>"
}
],
"beneficialOwnerDetails": [
{
"designation": "<string>",
"name": "<string>",
"pan": "<string>",
"percentageOwnership": 123
}
],
"authorisedSignatoryDetails": {
"authSignatoryName": "<string>",
"authSignatoryPan": "<string>",
"contact": {
"phone": "<string>",
"email": "<string>"
}
},
"settlementDetails": {
"bankAccountNumber": "<string>",
"bankIfscCode": "<string>",
"accountHolderName": "<string>",
"accountType": "CURRENT"
}
},
"merchantOnboardingCheckListStatus": {
"businessDetails": "COMPLETE",
"beneficialOwners": "COMPLETE",
"bankDetails": "COMPLETE",
"authorisedSignatory": "COMPLETE",
"vkyc": "COMPLETE",
"digiLocker": "COMPLETE",
"tncAcknowledged": "COMPLETE",
"documents": "COMPLETE",
"products": "COMPLETE",
"documentsToBeUploaded": [
"<string>"
]
}
}
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": null,
"errorDetails": [
{
"fieldName": "paymentData.totalAmount",
"message": "This field is required"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "UNAUTHORIZED",
"data": {},
"errors": null,
"errorDetails": [
{
"fieldName": "authorization",
"message": "Invalid x-gl-token-external"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": {},
"errorDetails": [
{
"field": "panNumber",
"message": "Required field is missing"
}
]
}{
"gid": "gl_9c2645ed09edb22e",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "VALIDATION_ERROR",
"data": {},
"errors": {},
"errorDetails": [
{
"field": "panNumber",
"message": "Required field is missing"
}
]
}
