Debit Wallet
Debits funds from a userās sub-wallet for purchases. The behaviour varies based on the sub-wallet type:
-
GIFT_PPI: Identifies the applicable gift card and debits the amount transactionally from both the gift card and the gift wallet. This debit completes in a single step and does not require OTP verification. -
CLOSED_LOOP_PPI: Performs ledger maintenance only. No actual money movement occurs. -
SMALL_PPIandFULL_KYC_PPI: The debit uses a two-step flow that requires OTP verification.- In your request, include the
authobject withmodeset toOTP_VERIFICATIONand specify at least one channel inauth.data.notification_modes. - Cashfree records the request, generates an OTP, and returns a response with
status: OTP_GENERATED. - Call the Verify Debit Wallet API with the
debit_idand OTP to complete the debit. On successful verification, the status moves toSUCCESS.
- In your request, include the
SMALL_PPI and FULL_KYC_PPI sub-wallets, the auth object with mode: OTP_VERIFICATION is required to initiate a debit. To complete the transaction, call the Verify Wallet Debit API. This two-step flow does not apply to GIFT_PPI or CLOSED_LOOP_PPI sub-wallets.Authorizations
Your unique client identifier issued by Cashfree. You can find this in your Merchant Dashboard.
The secret key associated with your client ID. Use this to authenticate your API requests. You can find this in your Merchant Dashboard.
Headers
API version to be used. Format is in YYYY-MM-DD.
"2025-11-01"
Body
Request parameters to debit funds from a user's wallet.
Unique identifier that you create to identify the debit transaction in your system. Maximum 100 characters. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.
1 - 50"DEBIT420984"
Unique identifier for the user, as provided by you during PPI user creation.
1 - 50"USER827364"
Unique identifier for the wallet, as provided by you during wallet creation.
"WALLET936721"
Unique identifier of the sub-wallet from which the amount will be debited.
1 - 100"35246543210987654321"
Amount to be debited. Decimal values are allowed. The minimum value should be equal to or greater than 1.00 (>= 1.00).
x >= 1100.5
Alphanumeric and whitespaces are allowed. The maximum character limit is 60.
500"Payment for subscription service"
Optional key-value metadata for the debit transaction.
Required for SMALL_PPI and FULL_KYC_PPI sub-wallets. Set mode to OTP_VERIFICATION and specify at least one channel in data.notification_modes (for example, SMS or WHATSAPP). Not applicable for GIFT_PPI or CLOSED_LOOP_PPI sub-wallets.
Response
Success response for debiting a wallet.
- For
GIFT_PPIandCLOSED_LOOP_PPI, the debit completes in one step. - For other sub-wallet types with OTP verification, the response body includes
auth(echoed from the request) and statusOTP_GENERATEDuntil you call the Verify Debit Wallet API.
Unique identifier for the debit transaction, as provided by you during the debit request.
"DEBIT420984"
Unique identifier for the user, as provided by you during PPI user creation.
"USER827364"
Unique identifier for the debit transaction, generated by Cashfree.
"8901234567890123456"
Primary wallet ID from which the amount was debited.
"WALLET936721"
List of gift codes used in the transaction are applicable for GIFT type wallets.
The status of the debit transaction.
- For
GIFT_PPIandCLOSED_LOOP_PPIsub-wallets, the status isSUCCESSwhen the debit completes in a single call. - For
SMALL_PPIandFULL_KYC_PPIsub-wallets, the Debit Wallet API returnsOTP_GENERATEDuntil you verify the OTP using the Verify Debit Wallet API, after which the status moves toSUCCESS.
"SUCCESS"
Amount that was debited.
600
Remarks for the debit transaction.
"Purchase of electronics item"
Timestamp when the debit transaction was initiated.
"2025-07-28T10:30:00Z"
Timestamp when the debit transaction was processed. Returns null while the debit is awaiting OTP verification or is still in progress.
"2025-07-28T10:30:00Z"
Optional key-value metadata for the debit transaction.
Present only when you sent auth in the Debit Wallet request body for an OTP flow (SMALL_PPI or FULL_KYC_PPI). Echoes the same mode and data you supplied. Omitted for single-step debits (such as GIFT_PPI or CLOSED_LOOP_PPI).