> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payglocal.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Transaction Status

> Poll payment status after GPI — recommended after every transaction (PayDirect and PayCollect).

## When to Use

Call status **after every payment initiation**, once the customer completes (or abandons) the flow. PayGlocal also sends lifecycle updates to your `merchantCallbackURL`, but **status polling is the recommended way to confirm the final outcome** and reconcile orders if a callback is delayed, retried, or missed.

Use this endpoint for all GPI transactions — **PayDirect and PayCollect**, cards, UPI, net banking, Apple Pay, and global alternative payments.

***

## API

|                |                                                            |
| -------------- | ---------------------------------------------------------- |
| **Method**     | `GET`                                                      |
| **Path**       | `/gl/v1/payments/{id}/status`                              |
| **Production** | `https://api.payglocal.in/gl/v1/payments/{gid}/status`     |
| **Sandbox**    | `https://api.uat.payglocal.in/gl/v1/payments/{gid}/status` |

Pass PayGlocal `gid` or your `merchantTxnId` as `{id}`. Alternatively, call the pre-signed **`data.statusUrl`** from the [GPI initiate](/api-reference/payments-v2/paydirect/gpi) response.

***

## Headers

| Header                | Mandatory | Description                                                         |
| --------------------- | --------- | ------------------------------------------------------------------- |
| `x-gl-token-external` | Yes       | RSA-signed **JWS** (see [Key Management](/key-management/overview)) |
| `x-gl-merchantid`     | Yes       | Your PayGlocal merchant ID (MID)                                    |
| `x-gl-kid`            | Yes       | Key ID used to sign the JWS                                         |

***

## Notes

* Top-level `status` is the transaction state (e.g. `SENT_FOR_CAPTURE`, `AUTHORIZED`, `INPROGRESS`). The nested `data.status` often mirrors it for successful payments.
* The `data` object **varies by `payment-method`** — use the **Responses** examples below (card, UPI, net banking, global alt pay, authorized card).
* For auth-only flows (`captureTxn: false`), expect `AUTHORIZED` until you call [capture](/api-reference/payment/standalone-capture).

***

## Error Scenarios

| Scenario                                   | HTTP code |
| ------------------------------------------ | --------- |
| Unknown or invalid `gid` / `merchantTxnId` | `404`     |
| Missing or invalid JWS                     | `401`     |


## OpenAPI

````yaml GET /gl/v1/payments/{id}/status
openapi: 3.0.3
info:
  title: PayGlocal API
  description: >
    PayGlocal REST API covering merchant onboarding, payment initiation,
    refunds,

    capture, reversal, and standing-instruction (subscription) flows.
  version: '2.0'
  contact:
    name: PayGlocal Support
    email: merchant.support@payglocal.in
    url: https://payglocal.in
servers:
  - url: https://api.onboard.payglocal.in
    description: Onboarding — Production
  - url: https://api.onboard.uat.payglocal.in
    description: Onboarding — Sandbox
  - url: https://api.payglocal.in
    description: Payments — Production
  - url: https://api.uat.payglocal.in
    description: Payments — Sandbox
  - url: https://gcc.prod.payglocal.in
    description: MCA — Production
  - url: https://gcc.uat.payglocal.in
    description: MCA — Sandbox
security:
  - ApiKeyAuth: []
    DigestAuth: []
tags:
  - name: Merchant Onboarding
    description: Endpoints to create and manage merchant onboarding records.
  - name: Reference Data
    description: Lookup endpoints for static reference data (categories, codes).
  - name: Payment
    description: Payment initiation, refund, capture, reversal, and status endpoints.
  - name: Standing Instructions
    description: Subscription / recurring-payment mandate operations.
  - name: MCA
    description: >-
      Merchant Collection Account — virtual account fetch and transaction
      document upload.
paths:
  /gl/v1/payments/{id}/status:
    servers:
      - url: https://api.payglocal.in
        description: Production
      - url: https://api.uat.payglocal.in
        description: Sandbox
    get:
      tags:
        - Payment
      summary: Get Transaction Status
      description: >
        Returns the current lifecycle status of a payment. **Recommended after
        every GPI**

        (PayDirect or PayCollect), even though PayGlocal also posts updates to

        `merchantCallbackURL` — use status polling for reconciliation and as a
        fallback

        if the callback is delayed or missed.


        Call `GET /gl/v1/payments/{id}/status` with the PayGlocal `gid`, or use
        the

        pre-signed `statusUrl` from the initiate response (`data.statusUrl`).
      operationId: getTransactionStatus
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: PayGlocal `gid` or `merchantTxnId` from the initiate request.
          example: gl_a057c68620b83a33618l890YrX2
      responses:
        '200':
          description: >
            Status retrieved successfully. Top-level `status` reflects the
            transaction state;

            `data` includes method-specific fields keyed by `payment-method`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseTransactionStatus'
              examples:
                cardSentForCapture:
                  summary: Card — sale (`SENT_FOR_CAPTURE`)
                  value:
                    gid: gl_a057c68620b83a33618l890YrX2
                    status: SENT_FOR_CAPTURE
                    message: Transaction is sent_for_capture
                    timestamp: 02/06/2026 21:49:23
                    reasonCode: GL-201-001
                    data:
                      transactionCreationTime: 02/06/2026 21:48:42
                      gid: gl_o-a057c68620b83a33fl890YrX2
                      payment-method: CARD
                      Amount: '100'
                      txnCurrency: CAD
                      merchantTxnId: 23AEE8CB6B62EE2AF07
                      CardBrand: VISA
                      processor: payglocal
                      detailedMessage: Sent for capture successfully
                      CardType: CREDIT
                      Currency: INR
                      Country: CANADA
                      reasonCode: GL-201-001
                      authApprovalCode: '831000'
                      status: SENT_FOR_CAPTURE
                    errors: null
                cardAuthorized:
                  summary: Card — auth only (`AUTHORIZED`)
                  value:
                    gid: gl_a058857664323e2d793ge6c0ZX2
                    status: AUTHORIZED
                    message: Transaction is authorized
                    timestamp: 02/06/2026 23:59:51
                    reasonCode: GL-201-001
                    data:
                      transactionCreationTime: 02/06/2026 23:59:03
                      gid: gl_o-a058857664323e2d9ge6c0ZX2
                      payment-method: CARD
                      Amount: '10'
                      txnCurrency: CAD
                      merchantTxnId: 23AEE8CB6B62EE2AF07
                      CardBrand: VISA
                      processor: payglocal
                      detailedMessage: Sent for authorization successfully
                      CardType: CREDIT
                      Currency: INR
                      Country: CANADA
                      reasonCode: GL-201-001
                      authApprovalCode: '831000'
                      status: AUTHORIZED
                    errors: null
                upiSentForCapture:
                  summary: UPI Intent — `SENT_FOR_CAPTURE`
                  value:
                    gid: gl_a057bc0fd17d20744963ki0YrX2
                    status: SENT_FOR_CAPTURE
                    message: Transaction is sent_for_capture
                    timestamp: 02/06/2026 21:42:51
                    reasonCode: GL-201-001
                    data:
                      transactionCreationTime: 02/06/2026 21:41:33
                      gid: gl_o-a057bc0fd17d207473ki0YrX2
                      payment-method: UPI_INTENT
                      Amount: '100'
                      txnCurrency: INR
                      merchantLogo: null
                      merchantTxnId: 23AEE8CB6B62EE2AF07
                      detailedMessage: Capture request completed successfully
                      Currency: INR
                      upiTxnAmount: '100'
                      reasonCode: GL-201-001
                      status: SENT_FOR_CAPTURE
                      upiTxnCurrency: INR
                    errors: null
                netBankingSentForCapture:
                  summary: Net banking (`INB`) — `SENT_FOR_CAPTURE`
                  value:
                    gid: gl_a057bfe78643520ae7831q0YrX2
                    status: SENT_FOR_CAPTURE
                    message: Transaction is sent_for_capture
                    timestamp: 02/06/2026 21:46:16
                    reasonCode: GL-201-001
                    data:
                      detailedMessage: Capture request completed successfully
                      transactionCreationTime: 02/06/2026 21:44:11
                      gid: gl_o-a057bfe78643520ac31q0YrX2
                      payment-method: INB
                      Amount: '100'
                      Currency: INR
                      txnCurrency: INR
                      merchantTxnId: 23AEE8CB6B62EE2AF07
                      reasonCode: GL-201-001
                      status: SENT_FOR_CAPTURE
                    errors: null
                globalAltPaySentForCapture:
                  summary: Global alt pay (`ZIP`) — `SENT_FOR_CAPTURE`
                  value:
                    gid: gl_o-a0563363ad9883056l7w0jsYC
                    status: SENT_FOR_CAPTURE
                    message: 'Transaction status : sent_for_capture'
                    timestamp: 02/06/2026 21:53:46
                    reasonCode: GL-201-001
                    data:
                      detailedMessage: Success
                      transactionCreationTime: 02/06/2026 17:13:30
                      gid: gl_o-a0563363ad9883056l7w0jsYC
                      payment-method: ZIP
                      Amount: '1699.0'
                      Currency: AUD
                      merchantTxnId: nCog3d2hkCkxW-01
                      reasonCode: GL-201-001
                      status: SENT_FOR_CAPTURE
                    errors: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
        - JwsTokenAuth: []
components:
  schemas:
    ApiResponseTransactionStatus:
      type: object
      description: Response envelope for `GET /gl/v1/payments/{id}/status`.
      properties:
        gid:
          type: string
          description: PayGlocal transaction ID.
        status:
          type: string
          description: >-
            High-level transaction status (e.g. `SENT_FOR_CAPTURE`,
            `AUTHORIZED`, `INPROGRESS`).
        message:
          type: string
          description: Human-readable status message.
        timestamp:
          type: string
          description: Response timestamp (`DD/MM/YYYY HH:MM:SS`).
        reasonCode:
          type: string
          description: Reason code for this status (e.g. `GL-201-001`).
        data:
          $ref: '#/components/schemas/TransactionStatusData'
        errors:
          type: object
          nullable: true
          description: '`null` on success.'
    TransactionStatusData:
      type: object
      description: >
        `data` payload for transaction status. Fields present depend on
        `payment-method`

        (e.g. `CARD`, `UPI_INTENT`, `INB`, `ZIP`). See response examples on

        [Get Transaction
        Status](/api-reference/payments-v2/common/get-transaction-status).
      properties:
        transactionCreationTime:
          type: string
          description: Transaction creation time (`DD/MM/YYYY HH:MM:SS`).
        gid:
          type: string
          description: PayGlocal transaction ID (may differ from top-level `gid` prefix).
        payment-method:
          type: string
          description: Payment method code — `CARD`, `UPI_INTENT`, `INB`, `ZIP`, etc.
        Amount:
          type: string
          description: Transaction amount.
        txnCurrency:
          type: string
          description: ISO 4217 currency from the original payment request.
        merchantTxnId:
          type: string
          description: Merchant transaction reference from initiate.
        merchantLogo:
          type: string
          nullable: true
          description: Merchant logo URL when configured (often `null`).
        detailedMessage:
          type: string
          description: Processor or gateway detail message.
        Currency:
          type: string
          description: Settlement or display currency.
        reasonCode:
          type: string
          description: Status reason code (e.g. `GL-201-001`).
        status:
          type: string
          description: >-
            Transaction lifecycle status inside `data` (e.g. `SENT_FOR_CAPTURE`,
            `AUTHORIZED`).
        CardBrand:
          type: string
          description: Card network (`CARD` / Apple Pay). e.g. `VISA`.
        CardType:
          type: string
          description: CREDIT or DEBIT (CARD only).
        Country:
          type: string
          description: Card-issuing country (`CARD` only).
        processor:
          type: string
          description: Processing rail (e.g. `payglocal`) for card payments.
        authApprovalCode:
          type: string
          description: Issuer approval code (`CARD` only).
        upiTxnAmount:
          type: string
          description: UPI transaction amount (`UPI_INTENT` only).
        upiTxnCurrency:
          type: string
          description: UPI currency (`UPI_INTENT` only).
    CommonErrorResponse:
      type: object
      properties:
        gid:
          type: string
          example: gl_9c2645ed09edb22e
        timestamp:
          type: string
          example: 10/01/2026 15:00:00
        reasonCode:
          type: string
          example: VALIDATION_ERROR
        data:
          type: object
        errors:
          type: object
        errorDetails:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetail'
    ErrorDetail:
      type: object
      properties:
        field:
          type: string
          description: Name of the field that failed validation.
          example: panNumber
        message:
          type: string
          description: Human-readable error message.
          example: Required field is missing
  responses:
    Unauthorized:
      description: Authentication failed — invalid API key or digest.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
          examples:
            unauthorizedError:
              summary: Unauthorized error example
              value:
                gid: gl_9c2645ed09edb22e
                timestamp: 10/01/2026 15:00:00
                reasonCode: UNAUTHORIZED
                data: {}
                errors: null
                errorDetails:
                  - fieldName: authorization
                    message: Invalid x-gl-token-external
    NotFound:
      description: The specified onboardingId does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-gl-auth
      description: Static API Key generated from the PayGlocal Partner Dashboard.
    DigestAuth:
      type: apiKey
      in: header
      name: x-gl-digest
      description: >
        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.
    JwsTokenAuth:
      type: apiKey
      in: header
      name: x-gl-token-external
      description: >
        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.

````