PayDirect Standing Instruction: Auto Debit
AUTO DEBIT standing instructions — scheduled FIXED debits after PayDirect mandate registration.
curl --request POST \
--url https://api.payglocal.in/gl/v1/payments/initiate \
--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",
"cardData": {
"number": "4111111111111111",
"expiryMonth": "05",
"expiryYear": "2026",
"securityCode": "111"
},
"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"
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",
"cardData": {
"number": "4111111111111111",
"expiryMonth": "05",
"expiryYear": "2026",
"securityCode": "111"
},
"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")
.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 \"cardData\": {\n \"number\": \"4111111111111111\",\n \"expiryMonth\": \"05\",\n \"expiryYear\": \"2026\",\n \"securityCode\": \"111\"\n },\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';
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',
cardData: {
number: '4111111111111111',
expiryMonth: '05',
expiryYear: '2026',
securityCode: '111'
},
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",
"status": "REQUEST_ERROR",
"message": "Authentication failed, please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-400-001",
"data": {},
"errors": {
"detailedMessage": "Authentication failed, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}{
"gid": "gl_9c2645ed09edb22e",
"status": "BLACKLIST_MATCH",
"message": "You are not allowed to onboard on this platform. Please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-403-001",
"data": {},
"errors": {
"detailedMessage": "You are not allowed to onboard on this platform, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}{
"gid": "gl_9c2645ed09edb22e",
"status": "REQUEST_ERROR",
"message": "Authentication failed, please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-400-001",
"data": {},
"errors": {
"detailedMessage": "Authentication failed, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}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 PayDirect initiate endpoint as GPI with astandingInstruction block.
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 | — | ✓ |
paymentData, send cardData only (tokenData is not supported).
API
| Method | POST |
| Path | /gl/v1/payments/initiate |
| Production | https://api.payglocal.in/gl/v1/payments/initiate |
| Sandbox | https://api.uat.payglocal.in/gl/v1/payments/initiate |
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.
Body
Scheduled auto debit standing instruction registration.
International cards only (paymentData.cardData).
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"
International cards only. Send cardData only — tokenData is not supported for standing instruction registration.
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 PayDirect 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 \
--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",
"cardData": {
"number": "4111111111111111",
"expiryMonth": "05",
"expiryYear": "2026",
"securityCode": "111"
},
"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"
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",
"cardData": {
"number": "4111111111111111",
"expiryMonth": "05",
"expiryYear": "2026",
"securityCode": "111"
},
"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")
.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 \"cardData\": {\n \"number\": \"4111111111111111\",\n \"expiryMonth\": \"05\",\n \"expiryYear\": \"2026\",\n \"securityCode\": \"111\"\n },\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';
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',
cardData: {
number: '4111111111111111',
expiryMonth: '05',
expiryYear: '2026',
securityCode: '111'
},
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",
"status": "REQUEST_ERROR",
"message": "Authentication failed, please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-400-001",
"data": {},
"errors": {
"detailedMessage": "Authentication failed, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}{
"gid": "gl_9c2645ed09edb22e",
"status": "BLACKLIST_MATCH",
"message": "You are not allowed to onboard on this platform. Please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-403-001",
"data": {},
"errors": {
"detailedMessage": "You are not allowed to onboard on this platform, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}{
"gid": "gl_9c2645ed09edb22e",
"status": "REQUEST_ERROR",
"message": "Authentication failed, please contact support.",
"timestamp": "10/01/2026 15:00:00",
"reasonCode": "GL-400-001",
"data": {},
"errors": {
"detailedMessage": "Authentication failed, please contact support.",
"displayMessage": "Something went wrong. We'll take you back to checkout so that you can try again."
},
"errorDetails": {}
}
