Skip to main content
POST
/
gl
/
v1
/
payments
/
initiate
/
paycollect
PayCollect GPI (request body)
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": "order_1712345678",
  "paymentData": {
    "totalAmount": "100.00",
    "txnCurrency": "INR",
    "billingData": {
      "firstName": "John",
      "lastName": "Doe",
      "emailId": "john.doe@example.com",
      "addressCountry": "IND"
    }
  },
  "merchantCallbackURL": "https://merchant.example.com/callback"
}
'
{
  "gid": "gl_9c2645ed09edb22e",
  "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_9c2645ed09edb22e/status?x-gl-token=example",
    "merchantTxnId": "order_1712345678"
  },
  "errors": null
}

Documentation Index

Fetch the complete documentation index at: https://payglocal.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

What is GPI?

GPI (PayGlocal Payment Initiate) starts a PayCollect payment. You initiate from your server with transaction and billing data; PayGlocal returns a gid and a redirectUrl. Send the customer to that URL to pay on the hosted checkout, then read the outcome from your callback or the status API.

Supported payment methods

The customer chooses on the hosted page:
MethodDomesticInternational
Cards
UPI Intent
Net banking
Apple Pay
Global alternative payments
See Get transaction status for response shapes per method.
For global alternative payments, include riskData.shippingData.addressCountry and emailId in the request body.

API

MethodPOST
Path/gl/v1/payments/initiate/paycollect
Productionhttps://api.payglocal.in/gl/v1/payments/initiate/paycollect
Sandboxhttps://api.uat.payglocal.in/gl/v1/payments/initiate/paycollect
GPI, on-demand SI, auto-debit, and authorize all call this path. Only the JSON request body differs.

Headers

HeaderMandatoryDescription
Content-TypeYesapplication/json
x-gl-token-externalYesRSA-signed JWS of the request body (see Key Management)
x-gl-merchantidYesYour PayGlocal merchant ID (MID)
x-gl-kidYesKey ID of the private key used to sign the JWS
Sign the JSON from Request body below as the JWS in x-gl-token-external, then POST to the URL above.

Next steps

StepAPI
Confirm outcomeGet transaction status
Refund (after capture)Refund

Authorizations

x-gl-token-external
string
header
required

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

application/json

PayCollect GPI (no mandate, no captureTxn).

merchantTxnId
string
required

Merchant's unique transaction identifier. Alphanumeric only.

Required string length: 4 - 50
Example:

"order_1712345678"

paymentData
object
required

Hosted checkout payment details for PayCollect GPI. Do not send cardData, tokenData, or authenticationData — the customer pays on redirectUrl.

merchantCallbackURL
string<uri>
required

Customers are redirected here post payment completion.

Example:

"https://merchant.example.com/callback"

merchantUniqueId
string

Optional stable merchant-side ID for idempotency and reconciliation. Alphanumeric only.

Required string length: 15 - 40
riskData
object

Risk & analytics payload forwarded to fraud engines.

Response

Returned immediately from initiate. Redirect the customer to data.redirectUrl, then poll data.statusUrl or Get Transaction Status. A successful GPI sale usually reaches SENT_FOR_CAPTURE. No mandateId in data.

Response envelope for PayCollect initiate (200).

gid
string

PayGlocal transaction ID. Use for status, capture, and refund APIs.

Example:

"gl_9c2645ed09edb22e"

status
string

High-level status. Typically INPROGRESS immediately after initiate.

Example:

"INPROGRESS"

message
string

Human-readable status message.

Example:

"Transaction Created Successfully"

timestamp
string

Response timestamp (DD/MM/YYYY HH:MM:SS).

Example:

"02/06/2026 21:47:33"

reasonCode
string

Success code on initiate (e.g. 200). See 4xx responses for error codes.

Example:

"200"

data
object
errors
object

null on success.