---
title: "Mandate Status"
method: POST
path: "/subscription/mandateStatus"
tags: ["Mandate"]
---

# Mandate Status

`POST /subscription/mandateStatus`

## Request

- Base URL: `https://services.jiopay.co.in/api`
- URL: `https://services.jiopay.co.in/api/subscription/mandateStatus`
- Auth: none required

Polls the status of a mandate, PDN, execution, or refund request.

**Auth note (from source):** documented as no-auth in the source collection — "verify with backend team; likely still requires bearer in production." This uncertainty is from the source itself, not confirmed.

## Headers

- `x-seamless` '0' | '1'

## Request body

- MandateStatusRequest
  - `client_id` string, required: Merchant/client identifier.
  - `subscription_refid` string, required: Subscription reference to query.
  - `merchant_txn_no` string: Required for PDN, EXECUTE, REFUND lookups.
  - `refund_merchant_txn_no` string: Required when request_type = REFUND.
  - `request_type` 'MANDATE' | 'PDN' | 'EXECUTE' | 'REFUND', required
  - `secureHash` string: HMAC-SHA256 signature, computed client-side before sending and validated server-side (auto-generated by the caller, not a value you choose). Algorithm: remove any existing secureHash, sort the remaining top-level keys alphabetically, join String(value).trim() per key with `|`, then HMAC-SHA256 the resulting string with your client_secret, hex-encoded. A second variant used by some endpoints strips comments from the raw body first and JSON-stringifies object values instead of String()-converting them — confirm which variant applies with the JPSL integration team before implementing.

## Response `200`

OK

- MandateStatusResponse
  - `statusCode` integer
  - `statusDesc` string
  - `response` MandateStatusData
    - `merchant_id` string
    - `amount` string
    - `currency` string: ISO numeric currency code.
    - `customer_id` string
    - `customer_name` string
    - `customer_mobile` string
    - `customer_email` string
    - `payment_method` 'CARD' | 'UPI'
    - `subscription_refid` string
    - `status` string: Mandate lifecycle state.
    - `mandate_subscription_desc` object
      - `currency` string
      - `plan_name` string
    - `start_date` string
    - `end_date` string
    - `frequency` string
    - `amount_type` 'MAX' | 'FIXED'
    - `umn` string: Unique Mandate Number issued by the bank/NPCI.
    - `autoExecute` 'Y' | 'N'
    - `errorDescription` string
    - `errorCode` string: 0000 = success.
    - `responseCode` string
    - `merchantId` string
    - `merchantTxnNo` string
    - `mandateId` string
    - `paymentDateTime` string
    - `txnID` string
    - `secureHash` string, nullable
    - `authCode` string
    - `requestType` string
    - `paymentMode` string
    - `respDescription` string
    - `authAmount` string
    - `paymentInstID` string: Masked instrument identifier.
    - `udfFields` UdfFields: Up to 12 merchant-defined fields (udf21–udf32), echoed back in the response.
      - `udf21` string
      - `udf22` string
      - `udf23` string
      - `udf24` string
      - `udf25` string
      - `udf26` string
      - `udf27` string
      - `udf28` string
      - `udf29` string
      - `udf30` string
      - `udf31` string
      - `udf32` string
    - `paymentSubInstType` string: Instrument sub-type, e.g. DC (Debit Card).
    - `paymentID` string
    - `bankRRN` string: Bank Reference Retrieval Number.

---

[API](https://skmtc.dev/jiopay/apis/subscription-hub.md) - [All operations](https://skmtc.dev/jiopay/apis/subscription-hub/llms.txt) - [OpenAPI document](https://skmtc.dev/jiopay/apis/subscription-hub/revisions/9da96f805941?raw)
