> ## 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.

# Create Reverse Penny Drop Request

> Use this API to create a reverse penny drop request. Reverse penny drop is a verification method for validating bank account information. 

Your customers or users makes a payment of one rupee through a UPI based transaction and get the one rupee back within 48 hours once the verification is complete.

<Note>The generated RPD link is valid for 10 minutes. You must complete the reverse penny drop process within this time.</Note>



## OpenAPI

````yaml post /reverse-penny-drop
openapi: 3.0.0
info:
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    email: developers@cashfree.com
    name: API Support
    url: https://discord.com/invite/QdZkNSxXsB
  title: Cashfree Verification API's.
  version: '2023-12-18'
  description: >-
    Cashfree's Verification APIs provide different types of verification to our
    merchants.
servers:
  - description: Sandbox Server
    url: https://sandbox.cashfree.com/verification
  - description: Production Server
    url: https://api.cashfree.com/verification
security: []
tags:
  - name: Aadhaar
    description: Operations related to Aadhaar verification.
  - name: BAV V2
    description: Operations related to Bank account verification v2.
  - name: PAN
    description: Operations related to PAN verification.
  - name: Digilocker
    description: Operations related to Digilocker verification.
  - name: E-sign
    description: Operations related to E-sign verification.
  - name: Reverse Penny Drop
    description: Operations related to Reverse Penny Drop verification.
  - name: UPI Penny Drop
    description: Operations related to UPI Penny Drop verification.
  - name: Mobile Penny Drop
    description: Operations related to Mobile Penny Drop verification.
  - name: IP
    description: Operation related to IP verification.
  - name: UPI
    description: Operations related to UPI verification.
  - name: Passport
    description: Operation related to Passport verification.
  - name: CIN
    description: Operation related to CIN verification.
  - name: Name Match
    description: Operation related to Name Match verification.
  - name: PAN to GSTIN
    description: Operation related to PAN to GSTIN.
  - name: Face Match
    description: Operation related to Face Match verification.
  - name: Voter ID
    description: Operation related to Voter ID verification.
  - name: Reverse Geocoding
    description: Operation related to Reverse Geocoding.
  - name: Vehicle RC
    description: Operation related to Vehicle RC verification.
  - name: Driving License
    description: Operation related to Driving License verification.
  - name: GSTIN
    description: Operation related to GSTIN verification.
  - name: Account Aggregator
    description: Operations related to Account aggregator.
  - name: OTPLess
    description: Operations related to OTPLess Verification.
  - name: 1-Click
    description: Operations related to 1-Click.
  - name: Smart OCR
    description: Operations related to Smart OCR.
  - name: Geocoding
    description: Operations related to Geocoding.
  - name: Udyam
    description: Operation related to Udyam verification.
  - name: PAN to Udyam
    description: Operation related to PAN to Udyam.
paths:
  /reverse-penny-drop:
    post:
      tags:
        - Reverse Penny Drop
      summary: Create Reverse Penny Drop Request
      description: >-
        Use this API to create a reverse penny drop request. Reverse penny drop
        is a verification method for validating bank account information. 


        Your customers or users makes a payment of one rupee through a UPI based
        transaction and get the one rupee back within 48 hours once the
        verification is complete.


        <Note>The generated RPD link is valid for 10 minutes. You must complete
        the reverse penny drop process within this time.</Note>
      operationId: VrsReversePennyDropCreateRequest
      parameters:
        - $ref: '#/components/parameters/x_cf_signature'
      requestBody:
        $ref: '#/components/requestBodies/ReversePennyDropCreateRequestRequest'
      responses:
        '200':
          $ref: '#/components/responses/CreateRequestResponse'
        '400':
          $ref: '#/components/responses/Response400CreateRequest'
        '401':
          $ref: '#/components/responses/Response401'
        '403':
          $ref: '#/components/responses/Response403'
        '422':
          $ref: '#/components/responses/Response422'
        '429':
          $ref: '#/components/responses/Response429'
        '500':
          $ref: '#/components/responses/Response500AllCases'
        '502':
          $ref: '#/components/responses/Response502V2'
      security:
        - XClientID: []
          XClientSecret: []
components:
  parameters:
    x_cf_signature:
      description: >-
        Send the signature if two-factor authentication is selected as Public
        Key.  [More
        details](https://www.cashfree.com/docs/api-reference/vrs/getting-started#2fa-api-signature-generation).
      name: x-cf-signature
      in: header
      required: false
      schema:
        type: string
      example: ''
  requestBodies:
    ReversePennyDropCreateRequestRequest:
      description: Find the request parameters to create a reverse penny drop request.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateRequestRequestSchema'
  responses:
    CreateRequestResponse:
      description: Success response for creating a reverse penny drop request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateRequestResponseSchema'
          examples:
            SUCCESS:
              value:
                verification_id: '90909710'
                ref_id: 3905
                valid_upto: '2024-02-13T13:01:44.000Z'
                upi_link: >-
                  upi://pay?pa=success@upi&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=3905
                gpay: >-
                  tez://upi/pay?pa=success@upi&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=3905
                bhim: >-
                  bhim://upi://pay?pa=success@upi&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=3905
                paytm: >-
                  paytmmp://pay?pa=success@upi&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=3905
                phonepe: >-
                  phonepe://pay?pa=success@upi&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=3905
                qr_code: >-
                  iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEX///8AAABVwtN+AAACWUlEQVR42uyYy3E7LRDEe4sDR0IglM1sH+XECIUQOHKg1F/1sHrYCkDw/cXBZePfQSNmenoG3/M9/+RZSPKGtYUbVmApdrvqNk0EVAAb0MKBlXkLZN6EIkwFRJbNkzxJl5eyIh5YPduIQNmwNigKPc2cQCJZLY9YsZT5AGWU/lZxqC4U8lvKfRiw4vWphbOuLm8h1XiWt+oeHOjHJwiw64q9vMnp4IAyil1DqwmpKP1oAwHw+tUnVxYml3cm1QGkQ1MBWWq/urKTiGeB1B6Au2fUHAARDlX0zgRFWONJPqt7CmCpcKruXuLxCIm06m4DAUBEOJmcGpe7KkRp9aiLGYCFGdgrenFkSEitcbmH0k4BkGpkamr91B788WKbhwAURTh8clJ7z5tM5f4axegAEJ1alPm160JC+tK4ZgB8t2fy9vJDPaPSLyH9OLAwOx4Sy/PqvIi3kBB/ZgJ0wk0mhxUqZHjNKv4lo6YAokas1Lr1pLXfP0r7cWAhrWRN7ZuS3eddD9Ke3n58ALCAVnVem2sTYEbheH4PEwA+2xzoymWblVaBLxPKAIC9xXnNUtcYZf+76+QcgE0oNkaRLfa6LavPDyGdBHAFMpzyazYMRpuzjucgNgOAFlTdtDDNP+jt8vOxPg88JkLrvNE2Tafp0O/twdjAtWXFNdLedyCzAfd9VF8vyDZH89E/QwHXZq9sgOuffVdkb6u/GQB5e1o7qPFQO/h5EdJZAJpVswW97UDq21r+s0C/Rt9P2shtLeyYCriabp8IYXP37Y9/GB/4nu/5n53/AgAA///QrXLm5G9kaAAAAABJRU5ErkJggg==
                url: >-
                  https://verification-test.cashfree.com/rpd?shortCode=g4lnkgtaho0g
    Response400CreateRequest:
      description: Validation errors for Create Request API.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Invalid Verification ID:
              value:
                type: validation_error
                code: invalid_verification_id
                message: verification_id already exists
            Verification Id Missing:
              $ref: '#/components/examples/VerificationIdMissing'
            Client ID/Client Secret Missing:
              $ref: '#/components/examples/XClientIdMissing'
            Using-Test-Credentials-in-Prod:
              $ref: '#/components/examples/UsingTestCredentialsInProd'
    Response401:
      description: Invalid client ID and client secret combination.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Invalid client ID and client secret combination:
              value:
                type: authentication_error
                code: authentication_failed
                message: Invalid clientId and clientSecret combination
    Response403:
      description: Authentication error (IP not whitelisted).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            IP not whitelisted:
              value:
                type: authentication_error
                code: ip_validation_failed
                message: >-
                  IP not whitelisted your current ip is 106.51.91.104.For IP
                  whitelisting assistance, visit our guide at
                  https://www.cashfree.com/docs/secure-id/get-started/integration/ip-whitelisting-verification
            x-cf-signature header missing:
              value:
                type: validation_error
                code: authentication_failed
                message: x-cf-signature missing in the request header
    Response422:
      description: >-
        Validation error because of insufficient balance to process this
        request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Insufficient balance:
              value:
                type: validation_error
                code: insufficient_balance
                message: Insufficient balance to process this request
    Response429:
      description: Rate limit exceed error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Rate limit error per operation:
              value:
                type: rate_limit_error
                code: too_many_requests_per_operation
                message: Too many requests for this operation, rate limit reached
            Rate limit error per IP:
              value:
                type: rate_limit_error
                code: too_many_requests_per_ip
                message: Too many requests from the IP, rate limit reached
    Response500AllCases:
      description: Internal errors.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Internal Server Error:
              value:
                type: internal_error
                code: verification_failed
                message: Unable to validate, please retry later
                error:
                  refId: 209
            Unknown Error Occured:
              value:
                type: internal_error
                code: api_error
                message: something went wrong, please try after some time
    Response502V2:
      description: Gateway error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Bad Gateway:
              value:
                type: internal_error
                code: verification_failed
                message: verification attempt failed
  schemas:
    CreateRequestRequestSchema:
      type: object
      required:
        - verification_id
      example:
        verification_id: '11'
        name: John Doe
        redirect_url: https://example.com/success
      properties:
        verification_id:
          type: string
          description: >-
            It is the unique ID you create to identify the API request. The
            maximum character limit is 50. Only alphanumeric, hyphen (-), period
            (.), and underscore ( _ ) are allowed.
          example: '11'
          default: '11'
        name:
          type: string
          description: It is the name of the UPI VPA account holder.
          example: John Doe
          default: John Doe
        redirect_url:
          type: string
          description: >-
            The URL to redirect the user after payment is completed on the
            webpage URL in the response. If not provided, the user will be
            redirected to www.google.com by default.
          example: https://example.com/success
          default: https://www.google.com
    CreateRequestResponseSchema:
      type: object
      properties:
        verification_id:
          type: string
          description: It displays the unique ID you created to identify this API request.
          example: '11'
        ref_id:
          description: >-
            It displays the unique ID created by Cashfree Payments for reference
            purposes.

            format: `int64`
          type: integer
          example: 100173
        valid_upto:
          type: string
          description: >-
            It displays the time validity of the intent links in the create RPD
            request. By default, its value is 10 minutes from the time of link
            generation.
          example: '2023-11-08 09:32:52'
        upi_link:
          type: string
          description: >-
            It displays the generated UPI link for the reverse penny drop
            request.
          example: >-
            upi://pay?pa=yespay.cpisprod01@yesbankltd&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=100173&tid=100173
        paytm:
          type: string
          description: It displays the generated Paytm link for the reverse drop request.
          example: >-
            paytmmp://pay?pa=yespay.cpisprod01@yesbankltd&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=100173&tid=100173
        bhim:
          type: string
          description: >-
            It displays the generated BHIM link for the reverse penny drop
            request.
          example: >-
            bhim://upi://pay?pa=yespay.cpisprod01@yesbankltd&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=100173&tid=100173
        gpay:
          type: string
          description: >-
            It displays the generated Gpay link for the reverse penny drop
            request.
          example: >-
            tez://upi/pay?pa=yespay.cpisprod01@yesbankltd&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=100173&tid=100173
        phonepe:
          type: string
          description: >-
            It displays the generated Phonepe link for the reverse penny drop
            request.
          example: >-
            phonepe://pay?pa=yespay.cpisprod01@yesbankltd&pn=Cashfree&tn=BAV&am=1.00&cu=INR&tr=100173&tid=100173
        qr_code:
          type: string
          description: >-
            It displays the generated QR code for the reverse penny drop request
            in base64-encoded format.
          example: >-
            iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEX///8AAABVwtN+AAACuklEQVR42uyYwa3jMAxEx/CBR5WgTqzGgtiBG5M7UQk66mB4FkP/3WR/A5aB8PZ/3sGUqOGQ+MY3bhhGklsd6sAdiAASJgz6b70RUADLQQgiuaMBqQ0VGHsCSMvhwFBHrvqDDRjqzLUzYCPrwLWM1FG3qU+g6sMfXg9G5hsCgG3MmOtMFoAZiduviroaOJ/eFF71EdeyR8tt0uX8epuXAh4DDzzDSnKknXX9f1wMWEFSCYRXncsjjjpstkTW911cDkCqNbk+PACMhZ5DOMJ6K8Cy5ZDxDIv/bLTsijJ2BbBNyiOsBbqLZAcSX3XuB1CxSBJ+pHiH0bY2cPnQh8sBxJY8hwOIe1T3NfIIR+CNAKmFNwhZhkck9TaZw8c5XA/o6bUpSHnnMlMFw8MEPNANIOV1uzhz5YIdlpUF0BVQSOiYn3p6UL9QA6nP8OEfrgZ01N55l7DEJarj8nDpHW8EWDGe0wIXzBzZ5Hm2t3voAUC0TDkx9Yu5AC21gVKHv1rdBUAi1UnA+6hVMOwHkKfl4W7Mq7qoxxk/GsodALfiQFJeRR3D/aS63r+4HjC2ZOphS2AZqYvhxkPTRO0JgGcx/9jFlixDDWRHP0Bxu+ifzSVSyjxhAjDXjgCkJh+2BHJxu3iOtPVOgDvzzQVkLQ95MbgQz+9h8nrAXBAAPKGa3tFghx2B7+3B9YB78wMTZHJW3x7YaXLmroDsWQxyYjrqJOH99LQ3AHx6POcFf5nlZy1yfBjOy4FzB1JT9Q+nC8ggO/FO83rg3CaRGnLd9CLJiX244h6Ac5nMOlRNvLsPwaYs/o0PPQC+4ZzwlCkre6QvONzW3AzIYeNpedWaW2pTeNXugHPHxbVQ/mFrCK//F/tXA14wWQ2CexyLTxM+BHcE/F0mL2HHI+5AsmzS2h33Ab7xja7iTwAAAP//HxNnsaD8lqMAAAAASUVORK5CYII=
        url:
          type: string
          description: >-
            Webpage URL for the generated UPI link and QR code for the reverse
            penny drop request. To enable this field, complete the [Support
            Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1)
            and contact your account manager.
          example: https://verification-test.cashfree.com/rpd?shortCode=g4lnkgtaho0g
    ErrorResponseSchema:
      type: object
      properties:
        code:
          type: string
          example: x-client-id_missing
        error:
          type: object
          example:
            ref_id: 102
        message:
          type: string
          example: x-client-id is missing in the request.
          description: It displays the outcome of the error.
        type:
          type: string
          example: validation_error
          description: It displays the type of error.
  examples:
    VerificationIdMissing:
      value:
        type: validation_error
        code: verification_id_missing
        message: verification_id is missing in the request.
    XClientIdMissing:
      value:
        type: validation_error
        code: x-client-id_missing
        message: x-client-id is missing in the request.
    UsingTestCredentialsInProd:
      value:
        type: validation_error
        code: x-client-secret_value_invalid
        message: Client secret belongs to test environment
  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/verificationsuite/developers/api-keys).
    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/verificationsuite/developers/api-keys).

````