> ## 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 E-Sign Request

> Use this API to create signature request by passing the signer(s) details and document ID that is received as a response in [Upload Document API](https://www.cashfree.com/docs/api-reference/vrs/v2/e-sign/upload-document-for-e-sign#upload-document-for-e-sign).



## OpenAPI

````yaml post /esignature
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:
  /esignature:
    post:
      tags:
        - E-sign
      summary: Create E-Sign Request
      description: >-
        Use this API to create signature request by passing the signer(s)
        details and document ID that is received as a response in [Upload
        Document
        API](https://www.cashfree.com/docs/api-reference/vrs/v2/e-sign/upload-document-for-e-sign#upload-document-for-e-sign).
      operationId: VrsESignCreateSignature
      parameters:
        - $ref: '#/components/parameters/x_cf_signature'
      requestBody:
        $ref: '#/components/requestBodies/ESignVerificationCreateSignatureRequest'
      responses:
        '200':
          $ref: '#/components/responses/ESignVerificationCreateSignatureResponse'
        '400':
          $ref: '#/components/responses/Response400ESignVerificationCreateSign'
        '401':
          $ref: '#/components/responses/Response401'
        '403':
          $ref: '#/components/responses/Response403'
        '409':
          $ref: '#/components/responses/Response409Conflict'
        '422':
          $ref: '#/components/responses/Response422'
        '429':
          $ref: '#/components/responses/Response429'
        '500':
          $ref: '#/components/responses/Response500'
      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:
    ESignVerificationCreateSignatureRequest:
      description: >-
        Find the request parameters to add the details of the document and
        signer.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ESignVerificationCreateSignatureRequestSchema'
  responses:
    ESignVerificationCreateSignatureResponse:
      description: Success response for creating an e-signature request.
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/ESignVerificationCreateSignatureResponseSchema
          examples:
            SUCCESS:
              value:
                status: SUCCESS
                verification_id: ABC00123
                reference_id: 33
                document_id: 36
                signing_link: SIGNING_LINK
    Response400ESignVerificationCreateSign:
      description: Validation errors for Create E-Sign Request API.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Verification ID Missing:
              $ref: '#/components/examples/VerificationIdMissing'
            Verification ID With Special Chars:
              $ref: '#/components/examples/VerificationIdWithSpecialCharacter'
            Document ID Missing:
              $ref: '#/components/examples/DocumentIDMissing'
            Invalid Document ID:
              $ref: '#/components/examples/InvalidDocumentID'
            Invalid Page Number:
              $ref: '#/components/examples/InvalidPageNumber'
            Sign Position Small:
              $ref: '#/components/examples/SignPositionSmall'
            Sign Position Large:
              $ref: '#/components/examples/SignPositionLarge'
            Document ID Expired:
              $ref: '#/components/examples/DocumentIDExpired'
            Notification Modes Missing:
              $ref: '#/components/examples/NotificationModesMissing'
            Invalid Notification Modes:
              $ref: '#/components/examples/InvalidNotificationModes'
            Invalid Aadhaar Details Length:
              $ref: '#/components/examples/InvalidAadhaarDetailsLength'
            Invalid Aadhaar Details Type:
              $ref: '#/components/examples/InvalidAadhaarDetailsType'
            Number Of Signers Exceeded Limit:
              $ref: '#/components/examples/NumberOfSignersExceededLimit'
            AuthType Missing:
              $ref: '#/components/examples/AuthTypeMissing'
            Expiry In Days Missing:
              $ref: '#/components/examples/ExpiryInDaysMissing'
            Signers Missing:
              $ref: '#/components/examples/SignersMissing'
            Duplicate Signers Sequence:
              $ref: '#/components/examples/DuplicateSignersSequence'
            Invalid Signers Sequence:
              $ref: '#/components/examples/InvalidSignersSequence'
            Multiple Signer Not Allowed without Email Notification Mode:
              $ref: >-
                #/components/examples/MultipleSignerNotAllowedWithoutEmailNotificationMode
            Client ID/Client Secret in 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
    Response409Conflict:
      description: Conflict error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Duplicate Verification ID:
              value:
                type: validation_error
                code: invalid_verification_id
                message: This Verification ID already exists. Provide a different ID.
    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
    Response500:
      description: Internal error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseSchema'
          examples:
            Internal Server Error:
              value:
                type: internal_error
                code: request_failed
                message: Unable to process your request. Try again after some time
  schemas:
    ESignVerificationCreateSignatureRequestSchema:
      type: object
      example:
        verification_id: ABC00123
        document_id: 36
        notification_modes:
          - email
        auth_type: AADHAAR
        expiry_in_days: '2'
        capture_location: false
        signers:
          - name: John Doe
            email: John.Doe@email.com
            phone: '9999999999'
            sequence: 1
            aadhaar_last_four_digit: '6789'
            sign_positions:
              - page: 1
                top_left_x_coordinate: 100
                bottom_right_x_coordinate: 200
                top_left_y_coordinate: 180
                bottom_right_y_coordinate: 120
              - page: 2
                top_left_x_coordinate: 100
                bottom_right_x_coordinate: 200
                top_left_y_coordinate: 180
                bottom_right_y_coordinate: 120
      required:
        - verification_id
        - document_id
        - notification_modes
        - auth_type
        - expiry_in_days
        - signers
      properties:
        verification_id:
          description: >-
            It is the unique ID you create to identify the verification request.
            The maximum character limit is 50. Only alphanumeric, period (.),
            hyphen (-), and underscore ( _ ) are allowed.
          type: string
          example: ABC00123
          default: ABC00123
        document_id:
          description: >-
            It is the unique ID received in the Upload Document for E-Sign API
            response.
          type: integer
          example: 36
          default: 36
        notification_modes:
          description: >
            Specifies how you want to notify the signee about the e-sign
            details.


            **Possible values:**

            - `["email"]`: An email with the signing link will be sent to the
            signer's email address.

            - `[]`: No communication will be triggered to the signer. **Note:**
            For this option, the request must contain only one signer.
          type: array
          items:
            type: string
            enum:
              - email
          example:
            - email
        auth_type:
          description: It is the type of authentication to be used for signature.
          type: string
          enum:
            - AADHAAR
          example: AADHAAR
        expiry_in_days:
          description: >-
            It is the expiry of the signing link for each signer in days. The
            maximum allowed time is 15 days.
          type: string
          example: '2'
          default: '2'
        capture_location:
          type: boolean
          description: >-
            It is an option to capture the location of the signer. If enabled,
            the signer will be requested to give their location permission.
          example: false
          default: false
        signers:
          description: It should contain the details of the signer(s).
          type: array
          default:
            - name: John Doe
              email: John.Doe@email.com
              phone: '9999999999'
              sequence: 1
              aadhaar_last_four_digit: '6789'
              sign_positions:
                - page: 1
                  top_left_x_coordinate: 100
                  bottom_right_x_coordinate: 200
                  top_left_y_coordinate: 180
                  bottom_right_y_coordinate: 120
                - page: 2
                  top_left_x_coordinate: 100
                  bottom_right_x_coordinate: 200
                  top_left_y_coordinate: 180
                  bottom_right_y_coordinate: 120
          items:
            type: object
            properties:
              name:
                description: It is the name of the signer.
                type: string
                example: John Doe
                default: John Doe
              email:
                description: It is the email ID of the signer.
                type: string
                format: email
                example: abc.def@klm.com
                default: abc.def@klm.com
              phone:
                description: It is the phone number of the signer.
                type: string
                example: '9999999999'
                default: '9999999999'
              sequence:
                description: >-
                  It displays the sequence of the signer to sign the document.
                  The value can be between 1 to n where n is number of signers.
                type: integer
                example: 1
                default: 1
              aadhaar_last_four_digit:
                description: It displays the last 4 digit of signer's aadhaar number.
                type: string
                example: '6789'
              sign_positions:
                description: >-
                  It displays the page wise coordinates of the rectangular space
                  for signature placement.
                type: array
                items:
                  type: object
                  properties:
                    page:
                      description: >-
                        It is the page number where the signer places the
                        signature.
                      type: integer
                      example: 1
                      default: 1
                    top_left_x_coordinate:
                      description: >-
                        It is the top left X coordinate of the signature area
                        (rectangular).
                      type: integer
                      example: 100
                      default: 100
                    bottom_right_x_coordinate:
                      description: >-
                        It is the bottom right X coordinate of the signature
                        area (rectangular).
                      type: integer
                      example: 200
                      default: 200
                    top_left_y_coordinate:
                      description: >-
                        It is the top left Y coordinate of the signature area
                        (rectangular).
                      type: integer
                      example: 180
                      default: 180
                    bottom_right_y_coordinate:
                      description: >-
                        It is the bottom right Y coordinate of the signature
                        area (rectangular).
                      type: integer
                      example: 120
                      default: 120
                  required:
                    - page
                    - top_left_x_coordinate
                    - bottom_right_x_coordinate
                    - top_left_y_coordinate
                    - bottom_right_y_coordinate
            required:
              - name
              - email
              - sequence
              - sign_positions
          example:
            - name: John Doe
              email: John.Doe@email.com
              phone: '9999999999'
              sequence: 1
              aadhaar_last_four_digit: '6789'
              sign_positions:
                - page: 1
                  top_left_x_coordinate: 100
                  bottom_right_x_coordinate: 200
                  top_left_y_coordinate: 180
                  bottom_right_y_coordinate: 120
                - page: 2
                  top_left_x_coordinate: 100
                  bottom_right_x_coordinate: 200
                  top_left_y_coordinate: 180
                  bottom_right_y_coordinate: 120
        redirect_url:
          description: >-
            It is the URL that you need to provide that takes the user to after
            completing the e-sign journey. It will contain the verification_id
            that can be used to get the status of the verification.
          type: string
          example: REDIRECT_PAGE_URL
          default: REDIRECT_PAGE_URL
    ESignVerificationCreateSignatureResponseSchema:
      type: object
      properties:
        status:
          type: string
          description: >-
            It displays the status of the API request. Possible values are: -
            `SUCCESS`: Successfully initiated request for e-signature.
          example: SUCCESS
        verification_id:
          type: string
          description: It displays the unique ID you created to identify the API request.
          example: ABC00123
        reference_id:
          type: integer
          description: >-
            It displays the unique ID created by Cashfree Payments for reference
            purposes.

            format: `int64`
          example: 33
        document_id:
          type: integer
          description: >-
            It displays the unique ID created by Cashfree Payments to identify
            the document. You receive this ID in the response of Upload Document
            For E-Sign API.
          example: 36
        signing_link:
          type: string
          description: >-
            It displays the link to proceed with the e-signature of the document
            for the first signer.
          example: SIGNING_LINK
    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.
    VerificationIdWithSpecialCharacter:
      value:
        type: validation_error
        code: verification_id_value_invalid
        message: >-
          verification_id can include only alphanum, dot, hyphen and
          underscores.
    DocumentIDMissing:
      value:
        type: validation_error
        code: document_id_missing
        message: document_id is missing in the request.
    InvalidDocumentID:
      value:
        type: validation_error
        code: invalid_input
        message: Document ID provided is invalid.
    InvalidPageNumber:
      value:
        type: validation_error
        code: invalid_input
        message: Sign position page number 8 doesn't exist in the document
    SignPositionSmall:
      value:
        type: validation_error
        code: invalid_input
        message: Sign position is too small
    SignPositionLarge:
      value:
        type: validation_error
        code: invalid_input
        message: Sign position is too large
    DocumentIDExpired:
      value:
        type: validation_error
        code: invalid_input
        message: Document ID provided is expired.
    NotificationModesMissing:
      value:
        type: validation_error
        code: notification_modes_missing
        message: notification_modes is missing in the request.
    InvalidNotificationModes:
      value:
        type: validation_error
        code: invalid_input
        message: Notification mode provided is invalid.
    InvalidAadhaarDetailsLength:
      value:
        type: validation_error
        code: aadhaar_last_four_digit_value_invalid
        message: aadhaar_last_four_digit should be 4 characters.
    InvalidAadhaarDetailsType:
      value:
        type: validation_error
        code: aadhaar_last_four_digit_value_invalid
        message: aadhaar_last_four_digit should be numeric.
    NumberOfSignersExceededLimit:
      value:
        type: validation_error
        code: invalid_input
        message: Maximum number limit of Signer exceeded.
    AuthTypeMissing:
      value:
        type: validation_error
        code: auth_type_missing
        message: auth_type is missing in the request.
    ExpiryInDaysMissing:
      value:
        type: validation_error
        code: expiry_in_days_missing
        message: expiry_in_days is missing in the request.
    SignersMissing:
      value:
        type: validation_error
        code: signers_missing
        message: signers is missing in the request.
    DuplicateSignersSequence:
      value:
        type: validation_error
        code: invalid_input
        message: Duplicate sequence passed for signers
    InvalidSignersSequence:
      value:
        type: validation_error
        code: invalid_input
        message: Sequence passed for signers is Invalid
    MultipleSignerNotAllowedWithoutEmailNotificationMode:
      value:
        type: validation_error
        code: invalid_input
        message: Multiple signer is not allowed without email notification mode
    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).

````