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

# Check Transaction Eligibility

> Validates a user’s eligibility to perform credit or debit transactions on a sub-wallet based on compliance rules.




## OpenAPI

````yaml /openapi/ppi/ppi.yaml post /ppi/wallet/eligibility
openapi: 3.0.3
info:
  title: PPI Wallet API
  description: >-
    API for managing PPI (Prepaid Payment Instrument) wallets and sub-wallets,
    including credit and debit operations.
  version: 1.0.0
  contact:
    name: PPI Service Team
    email: support@cashfree.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.cashfree.com
    description: Production server.
  - url: https://sandbox.cashfree.com
    description: Sandbox server.
security:
  - XClientID: []
    XClientSecret: []
tags:
  - name: Wallet Management
    description: Operations related to PPI wallet management.
  - name: User Management
    description: Operations related to user management within the PPI system.
  - name: Beneficiary Management
    description: Operations related to beneficiary management for users.
  - name: KYC Management
    description: Operations related to KYC (Know Your Customer) management.
  - name: Transfers
    description: Operations related to transfer.
paths:
  /ppi/wallet/eligibility:
    post:
      tags:
        - Wallet Management
      summary: Check Transaction Eligibility
      description: >
        Validates a user’s eligibility to perform credit or debit transactions
        on a sub-wallet based on compliance rules.
      operationId: transactionEligibility
      parameters:
        - $ref: '#/components/parameters/global_x_api_version'
      requestBody:
        description: >-
          Request parameters to check the user's eligibility for a credit or
          debit transaction.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionEligibilityRequest'
            examples:
              debitEligibility:
                summary: Check debit eligibility
                description: Checking if user is eligible to debit from a sub-wallet.
                value:
                  user_id: USER827364
                  wallet_id: WALLET936721
                  cf_sub_wallet_id: '35246543210987654321'
                  amount: 600
                  flow_type: DEBIT
              creditEligibility:
                summary: Check credit eligibility
                description: Checking if user is eligible to credit to a sub-wallet.
                value:
                  user_id: USER827364
                  wallet_id: WALLET936721
                  cf_sub_wallet_id: '35246543210987654321'
                  amount: 600
                  flow_type: CREDIT
      responses:
        '200':
          description: Success response for checking transaction eligibility.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEligibilityResponse'
              examples:
                SUCCESS_ELIGIBLE_DEBIT:
                  summary: User is eligible for transaction
                  value:
                    eligible: true
                    user_id: USER827364
                    wallet_id: WALLET936721
                    cf_sub_wallet_id: '35246543210987654321'
                    amount: 600
                    flow_type: DEBIT
                SUCCESS_ELIGIBLE_CREDIT:
                  summary: User is eligible for transaction
                  value:
                    eligible: true
                    user_id: USER827364
                    wallet_id: WALLET936721
                    cf_sub_wallet_id: '35246543210987654321'
                    amount: 600
                    flow_type: CREDIT
        '400':
          description: Bad request - Invalid or missing input parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                user_id_missing:
                  summary: User ID missing
                  value:
                    code: user_id_missing
                    type: validation_error
                    message: user_id parameter is missing
                wallet_id_missing:
                  summary: Wallet ID missing
                  value:
                    code: wallet_id_missing
                    type: validation_error
                    message: wallet_id parameter is missing
                cf_sub_wallet_id_missing:
                  summary: Sub-wallet ID missing
                  value:
                    code: sub_wallet_id_missing
                    type: validation_error
                    message: cf_sub_wallet_id parameter is missing
                amount_missing:
                  summary: Amount missing
                  value:
                    code: amount_missing
                    type: validation_error
                    message: amount parameter is missing
                invalidAmount:
                  summary: Invalid amount format
                  value:
                    code: amount_value_invalid
                    type: validation_error
                    message: >-
                      amount should be of valid format with maximum 2 decimal
                      places
                flow_type_missing:
                  summary: Flow type missing
                  value:
                    code: flow_type_missing
                    type: validation_error
                    message: flow_type parameter is missing
                flow_type_invalid:
                  summary: Invalid flow type
                  value:
                    code: flow_type_value_invalid
                    type: validation_error
                    message: 'flow_type : invalid value'
                cf_sub_wallet_id_invalid:
                  summary: Sub-wallet ID invalid
                  value:
                    code: cf_sub_wallet_id_value_invalid
                    type: validation_error
                    message: cf_sub_wallet_id invalid value
                missingClientId:
                  summary: Missing client ID
                  value:
                    message: x-client-id is missing in the request
                    code: x-client-id_missing
                    type: validation_error
                missingClientSecret:
                  summary: Missing client secret
                  value:
                    message: x-client-secret is missing in the request
                    code: x-client-secret_missing
                    type: validation_error
                user_kyc_expired:
                  summary: User KYC expired
                  value:
                    code: user_kyc_expired
                    type: validation_error
                    message: >-
                      user kyc verification has expired, re-verify it to
                      continue
                user_kyc_pending:
                  summary: User KYC pending
                  value:
                    code: user_kyc_pending
                    type: validation_error
                    message: >-
                      user kyc verification is pending, complete atleast min-kyc
                      to proceed
        '401':
          $ref: '#/components/responses/Response401'
        '403':
          description: Forbidden - Access denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                ipNotWhitelisted:
                  summary: IP not whitelisted
                  value:
                    code: ip_not_whitelisted
                    type: authentication_error
                    message: Authentication error
        '404':
          description: Not found - User, wallet, or sub-wallet not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                userNotFound:
                  summary: User not found
                  value:
                    code: user_id_not_found
                    type: validation_error
                    message: user_id with given id not found
                walletNotIdFound:
                  summary: Wallet not found
                  value:
                    code: wallet_id_not_found
                    type: validation_error
                    message: wallet_id with given id not found
                cfSubWalletIdNotFound:
                  summary: Sub-wallet not found
                  value:
                    code: cf_sub_wallet_id_not_found
                    type: validation_error
                    message: cf_sub_wallet_id with given id not found
        '422':
          description: Unprocessable Entity - Business rule validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                dailyMaxCreditCountLimitExceeded:
                  summary: Daily credit count limit exceeded
                  value:
                    code: daily_max_credit_count_limit_exceeded
                    type: validation_error
                    message: daily credit count cannot exceed 3 for Gift ppi
                monthlyMaxCreditCountLimitExceeded:
                  summary: Monthly credit count limit exceeded
                  value:
                    code: monthly_max_credit_count_limit_exceeded
                    type: validation_error
                    message: monthly credit count cannot exceed 20 for Gift ppi
                yearlyMaxCreditCountLimitExceeded:
                  summary: Yearly credit count limit exceeded
                  value:
                    code: yearly_max_credit_count_limit_exceeded
                    type: validation_error
                    message: yearly credit count cannot exceed 100 for Gift ppi
                dailyMaxCreditAmountLimitExceeded:
                  summary: Daily total credit amount limit exceeded
                  value:
                    code: daily_max_credit_amount_limit_exceeded
                    type: validation_error
                    message: >-
                      daily total credit amount cannot exceed ₹10,000.00 for
                      Small ppi
                monthlyMaxCreditAmountLimitExceeded:
                  summary: Monthly total credit amount limit exceeded
                  value:
                    code: monthly_max_credit_amount_limit_exceeded
                    type: validation_error
                    message: >-
                      monthly total credit amount cannot exceed ₹10,000.00 for
                      Small ppi
                yearlyMaxCreditAmountLimitExceeded:
                  summary: Yearly total credit amount limit exceeded
                  value:
                    code: yearly_max_credit_amount_limit_exceeded
                    type: validation_error
                    message: >-
                      yearly total credit amount cannot exceed ₹1,20,000.00 for
                      Small ppi
                maxBalanceLimitExceeded:
                  summary: Max balance limit exceeded
                  value:
                    code: max_balance_limit_exceeded
                    type: validation_error
                    message: max balance cannot exceed ₹1,00,000.00 for Gift ppi
                maxPerCreditLimitExceeded:
                  summary: Per credit amount limit exceeded
                  value:
                    code: max_per_credit_limit_exceeded
                    type: validation_error
                    message: per credit amount cannot exceed ₹10,000.00 for Gift ppi
                dailyMaxDebitCountLimitExceeded:
                  summary: Daily debit count limit exceeded
                  value:
                    code: daily_max_debit_count_limit_exceeded
                    type: validation_error
                    message: daily debit count cannot exceed 3 for Gift ppi
                monthlyMaxDebitCountLimitExceeded:
                  summary: Monthly debit count limit exceeded
                  value:
                    code: monthly_max_debit_count_limit_exceeded
                    type: validation_error
                    message: monthly debit count cannot exceed 20 for Gift ppi
                yearlyMaxDebitCountLimitExceeded:
                  summary: Yearly debit count limit exceeded
                  value:
                    code: yearly_max_debit_count_limit_exceeded
                    type: validation_error
                    message: yearly debit count cannot exceed 100 for Gift ppi
                dailyMaxDebitAmountLimitExceeded:
                  summary: Daily total debit amount limit exceeded
                  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:
                  summary: Monthly total debit amount limit exceeded
                  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:
                  summary: Yearly total debit amount limit exceeded
                  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:
                  summary: Per debit amount limit exceeded
                  value:
                    code: max_per_debit_limit_exceeded
                    type: validation_error
                    message: per debit amount cannot exceed ₹10,000.00 for Gift ppi
        '429':
          description: Too Many Requests - Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                rateLimitExceeded:
                  summary: Rate limit exceeded
                  value:
                    code: rate_limit_exceeded
                    type: rate_limit_error
                    message: Rate limit exceeded. Please try again after some time
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                internalServerError:
                  summary: Internal server error
                  value:
                    code: api_error
                    type: internal_error
                    message: something went wrong
components:
  parameters:
    global_x_api_version:
      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'
      example: '2025-11-01'
  schemas:
    TransactionEligibilityRequest:
      type: object
      required:
        - user_id
        - wallet_id
        - cf_sub_wallet_id
        - amount
        - flow_type
      properties:
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
          minLength: 1
          maxLength: 50
        wallet_id:
          type: string
          description: >-
            Unique identifier for the wallet, as provided by you during wallet
            creation.
          example: WALLET936721
          minLength: 1
          maxLength: 50
        cf_sub_wallet_id:
          type: string
          description: >-
            Unique identifier of the sub-wallet for which eligibility is being
            checked.
          example: '35246543210987654321'
          minLength: 1
          maxLength: 50
        amount:
          type: number
          format: double
          description: >-
            Transaction amount for which eligibility is being validated. Must be
            a valid positive number with up to 2 decimal places.
          example: 600
          minimum: 1
        flow_type:
          type: string
          description: |
            Type of transaction flow:
            * `CREDIT` - Add funds to the sub-wallet.
            * `DEBIT` - Remove funds from the sub-wallet.
          example: DEBIT
    TransactionEligibilityResponse:
      type: object
      properties:
        eligible:
          type: boolean
          description: Whether the user is eligible to perform the specified transaction.
          example: true
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
        wallet_id:
          type: string
          description: >-
            Unique identifier for the wallet, as provided by you during wallet
            creation.
          example: WALLET936721
        cf_sub_wallet_id:
          type: string
          description: >-
            Unique identifier of the sub-wallet for which eligibility was
            checked.
          example: '35246543210987654321'
        amount:
          type: number
          format: double
          description: Transaction amount that was validated.
          example: 600
        flow_type:
          type: string
          description: |
            Type of transaction that was checked.
            - CREDIT
            - DEBIT
          example: DEBIT
    StructuredErrorResponse:
      type: object
      properties:
        type:
          type: string
          description: A broad category of the error.
          example: internal_error
        code:
          type: string
          description: A machine-readable error code specific to the issue.
          example: internal_server_error
        message:
          type: string
          description: >-
            A message providing more details about the error, dynamic based on
            the specific issue.
          example: Internal server error
  responses:
    Response401:
      description: Unauthorised - Invalid or missing authentication.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            invalidCredentials:
              summary: Invalid client credentials
              value:
                code: authentication_failed
                type: authentication_error
                message: Invalid client ID and client secret combination
  securitySchemes:
    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).
    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).

````