PayCollect Standing Instruction: Auto Debit
AUTO DEBIT standing instructions — scheduled FIXED debits after PayCollect mandate registration on hosted checkout.
curl --request POST \
--url https://api.payglocal.in/gl/v1/payments/initiate/paycollect \
--header 'Content-Type: application/json' \
--header 'x-gl-token-external: <api-key>' \
--data '
{
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"merchantUniqueId": "IFNN939494NJFJ",
"merchantCallbackURL": "https://api.prod.payglocal.in/gl/v1/payments/merchantCallback",
"standingInstruction": {
"data": {
"amount": "15000",
"numberOfPayments": "N",
"frequency": "MONTHLY",
"type": "FIXED",
"startDate": "20260903"
}
},
"paymentData": {
"totalAmount": "10.00",
"txnCurrency": "INR",
"billingData": {
"firstName": "John",
"lastName": "Doe",
"addressStreet1": "221B Baker Street",
"addressCity": "Bengaluru",
"addressCountry": "IND",
"emailId": "john.doe@example.com",
"callingCode": "+91",
"phoneNumber": "9999999999"
}
}
}
'import requests
url = "https://api.payglocal.in/gl/v1/payments/initiate/paycollect"
payload = {
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"merchantUniqueId": "IFNN939494NJFJ",
"merchantCallbackURL": "https://api.prod.payglocal.in/gl/v1/payments/merchantCallback",
"standingInstruction": { "data": {
"amount": "15000",
"numberOfPayments": "N",
"frequency": "MONTHLY",
"type": "FIXED",
"startDate": "20260903"
} },
"paymentData": {
"totalAmount": "10.00",
"txnCurrency": "INR",
"billingData": {
"firstName": "John",
"lastName": "Doe",
"addressStreet1": "221B Baker Street",
"addressCity": "Bengaluru",
"addressCountry": "IND",
"emailId": "john.doe@example.com",
"callingCode": "+91",
"phoneNumber": "9999999999"
}
}
}
headers = {
"x-gl-token-external": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.payglocal.in/gl/v1/payments/initiate/paycollect")
.header("x-gl-token-external", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"merchantTxnId\": \"23AEE8CB6B62EE2AF07\",\n \"merchantUniqueId\": \"IFNN939494NJFJ\",\n \"merchantCallbackURL\": \"https://api.prod.payglocal.in/gl/v1/payments/merchantCallback\",\n \"standingInstruction\": {\n \"data\": {\n \"amount\": \"15000\",\n \"numberOfPayments\": \"N\",\n \"frequency\": \"MONTHLY\",\n \"type\": \"FIXED\",\n \"startDate\": \"20260903\"\n }\n },\n \"paymentData\": {\n \"totalAmount\": \"10.00\",\n \"txnCurrency\": \"INR\",\n \"billingData\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"addressStreet1\": \"221B Baker Street\",\n \"addressCity\": \"Bengaluru\",\n \"addressCountry\": \"IND\",\n \"emailId\": \"john.doe@example.com\",\n \"callingCode\": \"+91\",\n \"phoneNumber\": \"9999999999\"\n }\n }\n}")
.asString();const url = 'https://api.payglocal.in/gl/v1/payments/initiate/paycollect';
const options = {
method: 'POST',
headers: {'x-gl-token-external': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
merchantTxnId: '23AEE8CB6B62EE2AF07',
merchantUniqueId: 'IFNN939494NJFJ',
merchantCallbackURL: 'https://api.prod.payglocal.in/gl/v1/payments/merchantCallback',
standingInstruction: {
data: {
amount: '15000',
numberOfPayments: 'N',
frequency: 'MONTHLY',
type: 'FIXED',
startDate: '20260903'
}
},
paymentData: {
totalAmount: '10.00',
txnCurrency: 'INR',
billingData: {
firstName: 'John',
lastName: 'Doe',
addressStreet1: '221B Baker Street',
addressCity: 'Bengaluru',
addressCountry: 'IND',
emailId: 'john.doe@example.com',
callingCode: '+91',
phoneNumber: '9999999999'
}
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"gid": "gl_o-a057c4d6b6c620741apzp0ZX2",
"status": "INPROGRESS",
"message": "Transaction Created Successfully",
"timestamp": "02/06/2026 21:47:33",
"reasonCode": "200",
"data": {
"redirectUrl": "https://api.uat.payglocal.in/gl/payflow-ui/?x-gl-token=example",
"statusUrl": "https://api.uat.payglocal.in/gl/v1/payments/gl_o-a057c4d6b6c620741apzp0ZX2/status?x-gl-token=example",
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"mandateId": "md_925996a0-9da6-42df-b968-8a14729885fd"
},
"errors": null
}{
"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"
}
]
}AUTO DEBIT standing instructions
AUTO DEBIT standing instructions automatically process subsequent debits based on the configured schedule after successful mandate registration. Registration uses the same PayCollect initiate endpoint as GPI with astandingInstruction block. The customer completes mandate setup on the hosted checkout page.
Key points
- Register the mandate using the Initiate API with
startDateand a scheduledfrequencysuch asWEEKLY,BIWEEKLY,MONTHLY,QUARTERLY,HALFYEARLY, orYEARLY(notONDEMAND). - After successful registration, subsequent debit transactions are automatically initiated according to the configured schedule.
- No SI sale API calls are required for subsequent debit transactions.
- The amount for subsequent debits must be
FIXED.
ONDEMAND frequency and VARIABLE type are not supported.Supported payment methods
| Method | Domestic | International |
|---|---|---|
| Cards | — | ✓ |
Notes
- Do not send
cardDataortokenData— the customer registers the mandate on the PayGlocal hosted page.
API
| Method | POST |
| Path | /gl/v1/payments/initiate/paycollect |
| Production | https://api.payglocal.in/gl/v1/payments/initiate/paycollect |
| Sandbox | https://api.uat.payglocal.in/gl/v1/payments/initiate/paycollect |
Headers
Same as GPI. SetstandingInstruction.data (amount, scheduled frequency, type: FIXED, startDate) in Request body below.
Next actions
PayGlocal debits on your configured schedule. Do not call SI subsequent payment for scheduled debits.| Action | API |
|---|---|
| Mandate status | Check mandate status |
| Cancel mandate | Cancel standing instruction |
| Each scheduled debit | Get transaction status and your merchantCallbackURL |
Authorizations
RSA-signed JWS (JSON Web Signature) token carrying the request payload.
- Header:
{ "alg": "RS256", "kid": "<merchant-key-id>", "iss": "<merchant-id>", "x-gl-enc": "false", "is-digested": "true" } - Payload: the exact JSON body sent in the request (or its SHA-256 digest when
is-digested=true). - Signed with the merchant's RSA private key; PayGlocal verifies with the matching public key.
Used by all
/gl/v1/payments/*endpoints.
Body
PayCollect auto debit standing instruction registration.
International cards only on hosted checkout (no UPI, net banking, or domestic-only methods).
Do not send cardData or tokenData in paymentData.
Merchant's unique transaction identifier. Alphanumeric only.
4 - 50"23AEE8CB6B62EE2AF07"
Customers are redirected here post payment completion.
"https://api.prod.payglocal.in/gl/v1/payments/merchantCallback"
Hosted checkout payment details for PayCollect standing instruction registration.
Do not send cardData, tokenData, or authenticationData — the customer registers the mandate on redirectUrl.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Optional stable merchant-side ID for idempotency and reconciliation. Alphanumeric only.
15 - 40"IFNN939494NJFJ"
Recommended for fraud checks and processor compliance.
Show child attributes
Show child attributes
Response
Returned immediately from initiate. Redirect the customer to data.redirectUrl, then poll data.statusUrl or Get Transaction Status. When mandate registration succeeds, data.mandateId may be present in data.
Response envelope for PayCollect standing instruction initiate (200). data may include mandateId.
No fields in this envelope are marked required.
PayGlocal transaction ID. Use for status, capture, and refund APIs.
"gl_o-a057c4d6b6c620741apzp0ZX2"
High-level status. Typically INPROGRESS immediately after initiate.
"INPROGRESS"
Human-readable status message.
"Transaction Created Successfully"
Response timestamp (DD/MM/YYYY HH:MM:SS).
"02/06/2026 21:47:33"
Success code on initiate (e.g. 200). See 4xx responses for error codes.
"200"
Standing instruction registration may also return mandateId in data — store it for SI sale, status, and cancel.
Show child attributes
Show child attributes
null on success.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.payglocal.in/gl/v1/payments/initiate/paycollect \
--header 'Content-Type: application/json' \
--header 'x-gl-token-external: <api-key>' \
--data '
{
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"merchantUniqueId": "IFNN939494NJFJ",
"merchantCallbackURL": "https://api.prod.payglocal.in/gl/v1/payments/merchantCallback",
"standingInstruction": {
"data": {
"amount": "15000",
"numberOfPayments": "N",
"frequency": "MONTHLY",
"type": "FIXED",
"startDate": "20260903"
}
},
"paymentData": {
"totalAmount": "10.00",
"txnCurrency": "INR",
"billingData": {
"firstName": "John",
"lastName": "Doe",
"addressStreet1": "221B Baker Street",
"addressCity": "Bengaluru",
"addressCountry": "IND",
"emailId": "john.doe@example.com",
"callingCode": "+91",
"phoneNumber": "9999999999"
}
}
}
'import requests
url = "https://api.payglocal.in/gl/v1/payments/initiate/paycollect"
payload = {
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"merchantUniqueId": "IFNN939494NJFJ",
"merchantCallbackURL": "https://api.prod.payglocal.in/gl/v1/payments/merchantCallback",
"standingInstruction": { "data": {
"amount": "15000",
"numberOfPayments": "N",
"frequency": "MONTHLY",
"type": "FIXED",
"startDate": "20260903"
} },
"paymentData": {
"totalAmount": "10.00",
"txnCurrency": "INR",
"billingData": {
"firstName": "John",
"lastName": "Doe",
"addressStreet1": "221B Baker Street",
"addressCity": "Bengaluru",
"addressCountry": "IND",
"emailId": "john.doe@example.com",
"callingCode": "+91",
"phoneNumber": "9999999999"
}
}
}
headers = {
"x-gl-token-external": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.payglocal.in/gl/v1/payments/initiate/paycollect")
.header("x-gl-token-external", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"merchantTxnId\": \"23AEE8CB6B62EE2AF07\",\n \"merchantUniqueId\": \"IFNN939494NJFJ\",\n \"merchantCallbackURL\": \"https://api.prod.payglocal.in/gl/v1/payments/merchantCallback\",\n \"standingInstruction\": {\n \"data\": {\n \"amount\": \"15000\",\n \"numberOfPayments\": \"N\",\n \"frequency\": \"MONTHLY\",\n \"type\": \"FIXED\",\n \"startDate\": \"20260903\"\n }\n },\n \"paymentData\": {\n \"totalAmount\": \"10.00\",\n \"txnCurrency\": \"INR\",\n \"billingData\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"addressStreet1\": \"221B Baker Street\",\n \"addressCity\": \"Bengaluru\",\n \"addressCountry\": \"IND\",\n \"emailId\": \"john.doe@example.com\",\n \"callingCode\": \"+91\",\n \"phoneNumber\": \"9999999999\"\n }\n }\n}")
.asString();const url = 'https://api.payglocal.in/gl/v1/payments/initiate/paycollect';
const options = {
method: 'POST',
headers: {'x-gl-token-external': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
merchantTxnId: '23AEE8CB6B62EE2AF07',
merchantUniqueId: 'IFNN939494NJFJ',
merchantCallbackURL: 'https://api.prod.payglocal.in/gl/v1/payments/merchantCallback',
standingInstruction: {
data: {
amount: '15000',
numberOfPayments: 'N',
frequency: 'MONTHLY',
type: 'FIXED',
startDate: '20260903'
}
},
paymentData: {
totalAmount: '10.00',
txnCurrency: 'INR',
billingData: {
firstName: 'John',
lastName: 'Doe',
addressStreet1: '221B Baker Street',
addressCity: 'Bengaluru',
addressCountry: 'IND',
emailId: 'john.doe@example.com',
callingCode: '+91',
phoneNumber: '9999999999'
}
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"gid": "gl_o-a057c4d6b6c620741apzp0ZX2",
"status": "INPROGRESS",
"message": "Transaction Created Successfully",
"timestamp": "02/06/2026 21:47:33",
"reasonCode": "200",
"data": {
"redirectUrl": "https://api.uat.payglocal.in/gl/payflow-ui/?x-gl-token=example",
"statusUrl": "https://api.uat.payglocal.in/gl/v1/payments/gl_o-a057c4d6b6c620741apzp0ZX2/status?x-gl-token=example",
"merchantTxnId": "23AEE8CB6B62EE2AF07",
"mandateId": "md_925996a0-9da6-42df-b968-8a14729885fd"
},
"errors": null
}{
"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"
}
]
}
