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_PPI and FULL_KYC_PPI: The debit uses a two-step flow that requires OTP verification.
In your request, include the auth object with mode set to OTP_VERIFICATION and specify at least one channel in auth.data.notification_modes.
Cashfree records the request, generates an OTP, and returns a response with status: PENDING and status_code: OTP_GENERATED.
Call the Verify Debit Wallet API with the debit_id and OTP to complete the debit. On successful verification, the status moves to SUCCESS.
For 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 when the response returns status_code: OTP_GENERATED. This two-step flow does not apply to GIFT_PPI or CLOSED_LOOP_PPI sub-wallets.
Unique identifier that you create to identify the debit transaction in your system. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.
Unique identifier for the user, as provided by you during PPI user creation. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.
Unique identifier for the wallet, as provided by you during wallet creation. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.
Optional key-value pairs for any extra information. Keys and values must be strings. The following constraints apply:
Maximum 10 entries.
Keys: maximum 50 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (&), hyphens (-), and spaces are allowed.
Values: maximum 200 characters. Same character set as keys.
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.
Show child attributes
Response
Success response for debiting a wallet.
For GIFT_PPI and CLOSED_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 status_code: OTP_GENERATED with status: PENDING until you call the Verify Debit Wallet API.
For GIFT_PPI and CLOSED_LOOP_PPI sub-wallets, status is SUCCESS when the debit completes in a single call.
For SMALL_PPI and FULL_KYC_PPI sub-wallets, the Debit Wallet API returns status: PENDING and status_code: OTP_GENERATED until you verify the OTP using the Verify Debit Wallet API, after which status and status_code become SUCCESS.
Optional key-value pairs for any extra information. Keys and values must be strings. The following constraints apply:
Maximum 10 entries.
Keys: maximum 50 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (&), hyphens (-), and spaces are allowed.
Values: maximum 200 characters. Same character set as keys.
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).
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cashfree Developer Documentation","colors":{"primary":"#6930ca","light":"#cfb8f5","dark":"#130851"},"logo":{"light":"https://mintcdn.com/cashfreepayments-d00050e9/6mQw7is1us8FhXrb/static/logo/light.svg?fit=max\u0026auto=format\u0026n=6mQw7is1us8FhXrb\u0026q=85\u0026s=8a2837083063d8a01e0be6b454a1baf1","dark":"https://mintcdn.com/cashfreepayments-d00050e9/6mQw7is1us8FhXrb/static/logo/dark.svg?fit=max\u0026auto=format\u0026n=6mQw7is1us8FhXrb\u0026q=85\u0026s=5c7de40784c6f6f9eebdad085ec5a7ef"},"favicon":"https://mintcdn.com/cashfreepayments-d00050e9/NpjCgm3mwC7v6gp-/static/favicon.png?fit=max\u0026auto=format\u0026n=NpjCgm3mwC7v6gp-\u0026q=85\u0026s=ba85dcd024bd70845e38c3f3957514c6","appearance":{"default":"light","strict":false},"background":{"color":{"light":"#fbfbfb","dark":"#000000"}},"navbar":{"links":[{"href":"https://www.cashfree.com/support/","label":"Contact Us"}],"primary":{"type":"button","label":"Get Started","href":"https://merchant.cashfree.com/merchants/signup?source-action=docs%20page\u0026action=Sign%20Up\u0026button-id=StartNow_Navbar"}},"footer":{"socials":{"github":"https://github.com/cashfree","youtube":"https://www.youtube.com/channel/UCxO0W7xVngh7TfkChPa_nwg","website":"https://www.cashfree.com/blog/category/engineering","discord":"https://discord.com/invite/w97HT9RKCF"}},"search":{"prompt":"Search or ask..."},"seo":{"metatags":{"og:title":"Cashfree Developer Documentation","og:description":"Welcome to the Cashfree developer documentation. You will find help about Cashfree products and APIs that will help you start using our products quickly.","og:site_name":"Cashfree Developer Documentation","twitter:site":"@gocashfree","google-site-verification":"T69Ao_T0Ps8pkRbluKzW179qvd_aCsWISCApeSsIhRU"},"indexing":"all"},"fonts":{"heading":{"family":"Inter","weight":600},"body":{"family":"Inter","weight":400}},"styling":{"codeblocks":"dark","latex":true},"integrations":{"ga4":{"measurementId":"G-56SCQ867FW"},"gtm":{"tagId":"GTM-5SRVH4P"}},"contextual":{"options":["chatgpt","claude","copy","view",{"title":"Open in Discord","description":"Join our Discord community","icon":"discord","href":"https://discord.com/invite/w97HT9RKCF"}],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cashfreepayments-d00050e9","hasAudioNarration":false,"actualSubdomain":"cashfreepayments-d00050e9","customDomains":["www.cashfree.com"],"gitSource":{"type":"github","owner":"cashfree","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae49f2dbfaae13da36b452f","collectionId":"849e9bcc-f7f0-46ac-84be-219ff7da0505","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae49f2dbfaae13da36b452f"},"feedback":{"thumbs":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae49f2dbfaae13da36b452f","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Payments APIs","count":520},{"language":"default","tag":"Other Versions","count":349},{"language":"default","tag":"Payments","count":305},{"language":"default","tag":"v2026-01-01","count":159},{"language":"default","tag":"Subscription","count":151},{"language":"default","tag":"v2025-01-01","count":150},{"language":"default","tag":"v2023-08-01","count":142},{"language":"default","tag":"Payment Gateway","count":136},{"language":"default","tag":"Secure ID","count":106},{"language":"default","tag":"Payouts","count":105}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":false,"email":"documentation@cashfree.com","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6916d346c181a220cfa37e8d","deploymentId":"66d5827f2de686bc28e7722b","questionText":"How do I accept payments online?","status":"active","generatedBy":"manual","createdAt":"2025-11-14T06:59:18.295Z","updatedAt":"2025-11-14T06:59:18.295Z","__v":0},{"_id":"6916d306c181a220cfa370e8","deploymentId":"66d5827f2de686bc28e7722b","questionText":"What is Cashfree Hosted Checkout?","status":"active","generatedBy":"manual","createdAt":"2025-11-14T06:58:14.574Z","updatedAt":"2025-11-14T06:58:14.574Z","__v":0},{"_id":"6916d2dbc181a220cfa368a4","deploymentId":"66d5827f2de686bc28e7722b","questionText":"How do I create a payment link?","status":"active","generatedBy":"manual","createdAt":"2025-11-14T06:57:31.657Z","updatedAt":"2025-11-14T06:57:31.657Z","__v":0}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/docs/_mintlify/custom/cashfreepayments-d00050e9/e1e3b3ccb8bef592/style.css"},{"filePath":"grid.css","content":".container,.container-fluid{margin-right:auto;margin-left:auto}.container{padding-top:3rem;padding-bottom:3rem}.container-fluid{padding:3rem 2rem}.col-xs,.row{box-sizing:border-box}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5rem;margin-left:-.5rem}.col.reverse,.row.reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.col.reverse{-webkit-box-orient:vertical;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.col-xs{-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-offset-0,.col-xs-offset-1,.col-xs-offset-10,.col-xs-offset-11,.col-xs-offset-12,.col-xs-offset-2,.col-xs-offset-3,.col-xs-offset-4,.col-xs-offset-5,.col-xs-offset-6,.col-xs-offset-7,.col-xs-offset-8,.col-xs-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-xs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-xs-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.col-xs-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.col-xs-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-xs-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.col-xs-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.col-xs-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-xs-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.col-xs-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.col-xs-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-xs-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.col-xs-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.col-xs-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.start-xs{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.center-xs{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.end-xs{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.top-xs{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.middle-xs{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.bottom-xs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.around-xs{-ms-flex-pack:distribute;justify-content:space-around}.between-xs{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.first-xs{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.last-xs{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}@media only screen and (min-width:48em){.container{width:49rem}.col-sm{box-sizing:border-box;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-offset-0,.col-sm-offset-1,.col-sm-offset-10,.col-sm-offset-11,.col-sm-offset-12,.col-sm-offset-2,.col-sm-offset-3,.col-sm-offset-4,.col-sm-offset-5,.col-sm-offset-6,.col-sm-offset-7,.col-sm-offset-8,.col-sm-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-sm-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.col-sm-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.col-sm-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-sm-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.col-sm-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.col-sm-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-sm-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.col-sm-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.col-sm-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-sm-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.col-sm-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.col-sm-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.center-sm{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.top-sm{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.middle-sm{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.bottom-sm{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.around-sm{-ms-flex-pack:distribute;justify-content:space-around}.between-sm{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.first-sm{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.last-sm{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:64em){.container{width:65rem}.col-md{box-sizing:border-box;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-offset-0,.col-md-offset-1,.col-md-offset-10,.col-md-offset-11,.col-md-offset-12,.col-md-offset-2,.col-md-offset-3,.col-md-offset-4,.col-md-offset-5,.col-md-offset-6,.col-md-offset-7,.col-md-offset-8,.col-md-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-md-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.col-md-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.col-md-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-md-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.col-md-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.col-md-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-md-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.col-md-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.col-md-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-md-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.col-md-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.col-md-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.start-md{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.center-md{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.end-md{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.top-md{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.middle-md{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.bottom-md{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.around-md{-ms-flex-pack:distribute;justify-content:space-around}.between-md{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.first-md{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.last-md{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:75em){.container{width:76rem}.col-lg{box-sizing:border-box;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-offset-0,.col-lg-offset-1,.col-lg-offset-10,.col-lg-offset-11,.col-lg-offset-12,.col-lg-offset-2,.col-lg-offset-3,.col-lg-offset-4,.col-lg-offset-5,.col-lg-offset-6,.col-lg-offset-7,.col-lg-offset-8,.col-lg-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.col-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-lg-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.col-lg-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-lg-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.col-lg-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.col-lg-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-lg-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.col-lg-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.col-lg-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-lg-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.col-lg-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.col-lg-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.start-lg{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.center-lg{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.end-lg{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.top-lg{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.middle-lg{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.bottom-lg{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.around-lg{-ms-flex-pack:distribute;justify-content:space-around}.between-lg{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.first-lg{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.last-lg{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}"},{"filePath":"typography.css","content":".landing-page h1{font-size:2.4rem}.landing-page h2{font-size:2rem}.landing-page h3{font-size:1.6rem}.landing-page h4{font-size:1.2rem}.landing-page h5{font-size:1rem}.landing-page h6{font-size:.8rem}.bold{font-weight:700}.semibold{font-weight:600}.medium{font-weight:500}.regular{font-weight:400}.light{font-weight:300}"}],"page":{"pagePath":"api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","slug":"/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","pageMetadata":{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/debit","keywords":["wallet management","PPI","API reference","wallet operations","REST API"],"og:title":"Debit Wallet API | Cashfree","og:description":"Debit a Cashfree PPI sub-wallet balance for a user, with optional OTP authentication required for small PPI and full KYC wallets to authorise the transaction.","title":"Debit Wallet","description":"Debits funds from a user's sub-wallet for purchases. The behaviour varies based on the sub-wallet type:\n\n- `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.\n\n- `CLOSED_LOOP_PPI`: Performs ledger maintenance only. No actual money movement occurs.\n\n- `SMALL_PPI` and `FULL_KYC_PPI`: The debit uses a two-step flow that requires OTP verification.\n 1. In your request, include the `auth` object with `mode` set to `OTP_VERIFICATION` and specify at least one channel in `auth.data.notification_modes`.\n 2. Cashfree records the request, generates an OTP, and returns a response with `status: PENDING` and `status_code: OTP_GENERATED`.\n 3. Call the [Verify Debit Wallet](/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet) API with the `debit_id` and OTP to complete the debit. On successful verification, the status moves to `SUCCESS`.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","hidden":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Debits funds from a user’s sub-wallet for purchases. The behaviour varies based on the sub-wallet type:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"GIFT_PPI\"\n }), \": 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.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"CLOSED_LOOP_PPI\"\n }), \": Performs ledger maintenance only. No actual money movement occurs.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"SMALL_PPI\"\n }), \" and \", _jsx(_components.code, {\n children: \"FULL_KYC_PPI\"\n }), \": The debit uses a two-step flow that requires OTP verification.\"]\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"In your request, include the \", _jsx(_components.code, {\n children: \"auth\"\n }), \" object with \", _jsx(_components.code, {\n children: \"mode\"\n }), \" set to \", _jsx(_components.code, {\n children: \"OTP_VERIFICATION\"\n }), \" and specify at least one channel in \", _jsx(_components.code, {\n children: \"auth.data.notification_modes\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Cashfree records the request, generates an OTP, and returns a response with \", _jsx(_components.code, {\n children: \"status: PENDING\"\n }), \" and \", _jsx(_components.code, {\n children: \"status_code: OTP_GENERATED\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Call the \", _jsx(_components.a, {\n href: \"/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet\",\n children: \"Verify Debit Wallet\"\n }), \" API with the \", _jsx(_components.code, {\n children: \"debit_id\"\n }), \" and OTP to complete the debit. On successful verification, the status moves to \", _jsx(_components.code, {\n children: \"SUCCESS\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`For `,_jsx(_components.code,{children:`SMALL_PPI`}),` and `,_jsx(_components.code,{children:`FULL_KYC_PPI`}),` sub-wallets, the `,_jsx(_components.code,{children:`auth`}),` object with `,_jsx(_components.code,{children:`mode: OTP_VERIFICATION`}),` is required to initiate a debit. To complete the transaction, call the `,_jsx(_components.a,{href:`/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet`,children:`Verify Wallet Debit API`}),` when the response returns `,_jsx(_components.code,{children:`status_code: OTP_GENERATED`}),`. This two-step flow does not apply to `,_jsx(_components.code,{children:`GIFT_PPI`}),` or `,_jsx(_components.code,{children:`CLOSED_LOOP_PPI`}),` sub-wallets.`]})}),`\n`,_jsxs(_components.p,{children:[`Refer to `,_jsx(_components.a,{href:`/api-reference/prepaid-payment-instruments/wallet-management/debit-status-descriptions#status-statuscode-mapping`,children:`Status and status-code reference`}),` for a comprehensive list of `,_jsx(_components.code,{children:`status`}),` and `,_jsx(_components.code,{children:`status_code`}),` combinations.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/debit","keywords":["wallet management","PPI","API reference","wallet operations","REST API"],"og:title":"Debit Wallet API | Cashfree","og:description":"Debit a Cashfree PPI sub-wallet balance for a user, with optional OTP authentication required for small PPI and full KYC wallets to authorise the transaction.","title":"Debit Wallet","description":"Debits funds from a user's sub-wallet for purchases. The behaviour varies based on the sub-wallet type:\n\n- `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.\n\n- `CLOSED_LOOP_PPI`: Performs ledger maintenance only. No actual money movement occurs.\n\n- `SMALL_PPI` and `FULL_KYC_PPI`: The debit uses a two-step flow that requires OTP verification.\n 1. In your request, include the `auth` object with `mode` set to `OTP_VERIFICATION` and specify at least one channel in `auth.data.notification_modes`.\n 2. Cashfree records the request, generates an OTP, and returns a response with `status: PENDING` and `status_code: OTP_GENERATED`.\n 3. Call the [Verify Debit Wallet](/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet) API with the `debit_id` and OTP to complete the debit. On successful verification, the status moves to `SUCCESS`.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","hidden":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/cashfreepayments-d00050e9/0a1efd0b138512b4/util/downloadImages.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/7b49b0aba32ccd66/util/checkLinks.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/6520965c686ab08e/util/updateFrontmatter.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/e6313895ea4c2bf0/export-docs/export.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/6459e4b38b43a234/export-docs/sync-kb.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/82d5b75dd1e333d2/snippets/postman-buttons/postman-links.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/e8f71dc9fab8d95d/scripts/ga4-video-tracking.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/e3b0c44298fc1c14/scripts/generate-postman-buttons.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/bc4eac15553663a2/scripts/openapi-rm-desc.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/5748000362acad1e/scripts/quote-openapi.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/0a7365ce97b5cca7/scripts/script.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/d99a96c0c4b010fe/scripts/updateHelpAccordionsWithPostHog.js","/docs/_mintlify/custom/cashfreepayments-d00050e9/bd8561d01634fd2e/scripts/updateIframeSrc.js"],"openApiReferenceData":{"operation":{"summary":"Debit Wallet","description":"Debits funds from a user's sub-wallet for purchases. The behaviour varies based on the sub-wallet type:\n\n- `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.\n\n- `CLOSED_LOOP_PPI`: Performs ledger maintenance only. No actual money movement occurs.\n\n- `SMALL_PPI` and `FULL_KYC_PPI`: The debit uses a two-step flow that requires OTP verification.\n 1. In your request, include the `auth` object with `mode` set to `OTP_VERIFICATION` and specify at least one channel in `auth.data.notification_modes`.\n 2. Cashfree records the request, generates an OTP, and returns a response with `status: PENDING` and `status_code: OTP_GENERATED`.\n 3. Call the [Verify Debit Wallet](/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet) API with the `debit_id` and OTP to complete the debit. On successful verification, the status moves to `SUCCESS`.\n","operationId":"debitWallet","tags":["Wallets"],"parameters":["04b56f70-8e37-46c7-8775-c3b50d873b34"],"requestBody":"99e89cc8-4053-4e74-a8c5-f94fdfde8632","responses":{"200":"d632161a-3c18-41e8-9272-0b8a5f2b6585","400":"238c89e5-bd92-4c60-a106-3e4c7fce1692","401":"3cf691a4-d987-4622-a8a1-b6921ef48d71","403":"8643554b-071b-4c30-b011-e9c857f2bfd3","404":"ca204944-79dd-46bc-8f05-2740e0bffae5","409":"926b0834-02b1-4460-9fbc-9295d95852c4","422":"3312d05f-bb28-468a-95ea-cef0cc32d23e","429":"4c986a0e-ce65-4d36-b635-7e88f212ec1e","500":"d535e5fd-1b52-4b8b-bcae-13ae97af3af0"},"method":"post","type":"path","servers":["8cee66d8-0b87-41ef-ab76-cce054584ced","f7bb6ace-47fa-4bed-99e0-0765bd0613d1"],"security":["4e010cad-152a-40d4-a211-b1efce04e8ab"],"path":"/ppi/wallet/debit","baseUrlOptions":["https://api.cashfree.com","https://sandbox.cashfree.com"],"title":"Debit Wallet","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"04b56f70-8e37-46c7-8775-c3b50d873b34":{"description":"API version to be used. Format is in YYYY-MM-DD.","name":"x-api-version","in":"header","required":true,"schema":{"type":"string","default":"2025-11-01","example":"2025-11-01","isRequired":true,"description":"API version to be used. Format is in YYYY-MM-DD.","uniqueKey":"","typeLabel":"string"},"example":"2025-11-01"}},"requestBody":{"description":"Request parameters to debit funds from a user's wallet.","required":true,"content":{"application/json":{"schema":{"type":"object","required":["debit_id","user_id","wallet_id","cf_sub_wallet_id","amount"],"properties":{"debit_id":{"type":"string","description":"Unique identifier that you create to identify the debit transaction in your system. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.","example":"DEBIT420984","minLength":1,"maxLength":50,"isRequired":true,"uniqueKey":"debit_id","typeLabel":"string"},"user_id":{"type":"string","description":"Unique identifier for the user, as provided by you during PPI user creation. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.","example":"USER827364","minLength":1,"maxLength":50,"isRequired":true,"uniqueKey":"user_id","typeLabel":"string"},"wallet_id":{"type":"string","description":"Unique identifier for the wallet, as provided by you during wallet creation. Only alphanumeric characters, periods (.), hyphens (-), and underscores (_) are allowed.","example":"WALLET936721","minLength":1,"maxLength":50,"isRequired":true,"uniqueKey":"wallet_id","typeLabel":"string"},"cf_sub_wallet_id":{"type":"string","description":"Unique identifier of the sub-wallet from which the amount will be debited. Only numeric characters are allowed.","example":"35246543210987654321","minLength":1,"maxLength":19,"isRequired":true,"uniqueKey":"cf_sub_wallet_id","typeLabel":"string"},"amount":{"type":"number","format":"double","description":"Amount to be debited. Decimal values are allowed. The minimum value should be equal to or greater than 1.00 (>= 1.00).","example":100.5,"minimum":1,"isRequired":true,"uniqueKey":"amount","typeLabel":"number\u003cdouble>"},"remarks":{"type":"string","description":"Alphanumeric and whitespaces are allowed. The maximum character limit is 60.","example":"Payment for subscription service","maxLength":500,"uniqueKey":"remarks","typeLabel":"string"},"notes":{"type":"object","description":"Optional key-value pairs for any extra information. Keys and values must be strings. The following constraints apply:\n- Maximum 10 entries.\n- Keys: maximum 50 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (\u0026), hyphens (-), and spaces are allowed.\n- Values: maximum 200 characters. Same character set as keys.\n","properties":{"example_key":{"type":"string","description":"A note value. Maximum 200 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (\u0026), hyphens (-), and spaces are allowed.","example":"example_value","uniqueKey":"notes.example_key","typeLabel":"string"}},"uniqueKey":"notes","typeLabel":"object"},"auth":{"type":"object","description":"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.\n","required":["mode","data"],"properties":{"mode":{"type":"string","description":"Authentication mode applied to this request. Only `OTP_VERIFICATION` is supported.","enum":["OTP_VERIFICATION"],"example":"OTP_VERIFICATION","isRequired":true,"uniqueKey":"auth.mode","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"Configuration for the selected `mode`. Required when `mode` is `OTP_VERIFICATION`.","required":["notification_modes"],"properties":{"notification_modes":{"type":"array","description":"Channels used to deliver the OTP to the end user. Specify at least one value. For example, use `SMS` and `WHATSAPP` to send the OTP over both channels.\n","minItems":1,"items":{"type":"string","description":"Delivery channel for the OTP.","enum":["SMS","WHATSAPP"],"uniqueKey":"auth.data.notification_modes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"example":["SMS","WHATSAPP"],"isRequired":true,"uniqueKey":"auth.data.notification_modes","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"auth.data","typeLabel":"object"}},"uniqueKey":"auth","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"giftWalletDebit":{"title":"giftWalletDebit","description":"Debiting from a gift wallet with gift card processing.","value":{"debit_id":"DEBIT420984","user_id":"USER827364","wallet_id":"WALLET936721","cf_sub_wallet_id":"35246543210987654321","amount":600,"remarks":"Purchase of electronics item","notes":{"example_key":"example_value"}}},"smallPpiDebitWithOtp":{"title":"smallPpiDebitWithOtp","description":"The auth object is mandatory for SMALL_PPI sub-wallets.","value":{"debit_id":"DEBIT420984","user_id":"USER827364","wallet_id":"WALLET936721","cf_sub_wallet_id":"54252453468535350359","amount":600,"remarks":"Purchase of electronics item","notes":{"example_key":"example_value"},"auth":{"mode":"OTP_VERIFICATION","data":{"notification_modes":["SMS","WHATSAPP"]}}}},"fullKycPpiDebitWithOtp":{"title":"fullKycPpiDebitWithOtp","description":"The auth object is mandatory for FULL_KYC_PPI sub-wallets.","value":{"debit_id":"DEBIT420985","user_id":"USER827364","wallet_id":"WALLET936721","cf_sub_wallet_id":"35246543210987654321","amount":500.75,"remarks":"Purchase of electronics item","notes":{"example_key":"example_value"},"auth":{"mode":"OTP_VERIFICATION","data":{"notification_modes":["SMS","WHATSAPP"]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"d632161a-3c18-41e8-9272-0b8a5f2b6585":{"description":"Success response for debiting a wallet.\n\n- For `GIFT_PPI` and `CLOSED_LOOP_PPI`, the debit completes in one step.\n- For other sub-wallet types with OTP verification, the response body includes `auth` (echoed from the request) and `status_code: OTP_GENERATED` with `status: PENDING` until you call the Verify Debit Wallet API.\n","content":{"application/json":{"schema":{"type":"object","properties":{"debit_id":{"type":"string","description":"Unique identifier for the debit transaction, as provided by you during the debit request.","example":"DEBIT420984","uniqueKey":"debit_id","typeLabel":"string"},"user_id":{"type":"string","description":"Unique identifier for the user, as provided by you during PPI user creation.","example":"USER827364","uniqueKey":"user_id","typeLabel":"string"},"cf_debit_id":{"type":"string","description":"Unique identifier for the debit transaction, generated by Cashfree.","example":"8901234567890123456","uniqueKey":"cf_debit_id","typeLabel":"string"},"wallet_id":{"type":"string","description":"Primary wallet ID from which the amount was debited.","example":"WALLET936721","uniqueKey":"wallet_id","typeLabel":"string"},"sub_wallet":{"type":"object","properties":{"cf_sub_wallet_id":{"type":"string","description":"Unique identifier for the sub-wallet provided in response while creating the wallet.","example":"5432109876543210987","uniqueKey":"sub_wallet.cf_sub_wallet_id","typeLabel":"string"},"name":{"type":"string","description":"Name for the sub-wallet.","example":"Gift Wallet","uniqueKey":"sub_wallet.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the sub-wallet.","example":"GIFT_PPI","uniqueKey":"sub_wallet.type","typeLabel":"string"},"status":{"type":"string","description":"Status of the sub-wallet.","example":"ACTIVE","uniqueKey":"sub_wallet.status","typeLabel":"string"},"balance":{"type":"number","format":"double","description":"Current balance of the sub-wallet.","example":1500.75,"uniqueKey":"sub_wallet.balance","typeLabel":"number\u003cdouble>"},"available_balance":{"type":"number","format":"double","description":"Available balance in the sub-wallet.","example":1500.75,"uniqueKey":"sub_wallet.available_balance","typeLabel":"number\u003cdouble>"},"funds_on_hold":{"type":"number","format":"double","description":"Funds on hold in the sub-wallet.","example":0,"uniqueKey":"sub_wallet.funds_on_hold","typeLabel":"number\u003cdouble>"}},"uniqueKey":"sub_wallet","typeLabel":"object"},"applied_gift_codes":{"type":"array","description":"List of gift codes used in the transaction are applicable for GIFT type wallets.","items":{"type":"object","properties":{"code":{"type":"string","description":"Unique identifier for the gift code.","example":"GIFT-2025-XYZ133","uniqueKey":"applied_gift_codes.items.[INDEX].code","typeLabel":"string"},"amount_debited":{"type":"number","format":"double","description":"Amount debited from the gift code.","example":100,"uniqueKey":"applied_gift_codes.items.[INDEX].amount_debited","typeLabel":"number\u003cdouble>"},"value":{"type":"number","format":"double","description":"Total Value of the gift code.","example":100,"uniqueKey":"applied_gift_codes.items.[INDEX].value","typeLabel":"number\u003cdouble>"},"expiry":{"type":"string","format":"date-time","description":"Expiry date of the gift code.","example":"2026-07-28T10:30:00Z","uniqueKey":"applied_gift_codes.items.[INDEX].expiry","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"applied_gift_codes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"applied_gift_codes","typeLabel":"object[]"},"status":{"type":"string","description":"Status of the debit transaction. Refer to [Debit status and status-code mapping](/api-reference/prepaid-payment-instruments/wallet-management/debit-status-descriptions#status-statuscode-mapping) for all valid combinations.\n\n- For `GIFT_PPI` and `CLOSED_LOOP_PPI` sub-wallets, `status` is `SUCCESS` when the debit completes in a single call.\n- For `SMALL_PPI` and `FULL_KYC_PPI` sub-wallets, the Debit Wallet API returns `status: PENDING` and `status_code: OTP_GENERATED` until you verify the OTP using the [Verify Debit Wallet](/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet) API, after which `status` and `status_code` become `SUCCESS`.\n","enum":["PENDING","SUCCESS","FAILED","REJECTED","REVERSED"],"example":"SUCCESS","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"status_code":{"type":"string","description":"Status code for detailed tracking of debit progress. Refer to [Debit status and status-code mapping](/api-reference/prepaid-payment-instruments/wallet-management/debit-status-descriptions#status-statuscode-mapping) for all valid combinations.\n","enum":["PENDING","OTP_GENERATED","OTP_GENERATION_FAILED","LAST_OTP_ATTEMPT_FAILED","OTP_VERIFICATION_FAILED","OTP_EXPIRED","OTP_VERIFICATION_ATTEMPT_EXHAUSTED","SUCCESS","FAILED","REJECTED","REVERSED"],"example":"SUCCESS","uniqueKey":"status_code","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","format":"double","description":"Amount that was debited.","example":600,"uniqueKey":"amount","typeLabel":"number\u003cdouble>"},"remarks":{"type":"string","description":"Remarks for the debit transaction.","example":"Purchase of electronics item","uniqueKey":"remarks","typeLabel":"string"},"initiated_at":{"type":"string","format":"date-time","description":"Timestamp when the debit transaction was initiated.","example":"2025-07-28T10:30:00Z","uniqueKey":"initiated_at","typeLabel":"string\u003cdate-time>"},"processed_at":{"oneOf":[{"type":"string","format":"date-time","description":"Timestamp when the debit transaction was processed. Returns null while the debit is awaiting OTP verification or is still in progress.\n","example":"2025-07-28T10:30:00Z","uniqueKey":"processed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Timestamp when the debit transaction was processed. Returns null while the debit is awaiting OTP verification or is still in progress.\n","example":"2025-07-28T10:30:00Z","uniqueKey":"processed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"processed_at","typeLabel":"string\u003cdate-time> | null"},"notes":{"type":"object","description":"Optional key-value pairs for any extra information. Keys and values must be strings. The following constraints apply:\n- Maximum 10 entries.\n- Keys: maximum 50 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (\u0026), hyphens (-), and spaces are allowed.\n- Values: maximum 200 characters. Same character set as keys.\n","properties":{"example_key":{"type":"string","description":"A note value. Maximum 200 characters. Alphanumeric characters, underscores (_), periods (.), commas (,), single quotes ('), ampersands (\u0026), hyphens (-), and spaces are allowed.","example":"example_value","uniqueKey":"notes.example_key","typeLabel":"string"}},"uniqueKey":"notes","typeLabel":"object"},"auth":{"type":"object","description":"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`).\n","required":["mode","data"],"properties":{"mode":{"type":"string","description":"Authentication mode applied to this request. Only `OTP_VERIFICATION` is supported.","enum":["OTP_VERIFICATION"],"example":"OTP_VERIFICATION","isRequired":true,"uniqueKey":"auth.mode","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"Configuration for the selected `mode`. Required when `mode` is `OTP_VERIFICATION`.","required":["notification_modes"],"properties":{"notification_modes":{"type":"array","description":"Channels used to deliver the OTP to the end user. Specify at least one value. For example, use `SMS` and `WHATSAPP` to send the OTP over both channels.\n","minItems":1,"items":{"type":"string","description":"Delivery channel for the OTP.","enum":["SMS","WHATSAPP"],"uniqueKey":"auth.data.notification_modes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"example":["SMS","WHATSAPP"],"isRequired":true,"uniqueKey":"auth.data.notification_modes","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"auth.data","typeLabel":"object"}},"uniqueKey":"auth","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"SUCCESS_GIFT_WALLET":{"title":"SUCCESS_GIFT_WALLET","value":{"debit_id":"DEBIT420984","user_id":"USER827364","cf_debit_id":"8901234567890123456","wallet_id":"WALLET936721","sub_wallet":{"cf_sub_wallet_id":"35246543210987654321","name":"Gift Wallet","type":"GIFT_PPI","status":"ACTIVE","balance":1500.75,"available_balance":1500.75,"funds_on_hold":0},"applied_gift_codes":[{"code":"GHO-8900-HKDH-8899","amount_debited":100,"value":100,"expiry":"2026-07-28T10:30:00Z"},{"code":"NMK-8454-JKJD-4224","amount_debited":500,"value":600,"expiry":"2026-07-28T10:30:00Z"}],"status":"SUCCESS","status_code":"SUCCESS","amount":600,"remarks":"Purchase of electronics item","initiated_at":"2025-07-28T10:30:00Z","processed_at":"2025-07-28T10:30:00Z","notes":{"example_key1":"example_value1","example_key2":"example_value2"}}},"SUCCESS_CLOSED_WALLET":{"title":"SUCCESS_CLOSED_WALLET","value":{"debit_id":"DEBIT420984","user_id":"USER827364","cf_debit_id":"8901234567890123456","wallet_id":"WALLET936721","sub_wallet":{"cf_sub_wallet_id":"35246543210987654321","name":"Closed Wallet","type":"CLOSED_LOOP_PPI","status":"ACTIVE","balance":1500.75,"available_balance":1500.75,"funds_on_hold":0},"status":"SUCCESS","status_code":"SUCCESS","amount":600,"remarks":"Purchase of electronics item","initiated_at":"2025-07-28T10:30:00Z","processed_at":"2025-07-28T10:30:00Z","notes":{"example_key1":"example_value1","example_key2":"example_value2"}}},"OTP_GENERATED_SMALL_PPI_WALLET":{"title":"OTP_GENERATED_SMALL_PPI_WALLET","value":{"debit_id":"DEBIT420984","user_id":"USER827364","cf_debit_id":"8901234567890123456","wallet_id":"WALLET936721","sub_wallet":{"cf_sub_wallet_id":"54252453468535350359","name":"Small PPI Wallet","type":"SMALL_PPI","status":"ACTIVE","balance":1500.75,"available_balance":1500.75,"funds_on_hold":0},"status":"PENDING","status_code":"OTP_GENERATED","amount":600,"remarks":"Purchase of electronics item","initiated_at":"2025-07-28T10:30:00Z","processed_at":null,"notes":{"example_key":"example_value"},"auth":{"mode":"OTP_VERIFICATION","data":{"notification_modes":["SMS","WHATSAPP"]}}}},"OTP_GENERATED_FULL_KYC_PPI_WALLET":{"title":"OTP_GENERATED_FULL_KYC_PPI_WALLET","value":{"debit_id":"DEBIT420985","user_id":"USER827364","cf_debit_id":"8901234567890123457","wallet_id":"WALLET936721","sub_wallet":{"cf_sub_wallet_id":"35246543210987654321","name":"Cashfree payout Wallet","type":"FULL_KYC_PPI","status":"ACTIVE","balance":9500.86,"available_balance":1500.75,"funds_on_hold":0},"status":"PENDING","status_code":"OTP_GENERATED","amount":500.75,"remarks":"Purchase of electronics item","initiated_at":"2025-07-28T10:30:00Z","processed_at":null,"notes":{"example_key":"example_value"},"auth":{"mode":"OTP_VERIFICATION","data":{"notification_modes":["SMS","WHATSAPP"]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"238c89e5-bd92-4c60-a106-3e4c7fce1692":{"description":"Bad request - Invalid input parameters.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"debit_id_missing":{"title":"debit_id_missing","value":{"code":"debit_id_missing","type":"validation_error","message":"debit_id is missing in the request"}},"sub_wallet_id_missing":{"title":"sub_wallet_id_missing","value":{"code":"sub_wallet_id_missing","type":"validation_error","message":"cf_sub_wallet_id is missing in the request"}},"user_id_missing":{"title":"user_id_missing","value":{"code":"user_id_missing","type":"validation_error","message":"user_id is missing in the request"}},"userWalletMismatch":{"title":"userWalletMismatch","value":{"message":"wallet does not belong to provided user","code":"wallet_id_value_invalid","type":"validation_error"}},"userSubWalletMismatch":{"title":"userSubWalletMismatch","value":{"message":"sub-wallet does not belong to provided user","code":"sub_wallet_id_value_invalid","type":"validation_error"}},"sub_wallet_id_invalid":{"title":"sub_wallet_id_invalid","value":{"code":"sub_wallet_id_invalid","type":"validation_error","message":"cf_sub_wallet_id is invalid in the request"}},"amountMissing":{"title":"amountMissing","value":{"code":"amount_missing","type":"validation_error","message":"amount is missing in the request"}},"invalidAmount":{"title":"invalidAmount","value":{"code":"amount_value_invalid","type":"validation_error","message":"amount should be of valid format"}},"missingClientId":{"title":"missingClientId","value":{"message":"x-client-id is missing in the request","code":"x-client-id_missing","type":"validation_error"}},"missingClientSecret":{"title":"missingClientSecret","value":{"message":"x-client-secret is missing in the request","code":"x-client-secret_missing","type":"validation_error"}},"maximumNotesExceeded":{"title":"maximumNotesExceeded","value":{"message":"Maximum 10 notes entries allowed","code":"notes_value_invalid","type":"validation_error"}},"notesValueInvalidLength":{"title":"notesValueInvalidLength","value":{"message":"Note value must be 200 characters or less","code":"notes_value_invalid","type":"validation_error"}},"notesKeyInvalidLength":{"title":"notesKeyInvalidLength","value":{"message":"Note Key must be 50 characters or less","code":"notes_value_invalid","type":"validation_error"}},"auth_mode_missing":{"title":"auth_mode_missing","value":{"code":"auth_mode_missing","type":"validation_error","message":"auth.mode is required"}},"auth_mode_invalid":{"title":"auth_mode_invalid","value":{"code":"auth_mode_invalid","type":"validation_error","message":"only OTP_VERIFICATION mode is supported"}},"auth_data_missing":{"title":"auth_data_missing","value":{"code":"auth_data_missing","type":"validation_error","message":"auth.data is required for OTP_VERIFICATION"}},"auth_notification_modes_missing":{"title":"auth_notification_modes_missing","value":{"code":"auth_notification_modes_missing","type":"validation_error","message":"auth.data.notification_modes must contain at least one channel for OTP_VERIFICATION"}},"auth_notification_modes_too_many":{"title":"auth_notification_modes_too_many","value":{"code":"auth_notification_modes_too_many","type":"validation_error","message":"auth.data.notification_modes must contain at most 5 entries"}},"auth_notification_modes_null":{"title":"auth_notification_modes_null","value":{"code":"auth_notification_modes_null","type":"validation_error","message":"auth.data.notification_modes cannot contain null entries"}},"auth_notification_modes_duplicate":{"title":"auth_notification_modes_duplicate","value":{"code":"auth_notification_modes_duplicate","type":"validation_error","message":"auth.data.notification_modes must not contain duplicates"}}},"exampleType":"examples"}},"exampleType":"examples"},"3cf691a4-d987-4622-a8a1-b6921ef48d71":{"description":"Unauthorised - Invalid or missing authentication.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalidCredentials":{"title":"invalidCredentials","value":{"code":"authentication_failed","type":"authentication_error","message":"Invalid client ID and client secret combination"}}},"exampleType":"examples"}},"exampleType":"examples"},"8643554b-071b-4c30-b011-e9c857f2bfd3":{"description":"Forbidden - Access denied.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"ipNotWhitelisted":{"title":"ipNotWhitelisted","value":{"code":"ip_not_whitelisted","type":"authentication_error","message":"Authentication error (IP not whitelisted)"}}},"exampleType":"examples"}},"exampleType":"examples"},"ca204944-79dd-46bc-8f05-2740e0bffae5":{"description":"Not found - Wallet or sub-wallet not found.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"walletNotFound":{"title":"walletNotFound","value":{"code":"wallet_id_not_found","type":"invalid_request_error","message":"The specified wallet_id does not exist"}},"subWalletNotFound":{"title":"subWalletNotFound","value":{"code":"sub_wallet_id_not_found","type":"invalid_request_error","message":"The specified cf_sub_wallet_id does not exist"}}},"exampleType":"examples"}},"exampleType":"examples"},"926b0834-02b1-4460-9fbc-9295d95852c4":{"description":"Conflict - Transaction already processed.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"duplicateTransaction":{"title":"duplicateTransaction","value":{"code":"debit_id_already_exists","type":"invalid_request_error","message":"Transaction with the same debit_id has already been processed"}}},"exampleType":"examples"}},"exampleType":"examples"},"3312d05f-bb28-468a-95ea-cef0cc32d23e":{"description":"Unprocessable Entity - Business rule validation failed.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"dailyMaxDebitCountLimitExceeded":{"title":"dailyMaxDebitCountLimitExceeded","value":{"code":"daily_max_debit_count_limit_exceeded","type":"validation_error","message":"daily debit count cannot exceed 3 for Gift ppi"}},"monthlyMaxDebitCountLimitExceeded":{"title":"monthlyMaxDebitCountLimitExceeded","value":{"code":"monthly_max_debit_count_limit_exceeded","type":"validation_error","message":"monthly debit count cannot exceed 20 for Gift ppi"}},"yearlyMaxDebitCountLimitExceeded":{"title":"yearlyMaxDebitCountLimitExceeded","value":{"code":"yearly_max_debit_count_limit_exceeded","type":"validation_error","message":"yearly debit count cannot exceed 100 for Gift ppi"}},"dailyMaxDebitAmountLimitExceeded":{"title":"dailyMaxDebitAmountLimitExceeded","value":{"code":"daily_max_debit_amount_limit_exceeded","type":"validation_error","message":"daily total debit amount cannot exceed ₹10,000.00 for Small ppi"}},"monthlyMaxDebitAmountLimitExceeded":{"title":"monthlyMaxDebitAmountLimitExceeded","value":{"code":"monthly_max_debit_amount_limit_exceeded","type":"validation_error","message":"monthly total debit amount cannot exceed ₹10,000.00 for Small ppi"}},"yearlyMaxDebitAmountLimitExceeded":{"title":"yearlyMaxDebitAmountLimitExceeded","value":{"code":"yearly_max_debit_amount_limit_exceeded","type":"validation_error","message":"yearly total debit amount cannot exceed ₹1,20,000.00 for Small ppi"}},"maxPerDebitLimitExceeded":{"title":"maxPerDebitLimitExceeded","value":{"code":"max_per_debit_limit_exceeded","type":"validation_error","message":"per debit amount cannot exceed ₹10,000.00 for Gift ppi"}}},"exampleType":"examples"}},"exampleType":"examples"},"4c986a0e-ce65-4d36-b635-7e88f212ec1e":{"description":"Too Many Requests - Rate limit exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimitExceeded":{"title":"rateLimitExceeded","value":{"code":"rate_limit_exceeded","type":"rate_limit_error","message":"Rate limit exceeded. Please try again after some time"}}},"exampleType":"examples"}},"exampleType":"examples"},"d535e5fd-1b52-4b8b-bcae-13ae97af3af0":{"description":"Internal server error.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A broad category of the error.","example":"internal_error","uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"A machine-readable error code specific to the issue.","example":"internal_server_error","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"A message providing more details about the error, dynamic based on the specific issue.","example":"Internal server error","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"code":"internal_server_error","type":"internal_error","message":"An internal error occurred while processing the request"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"4e010cad-152a-40d4-a211-b1efce04e8ab":{"XClientID":{"type":"apiKey","in":"header","name":"x-client-id","description":"Your unique client identifier issued by Cashfree. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","scopes":[],"schemeName":"XClientID"},"XClientSecret":{"type":"apiKey","in":"header","name":"x-client-secret","description":"The secret key associated with your client ID. Use this to authenticate your API requests. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","scopes":[],"schemeName":"XClientSecret"}}},"servers":{"8cee66d8-0b87-41ef-ab76-cce054584ced":{"url":"https://api.cashfree.com","description":"Production server."},"f7bb6ace-47fa-4bed-99e0-0765bd0613d1":{"url":"https://sandbox.cashfree.com","description":"Sandbox server."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-client-id","description":"Your unique client identifier issued by Cashfree. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","scopes":[],"schemeName":"XClientID"},"schema":{"title":"x-client-id","type":"string","description":"Your unique client identifier issued by Cashfree. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"XClientID","name":"x-client-id"},{"scheme":{"type":"apiKey","in":"header","name":"x-client-secret","description":"The secret key associated with your client ID. Use this to authenticate your API requests. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","scopes":[],"schemeName":"XClientSecret"},"schema":{"title":"x-client-secret","type":"string","description":"The secret key associated with your client ID. Use this to authenticate your API requests. You can find this in your [Merchant Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"XClientSecret","name":"x-client-secret"}],"title":"XClientID \u0026 XClientSecret"}]},"originalFileLocation":"openapi/ppi/ppi.yaml"},"subdomain":"cashfreepayments-d00050e9","siteName":"Cashfree Developer Documentation","title":"Debit Wallet API | Cashfree","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"manual"},"contextualStarterQuestions":[{"_id":"6a79b17a3629fc88876dffee","deploymentId":"66d5827f2de686bc28e7722b","questionText":"Which wallets need OTP verification?","status":"active","generatedBy":"contextual","path":"api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","createdAt":"2026-08-10T11:09:46.102Z","updatedAt":"2026-08-10T11:09:46.102Z","__v":0},{"_id":"6a79b17a3629fc88876dffed","deploymentId":"66d5827f2de686bc28e7722b","questionText":"What's the OTP verification flow?","status":"active","generatedBy":"contextual","path":"api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","createdAt":"2026-08-10T11:09:46.102Z","updatedAt":"2026-08-10T11:09:46.102Z","__v":0},{"_id":"6a79b17a3629fc88876dffec","deploymentId":"66d5827f2de686bc28e7722b","questionText":"How do I debit a GIFT_PPI wallet?","status":"active","generatedBy":"contextual","path":"api-reference/prepaid-payment-instruments/wallet-management/debit-wallet","createdAt":"2026-08-10T11:09:46.102Z","updatedAt":"2026-08-10T11:09:46.102Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-22T12:35:04.521Z","originalFileLocation":"api-reference/prepaid-payment-instruments/wallet-management/debit-wallet.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Debits funds from a user\u0026#x27;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_PPI and FULL_KYC_PPI: The debit uses a two-step flow that requires OTP verification. 1. In your request, include the auth object with mode set to OTP_VERIFICATION and specify at least one channel in auth.data.notification_modes. 2. Cashfree records the request, generates an OTP, and returns a response with status: PENDING and status_code: OTP_GENERATED. 3. Call the Verify Debit Wallet API with the debit_id and OTP to complete the debit. On successful verification, the status moves to SUCCESS.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cashfree Developer Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Debit Wallet API | Cashfree\">\u003cmeta data-mint-head property=\"og:description\" content=\"Debit a Cashfree PPI sub-wallet balance for a user, with optional OTP authentication required for small PPI and full KYC wallets to authorise the transaction.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cashfree Developer Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cashfreepayments-d00050e9.mintlify.app/_mintlify/api/og/v2?division=Wallets\u0026amp;title=Debit+Wallet\u0026amp;description=Debits+funds+from+a+user%27s+sub-wallet+for+purchases.+The+behaviour+varies+based+on+the+sub-wallet+type%3A%0A%0A-+%60GIFT_PPI%60%3A+Identifies+the+applicable+gift+card+and+d\u0026amp;theme=2adde9c6a50d91a75e16dbfe\u0026amp;signature=66b1f7ee6a0159d1b9aa91b5ae93c2ef2f8f6568bceb9fc04dd33b113d6259aa\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Debit Wallet API | Cashfree\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Debit a Cashfree PPI sub-wallet balance for a user, with optional OTP authentication required for small PPI and full KYC wallets to authorise the transaction.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cashfreepayments-d00050e9.mintlify.app/_mintlify/api/og/v2?division=Wallets\u0026amp;title=Debit+Wallet\u0026amp;description=Debits+funds+from+a+user%27s+sub-wallet+for+purchases.+The+behaviour+varies+based+on+the+sub-wallet+type%3A%0A%0A-+%60GIFT_PPI%60%3A+Identifies+the+applicable+gift+card+and+d\u0026amp;theme=2adde9c6a50d91a75e16dbfe\u0026amp;signature=66b1f7ee6a0159d1b9aa91b5ae93c2ef2f8f6568bceb9fc04dd33b113d6259aa\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/cashfreepayments-d00050e9/MP8bOqKxh3TohVa1/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cashfree Developer Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6930ca\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"T69Ao_T0Ps8pkRbluKzW179qvd_aCsWISCApeSsIhRU\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.cashfree.com/#organization\",\"name\":\"Cashfree Developer Documentation\",\"url\":\"https://www.cashfree.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cashfreepayments-d00050e9/6mQw7is1us8FhXrb/static/logo/light.svg?fit=max\u0026auto=format\u0026n=6mQw7is1us8FhXrb\u0026q=85\u0026s=8a2837083063d8a01e0be6b454a1baf1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.cashfree.com/docs#website\",\"name\":\"Cashfree Developer Documentation\",\"url\":\"https://www.cashfree.com/docs\",\"publisher\":{\"@id\":\"https://www.cashfree.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet#webpage\",\"url\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet\",\"name\":\"Debit Wallet\",\"description\":\"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_PPI and FULL_KYC_PPI: The debit uses a two-step flow that requires OTP verification. 1. In your request, include the auth object with mode set to OTP_VERIFICATION and specify at least one channel in auth.data.notification_modes. 2. Cashfree records the request, generates an OTP, and returns a response with status: PENDING and status_code: OTP_GENERATED. 3. Call the Verify Debit Wallet API with the debit_id and OTP to complete the debit. On successful verification, the status moves to SUCCESS.\",\"dateModified\":\"2026-06-22T12:35:04.521Z\",\"isPartOf\":{\"@id\":\"https://www.cashfree.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Prepaid Payment Instrument APIs\",\"item\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wallets\",\"item\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/create-wallet\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Debit Wallet\",\"item\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet#apireference\",\"headline\":\"Debit Wallet\",\"name\":\"Debit Wallet\",\"description\":\"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_PPI and FULL_KYC_PPI: The debit uses a two-step flow that requires OTP verification. 1. In your request, include the auth object with mode set to OTP_VERIFICATION and specify at least one channel in auth.data.notification_modes. 2. Cashfree records the request, generates an OTP, and returns a response with status: PENDING and status_code: OTP_GENERATED. 3. Call the Verify Debit Wallet API with the debit_id and OTP to complete the debit. On successful verification, the status moves to SUCCESS.\",\"url\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet\",\"mainEntityOfPage\":{\"@id\":\"https://www.cashfree.com/docs/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet#webpage\"},\"dateModified\":\"2026-06-22T12:35:04.521Z\",\"keywords\":\"wallet management, PPI, API reference, wallet operations, REST API\",\"publisher\":{\"@id\":\"https://www.cashfree.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.cashfree.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cashfree Developer Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cashfree Developer Documentation","nav":{"global":null,"tabs":[{"tab":"Payments","pages":[{"title":"Payments","href":"/payments/introduction"}]},{"tab":"Payouts","pages":[{"title":"Payouts","href":"/payouts/payouts/introduction"}]},{"tab":"Secure ID","pages":[{"title":"Secure ID","href":"/secure-id/introduction"}]},{"tab":"Partners and Platforms","pages":[{"title":"Partners and Platforms","href":"/partners/introduction"}]},{"tab":"Payments APIs","hidden":true,"pages":[{"title":"Payments APIs","href":"/api-reference/payments/overview"}]},{"tab":"Payouts APIs","hidden":true,"pages":[{"title":"Payouts APIs","href":"/api-reference/payouts/overview"}]},{"tab":"Secure ID APIs","hidden":true,"pages":[{"title":"Secure ID APIs","href":"/api-reference/vrs/overview"}]},{"tab":"Additional APIs","hidden":true,"groups":[{"group":"Prepaid Payment Instrument APIs","pages":[{"title":"Overview","sidebarTitle":"Overview","description":"Integrate and manage PPI APIs for wallet creation, balance checks, and transaction management in digital payments.","href":"/api-reference/prepaid-payment-instruments/overview"},{"title":"Getting Started","sidebarTitle":"Getting Started","description":"Get started with the Cashfree PPI APIs by reviewing endpoints, generating API keys, configuring webhooks, and contacting Cashfree for production access.","href":"/api-reference/prepaid-payment-instruments/getting-started"},{"title":"PPI Webhooks","sidebarTitle":"Webhooks","icon":"webhook","description":"Index of prepaid instrument (PPI) wallet webhooks, including credit events, wallet notifications, and HMAC verification for JSON payloads.","href":"/api-reference/prepaid-payment-instruments/webhooks-overview"},{"title":"Webhook Signature Verification","sidebarTitle":"Webhook Signature Verification","description":"Verify Cashfree PPI webhook signatures using your client secret and the supplied timestamp header to confirm authenticity before processing wallet events.","icon":"webhook","iconType":"solid","href":"/api-reference/prepaid-payment-instruments/webhook-signature-verification"},{"group":"Users","pages":[{"openapi":"openapi/ppi/ppi.yaml post /ppi/user","title":"Create User","description":"Creates a new user in the PPI system with the provided personal information. This endpoint enables merchants \nto onboard new users who can then be associated with wallets or cards.\n","href":"/api-reference/prepaid-payment-instruments/user-management/create-ppi-user"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/user/details","title":"Get User Details","description":"Retrieves details of an existing user in the PPI system based on the provided user ID.\nReturns the user's personal information and account status.\n","href":"/api-reference/prepaid-payment-instruments/user-management/get-ppi-user-details"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/user/update","title":"Update User","description":"Updates user details in the PPI system. Only the fields provided in the request body will be updated; \nall other user fields remain unchanged.\n","href":"/api-reference/prepaid-payment-instruments/user-management/update-ppi-user"}]},{"group":"User KYC","pages":[{"openapi":"openapi/ppi/ppi.yaml post /ppi/kyc/vkyc","title":"Initiate Video KYC","description":"Initiates Video KYC for a user and generates a VKYC link.\nThis endpoint creates a VKYC verification request and sends the notification across\nthe requested channels.\n","href":"/api-reference/prepaid-payment-instruments/kyc-verification/video-kyc-verification"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/kyc/vkyc/details","title":"Get Video KYC Details","description":"Retrieves the current status and other details of a Video KYC verification request, using the `user_id` and `verification_id` you supplied while initiating the request.\n","href":"/api-reference/prepaid-payment-instruments/kyc-verification/get-video-kyc-status"},{"title":"Video KYC Webhooks","sidebarTitle":"Video KYC Webhooks","description":"Configure Video KYC webhooks to receive real-time notifications when VKYC verification status changes in your PPI integration.","icon":"webhook","href":"/api-reference/prepaid-payment-instruments/kyc-verification/webhook-vkyc"},{"title":"VKYC Status and Status-Code Mapping","sidebarTitle":"VKYC Status Mapping","description":"Reference for PPI Video KYC status and status-code combinations returned by VKYC APIs and webhooks, with recommended actions for each scenario.","icon":"list","href":"/api-reference/prepaid-payment-instruments/kyc-verification/vkyc-status-descriptions"}]},{"group":"Wallets","pages":[{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet","title":"Create Wallet","description":"Creates a primary wallet and the associated sub-wallets for a user based on the specified program ID. The sub-wallet types, such as meal, fuel, and gift wallets, are determined by the program configuration. If the program is linked to a card program, a card is automatically created and associated with the wallet.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/create-wallet"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/credit","title":"Credit Wallet","description":"Credits funds to a specified user sub-wallet, adding money to their available balance. Supports various sub-wallet types with behaviour determined by wallet configuration.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/credit-wallet"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/debit","title":"Debit Wallet","href":"/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/debit/verify","title":"Verify Debit Wallet","description":"Completes a debit transaction that requires OTP verification for SMALL_PPI or FULL_KYC_PPI sub-wallets. Use this endpoint after the [Debit Wallet API](/api-reference/prepaid-payment-instruments/wallet-management/debit-wallet) returns status_code: OTP_GENERATED. Pass the debit_id from that response along with the OTP received by the customer through the channels configured in auth.data.notification_modes. On successful verification, the API returns status: SUCCESS and status_code: SUCCESS, and the debit transaction is completed. Each debit_id supports a maximum of three OTP verification attempts.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/verify-debit-wallet"},{"title":"Debit Status and Status-Code Mapping","sidebarTitle":"Debit Status Mapping","description":"Understand debit status and status_code combinations returned by PPI Debit Wallet and Verify Debit Wallet APIs, with recommended actions for each scenario.","icon":"list","href":"/api-reference/prepaid-payment-instruments/wallet-management/debit-status-descriptions"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/refund","title":"Refund Debit Wallet","description":"Processes a refund for a previously debited transaction from a user's sub-wallet. The refund operation \ncredits the amount back to the user's sub-wallet, effectively reversing a debit transaction:\n- `GIFT_PPI`: Credits amount back to gift wallet.\n- `CLOSED_LOOP_PPI`: Credits amount back to the respective sub-wallet.\n- `STANDARD_PPI`: Credits amount back to the respective sub-wallet.\n- Refund amount cannot exceed the original debit amount.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/refund-wallet"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/closure","title":"Close Wallet","description":"Closes a user's sub-wallet, making it inactive for future transactions. The closure process may require approval \ndepending on the sub-wallet type and business rules:\n- Any remaining balance is handled according to the configured closure policy.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/close-wallet"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/eligibility","title":"Check Transaction Eligibility","description":"Validates a user’s eligibility to perform credit or debit transactions on a sub-wallet based on compliance rules.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/check-wallet-eligibility"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/details","title":"Get Wallet Details","description":"Use this API to fetch wallet details and associated sub-wallet balances for a specified user. You can query by wallet ID, card ID, or a combination of either with a sub-wallet ID.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/get-wallet-details"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/statement","title":"Get Wallet Statement","description":"Retrieves a paginated wallet statement for a user, including both credit and debit transactions for a specific sub-wallet.\n- The statement can be fetched for a specified date range. If no range is provided, the API returns transactions from the last 6 months.\n- The `from` date **cannot** be earlier than 1 year from the current date.\n- Pagination is handled using the `after` and `before` parameters, which define the `cf_statement_id` boundary for retrieving the next or previous set of records.\n- Only **one** of `after` or `before` can be passed at a time.\n","href":"/api-reference/prepaid-payment-instruments/wallet-management/get-wallet-statement"},{"title":"Wallet Webhooks","sidebarTitle":"Wallet Webhooks","description":"Configure Cashfree wallet webhooks to receive credit, debit, and refund event notifications in your prepaid instrument integration.","icon":"webhook","href":"/api-reference/prepaid-payment-instruments/wallet-management/webhook-wallet"},{"title":"Card Webhooks","sidebarTitle":"Card Webhooks","description":"Configure Cashfree Card webhooks to receive event-based notifications whenever card transactions, refunds or card status updates occur in your PPI integration.","icon":"webhook","href":"/api-reference/prepaid-payment-instruments/wallet-management/webhook-card"}]},{"group":"Beneficiaries","pages":[{"openapi":"openapi/ppi/ppi.yaml post /ppi/user/bene","title":"Create Beneficiary","description":"Creates a new beneficiary to user's Full KYC wallet by providing bank account number or VPA and other required details. Ensure the successful creation of the beneficiary before initiating a fund transfer.\n","href":"/api-reference/prepaid-payment-instruments/user-beneficiary/create-user-bene"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/user/bene/details","title":"Get Beneficiary Details","description":"Retrieves details of an existing beneficiary of user in the PPI system.\n- If `bene_instrument_id` is provided, the response includes details for the specified instrument only.\n- If `bene_instrument_id` is not provided, the response includes details for all `bene_instruments` linked to the given `bene_id`.\n","href":"/api-reference/prepaid-payment-instruments/user-beneficiary/get-user-bene"},{"openapi":"openapi/ppi/ppi.yaml delete /ppi/user/bene/remove","title":"Remove Beneficiary","description":"Removes an existing beneficiary of the user in the PPI system.\n- If `bene_instrument_id` is provided, only the specified instrument is removed from the beneficiary.\n- If `bene_instrument_id` is not provided, the entire beneficiary along with all its `bene_instruments` is removed.\n","href":"/api-reference/prepaid-payment-instruments/user-beneficiary/remove-user-bene"}]},{"group":"Transfers","pages":[{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/transfer","title":"Initiate Transfer","description":"Initiates a fund transfer from a user's FULL_KYC_PPI sub-wallet to a beneficiary account. Supports multiple transfer modes including RTGS, NEFT, IMPS, and UPI. It is an async request by default.\n\nThe beneficiary can be specified using either:\n- Existing beneficiary ID and instrument ID\n- New instrument details (bank account or UPI)\n","href":"/api-reference/prepaid-payment-instruments/transfers/initiate-transfer"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/transfer/verify","title":"Verify Transfer","description":"Submits the OTP for a wallet transfer that was initiated with mode `OTP_VERIFICATION`. \nUse **Get Transfer Details** or webhooks for terminal status.\n","href":"/api-reference/prepaid-payment-instruments/transfers/verify-transfer"},{"openapi":"openapi/ppi/ppi.yaml post /ppi/wallet/transfer/details","title":"Get Transfer Details","description":"Retrieves detailed information about a specific transfer transaction, including current status, beneficiary details.\n\nThis endpoint provides comprehensive transfer information including:\n- Current transfer status and bank status\n- Beneficiary and instrument details\n- Transaction timestamps and reference numbers if transaction successfully completed\n- Sub-wallet balance after the transfer\n","href":"/api-reference/prepaid-payment-instruments/transfers/get-transfer-details"},{"title":"Transfer Webhook Events","sidebarTitle":"Transfer Webhooks","description":"Configure Transfer webhooks to receive event-based notifications whenever a wallet transfer changes status in your PPI integration.","icon":"webhook","href":"/api-reference/prepaid-payment-instruments/transfers/webhook-transfer"}]}]}]},{"tab":"Partners APIs","hidden":true,"pages":[{"title":"Partners APIs","href":"/api-reference/platforms/overview"}]},{"tab":"Additional APIs","hidden":true,"pages":[{"title":"Additional APIs","href":"/api-reference/other-apis/bbps/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"AI Stack","pages":[{"title":"AI Stack","href":"/tools-ai/overview"}]},{"tab":"Help Center","pages":[{"title":"Help Center","href":"/help/overview"}]}]},"title":"Debit Wallet API | Cashfree","buildId":"dpl_DGmhKsAzJdVqypJzon18vViniWRY","deploymentId":"dpl_DGmhKsAzJdVqypJzon18vViniWRY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-2jF_ccbi.js","utils-NNMVb_sb.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DdtBhtt6.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D1OxL5O8.js","snippetPresets-DDC-KAXp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BOnTqOyQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-EEWI6FIO.js","shallow-fGZcWzm2.js","getApiPlaygroundDisplay-B3B8qEvw.js","CodeSnippet-BG9nsSU4.js","CodeSnippets-BlRACLKl.js","Page-FtoC8lZ9.js","getPastedJson-COV-Kgnr.js","icon-BXu3lasn.js","MethodPill-DGMUqJKh.js","DuplicateIcon-JEUJDHz_.js","createIcon-BDFucJ34.js","DynamicMarkdown-34OtG_BH.js","SectionHeading-tBbRD59j.js","axios-vUo_bRtp.js","Markdown-SoRz2nk2.js","clsx-BOmkPVIU.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DN0dCbTw.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BcsLYcfW.js"]}