Partner APIs: Merchant Onboarding
Configure Products and Fees
Configures which payment products to enable for the merchant and sets fee structures. All card networks must be included when enabling INTERNATIONAL_CARDS_AND_ALT_PAYS.
PUT
/
gcc
/
v2
/
partner
/
merchant
/
onboard
/
{onboardingId}
/
products
Configure Products and Fees
curl --request PUT \
--url https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products \
--header 'Content-Type: application/json' \
--header 'x-gl-auth: <api-key>' \
--header 'x-gl-digest: <api-key>' \
--data '
{
"products": [
"GLOBAL_FUND_TRANSFER",
"INTERNATIONAL_CARDS_AND_ALT_PAYS",
"DOMESTIC_CARDS_UPI_AND_INB"
],
"productFees": {
"GLOBAL_FUND_TRANSFER": {
"feeType": "PERCENTAGE",
"fee": 1.2
},
"INTERNATIONAL_CARDS_AND_ALT_PAYS": [
{
"cardNetwork": "AMERICAN_EXPRESS",
"feeType": "FIXED",
"fee": 5
},
{
"cardNetwork": "DINERS",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "DISCOVER",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "OTHER_DEBIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
},
{
"cardNetwork": "OTHER_CREDIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
}
],
"DOMESTIC_CARDS_UPI_AND_INB": {
"feeType": "FIXED",
"feeRate": 3
}
}
}
'import requests
url = "https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products"
payload = {
"products": ["GLOBAL_FUND_TRANSFER", "INTERNATIONAL_CARDS_AND_ALT_PAYS", "DOMESTIC_CARDS_UPI_AND_INB"],
"productFees": {
"GLOBAL_FUND_TRANSFER": {
"feeType": "PERCENTAGE",
"fee": 1.2
},
"INTERNATIONAL_CARDS_AND_ALT_PAYS": [
{
"cardNetwork": "AMERICAN_EXPRESS",
"feeType": "FIXED",
"fee": 5
},
{
"cardNetwork": "DINERS",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "DISCOVER",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "OTHER_DEBIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
},
{
"cardNetwork": "OTHER_CREDIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
}
],
"DOMESTIC_CARDS_UPI_AND_INB": {
"feeType": "FIXED",
"feeRate": 3
}
}
}
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}/products")
.header("x-gl-auth", "<api-key>")
.header("x-gl-digest", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n \"GLOBAL_FUND_TRANSFER\",\n \"INTERNATIONAL_CARDS_AND_ALT_PAYS\",\n \"DOMESTIC_CARDS_UPI_AND_INB\"\n ],\n \"productFees\": {\n \"GLOBAL_FUND_TRANSFER\": {\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 1.2\n },\n \"INTERNATIONAL_CARDS_AND_ALT_PAYS\": [\n {\n \"cardNetwork\": \"AMERICAN_EXPRESS\",\n \"feeType\": \"FIXED\",\n \"fee\": 5\n },\n {\n \"cardNetwork\": \"DINERS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.99\n },\n {\n \"cardNetwork\": \"DISCOVER\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.99\n },\n {\n \"cardNetwork\": \"OTHER_DEBIT_CARDS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.75\n },\n {\n \"cardNetwork\": \"OTHER_CREDIT_CARDS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.75\n }\n ],\n \"DOMESTIC_CARDS_UPI_AND_INB\": {\n \"feeType\": \"FIXED\",\n \"feeRate\": 3\n }\n }\n}")
.asString();const url = 'https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products';
const options = {
method: 'PUT',
headers: {
'x-gl-auth': '<api-key>',
'x-gl-digest': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
products: [
'GLOBAL_FUND_TRANSFER',
'INTERNATIONAL_CARDS_AND_ALT_PAYS',
'DOMESTIC_CARDS_UPI_AND_INB'
],
productFees: {
GLOBAL_FUND_TRANSFER: {feeType: 'PERCENTAGE', fee: 1.2},
INTERNATIONAL_CARDS_AND_ALT_PAYS: [
{cardNetwork: 'AMERICAN_EXPRESS', feeType: 'FIXED', fee: 5},
{cardNetwork: 'DINERS', feeType: 'PERCENTAGE', fee: 2.99},
{cardNetwork: 'DISCOVER', feeType: 'PERCENTAGE', fee: 2.99},
{cardNetwork: 'OTHER_DEBIT_CARDS', feeType: 'PERCENTAGE', fee: 2.75},
{cardNetwork: 'OTHER_CREDIT_CARDS', feeType: 'PERCENTAGE', fee: 2.75}
],
DOMESTIC_CARDS_UPI_AND_INB: {feeType: 'FIXED', feeRate: 3}
}
})
};
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",
"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>"
}
},
"merchantOnboardingCheckListStatus": {
"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
Configures which payment products to enable for the merchant and sets the fee structure for each. Must be completed before triggering Get Verification Redirect.Fee Structure Rules
TheproductFees object is keyed by product name. The shape of each value depends on the product:
GLOBAL_FUND_TRANSFER— single object withfeeType(FIXEDorPERCENTAGE) andfee(number).INTERNATIONAL_CARDS_AND_ALT_PAYS— array of objects, one entry per card network. All five card networks must be present:AMERICAN_EXPRESS,DINERS,DISCOVER,OTHER_DEBIT_CARDS,OTHER_CREDIT_CARDS.DOMESTIC_CARDS_UPI_AND_INB— single object withfeeType(FIXEDorPERCENTAGE) andfeeRate(up to 2 decimal places).
products array to offer the full PayGlocal product suite.
Error Scenarios
| Scenario | HTTP Code |
|---|---|
| Missing required fields | 400 |
| Invalid field format | 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
List of payment products to enable.
Available options:
GLOBAL_FUND_TRANSFER, INTERNATIONAL_CARDS_AND_ALT_PAYS, DOMESTIC_CARDS_UPI_AND_INB Example:
[
"GLOBAL_FUND_TRANSFER",
"INTERNATIONAL_CARDS_AND_ALT_PAYS",
"DOMESTIC_CARDS_UPI_AND_INB"
]
Fee configuration keyed by product name.
Show child attributes
Show child attributes
⌘I
Configure Products and Fees
curl --request PUT \
--url https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products \
--header 'Content-Type: application/json' \
--header 'x-gl-auth: <api-key>' \
--header 'x-gl-digest: <api-key>' \
--data '
{
"products": [
"GLOBAL_FUND_TRANSFER",
"INTERNATIONAL_CARDS_AND_ALT_PAYS",
"DOMESTIC_CARDS_UPI_AND_INB"
],
"productFees": {
"GLOBAL_FUND_TRANSFER": {
"feeType": "PERCENTAGE",
"fee": 1.2
},
"INTERNATIONAL_CARDS_AND_ALT_PAYS": [
{
"cardNetwork": "AMERICAN_EXPRESS",
"feeType": "FIXED",
"fee": 5
},
{
"cardNetwork": "DINERS",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "DISCOVER",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "OTHER_DEBIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
},
{
"cardNetwork": "OTHER_CREDIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
}
],
"DOMESTIC_CARDS_UPI_AND_INB": {
"feeType": "FIXED",
"feeRate": 3
}
}
}
'import requests
url = "https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products"
payload = {
"products": ["GLOBAL_FUND_TRANSFER", "INTERNATIONAL_CARDS_AND_ALT_PAYS", "DOMESTIC_CARDS_UPI_AND_INB"],
"productFees": {
"GLOBAL_FUND_TRANSFER": {
"feeType": "PERCENTAGE",
"fee": 1.2
},
"INTERNATIONAL_CARDS_AND_ALT_PAYS": [
{
"cardNetwork": "AMERICAN_EXPRESS",
"feeType": "FIXED",
"fee": 5
},
{
"cardNetwork": "DINERS",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "DISCOVER",
"feeType": "PERCENTAGE",
"fee": 2.99
},
{
"cardNetwork": "OTHER_DEBIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
},
{
"cardNetwork": "OTHER_CREDIT_CARDS",
"feeType": "PERCENTAGE",
"fee": 2.75
}
],
"DOMESTIC_CARDS_UPI_AND_INB": {
"feeType": "FIXED",
"feeRate": 3
}
}
}
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}/products")
.header("x-gl-auth", "<api-key>")
.header("x-gl-digest", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n \"GLOBAL_FUND_TRANSFER\",\n \"INTERNATIONAL_CARDS_AND_ALT_PAYS\",\n \"DOMESTIC_CARDS_UPI_AND_INB\"\n ],\n \"productFees\": {\n \"GLOBAL_FUND_TRANSFER\": {\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 1.2\n },\n \"INTERNATIONAL_CARDS_AND_ALT_PAYS\": [\n {\n \"cardNetwork\": \"AMERICAN_EXPRESS\",\n \"feeType\": \"FIXED\",\n \"fee\": 5\n },\n {\n \"cardNetwork\": \"DINERS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.99\n },\n {\n \"cardNetwork\": \"DISCOVER\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.99\n },\n {\n \"cardNetwork\": \"OTHER_DEBIT_CARDS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.75\n },\n {\n \"cardNetwork\": \"OTHER_CREDIT_CARDS\",\n \"feeType\": \"PERCENTAGE\",\n \"fee\": 2.75\n }\n ],\n \"DOMESTIC_CARDS_UPI_AND_INB\": {\n \"feeType\": \"FIXED\",\n \"feeRate\": 3\n }\n }\n}")
.asString();const url = 'https://api.onboard.payglocal.in/gcc/v2/partner/merchant/onboard/{onboardingId}/products';
const options = {
method: 'PUT',
headers: {
'x-gl-auth': '<api-key>',
'x-gl-digest': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
products: [
'GLOBAL_FUND_TRANSFER',
'INTERNATIONAL_CARDS_AND_ALT_PAYS',
'DOMESTIC_CARDS_UPI_AND_INB'
],
productFees: {
GLOBAL_FUND_TRANSFER: {feeType: 'PERCENTAGE', fee: 1.2},
INTERNATIONAL_CARDS_AND_ALT_PAYS: [
{cardNetwork: 'AMERICAN_EXPRESS', feeType: 'FIXED', fee: 5},
{cardNetwork: 'DINERS', feeType: 'PERCENTAGE', fee: 2.99},
{cardNetwork: 'DISCOVER', feeType: 'PERCENTAGE', fee: 2.99},
{cardNetwork: 'OTHER_DEBIT_CARDS', feeType: 'PERCENTAGE', fee: 2.75},
{cardNetwork: 'OTHER_CREDIT_CARDS', feeType: 'PERCENTAGE', fee: 2.75}
],
DOMESTIC_CARDS_UPI_AND_INB: {feeType: 'FIXED', feeRate: 3}
}
})
};
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",
"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>"
}
},
"merchantOnboardingCheckListStatus": {
"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"
}
]
}
