Cashfree Payments Generate KYC Link API
The Generate KYC Link API from Cashfree Payments — 1 operation(s) for generate kyc link.
The Generate KYC Link API from Cashfree Payments — 1 operation(s) for generate kyc link.
openapi: 3.0.0
info:
version: '2025-01-01'
title: Cashfree Payment Gateway APIs Authorize Generate KYC Link API
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
description: Cashfree's Payment Gateway APIs provide developers with a streamlined pathway to integrate advanced payment processing capabilities into their applications, platforms and websites.
servers:
- url: https://sandbox.cashfree.com/pg
description: Sandbox server
- url: https://api.cashfree.com/pg
description: Production server
tags:
- name: Generate KYC Link
paths:
/form:
post:
operationId: VrsGenerateKYCLink
security:
- XClientID: []
XClientSecret: []
parameters:
- $ref: '#/components/parameters/x_cf_signature'
tags:
- Generate KYC Link
summary: Generate KYC Link
x-mcp:
enabled: true
config:
elicitation:
$ref: '#/components/x-elicitationConfig/VrsGenerateKYCLink'
description: Use this API to generate a verification form to verify the KYC information of your users digitally.
requestBody:
$ref: '#/components/requestBodies/GenerateKYCLinkRequest'
responses:
'200':
$ref: '#/components/responses/GenerateFormLinkResponse'
'400':
$ref: '#/components/responses/Response400KYCLinkGeneration'
'401':
$ref: '#/components/responses/Response401'
'403':
$ref: '#/components/responses/Response403'
'409':
$ref: '#/components/responses/Response409DuplicateId'
'422':
$ref: '#/components/responses/Response422'
'429':
$ref: '#/components/responses/Response429'
'500':
$ref: '#/components/responses/Response500'
components:
schemas:
GenerateFormLinkResponseSchema:
description: Find the success response of Generate KYC Link
type: object
properties:
name:
type: string
description: It displays the name of the individual.
example: John Doe
phone:
type: string
description: It displays the phone number of the individual.
example: '9999999999'
email:
type: string
description: It displays the email address of the individual.
example: test@cashfree.com
verification_id:
type: string
description: It displays the unique ID you created to identity the form.
example: ABC00123
reference_id:
type: integer
description: It displays the unique ID created by Cashfree Payments for reference purposes.
example: 235461
form_link:
type: string
description: It displays the URL of the KYC Link.
example: https://forms-test.cashfree.com/verification/Y7tpcan5ksm0
form_status:
type: string
description: It displays the status of the form.
example: RECEIVED
emailString:
description: Email string
type: string
example: email
GenerateKYCLinkRequestSchema:
description: Request Body Schema for Generate KYC Link
type: object
required:
- phone
- template_name
- verification_id
properties:
name:
type: string
description: It is the name of the individual.
example: John Doe
phone:
type: string
description: It is the phone number of the individual.
example: '9999999999'
email:
type: string
description: It is the email address of the individual.
example: test@cashfree.com
template_name:
type: string
description: It is the name of the template you created using the merchant dashboard. You can also use the default template found there to generate the verification form. The default template is Aadhaar_verification. Using merchant dashboard, customized KYC Link templates can be created.
example: Aadhaar_verification
link_expiry:
type: string
description: It is the expiry date of the link. Its value can be max 30 days from the current date.
example: '2025-06-01'
notification_types:
type: array
description: It is the type(s) of notification used for sending the link.
items:
oneOf:
- $ref: '#/components/schemas/smsString'
- $ref: '#/components/schemas/emailString'
- $ref: '#/components/schemas/whatsappString'
verification_id:
type: string
description: It is the unique ID you created to identify the KYC link.
example: ABC00123
whatsappString:
description: Whatsapp string
type: string
example: whatsapp
ErrorResponseSchema:
description: Response in case of error.
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.
smsString:
description: SMS string
type: string
example: sms
examples:
VerificationIdWithSpecialCharacter:
value:
type: validation_error
code: verification_id_value_invalid
message: verification_id can include only alphanum, dot, hyphen and underscores.
UsingTestCredentialsInProd:
value:
type: validation_error
code: x-client-secret_value_invalid
message: Client secret belongs to test environment
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.
responses:
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
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
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
GenerateFormLinkResponse:
description: Response Body for Generate KYC Link API
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateFormLinkResponseSchema'
Response400KYCLinkGeneration:
description: Validation errors for Generate KYC Link 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'
Verification_id Character Limit Exceeded:
value:
type: validation_error
code: verification_id_length_exceeded
message: verification_id can include a maximum of 50 characters.
Name Invalid:
value:
type: validation_error
code: name_value_invalid
message: name should only contains alphanumeric, space, dot and hyphen.
Template Name Invalid:
value:
type: validation_error
code: Bad request, please check API documentation
message: template name should be valid
Expiry Date Invalid:
value:
type: validation_error
code: REQUEST_INVALID
message: Please enter valid expiry date
Client ID/Client Secret in Missing:
$ref: '#/components/examples/XClientIdMissing'
Using-Test-Credentials-in-Prod:
$ref: '#/components/examples/UsingTestCredentialsInProd'
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
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
Response409DuplicateId:
description: Conflict error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseSchema'
examples:
Conflict Error:
value:
type: validation_error
code: verification_id_already_exists
message: verification id already exists
requestBodies:
GenerateKYCLinkRequest:
description: Find the request parameters for Generate KYC Link.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateKYCLinkRequestSchema'
parameters:
x_cf_signature:
description: Send the signature if IP is not whitelisted
name: x-cf-signature
in: header
required: false
schema:
type: string
example: ''
x-elicitationConfig:
VrsGenerateKYCLink:
enabled: true
fields:
phone:
required: false
message: Please provide the phone number
schema:
type: string
title: Phone Number
description: Phone number of the user
mapping:
target: body.phone
transform: string
template_name:
required: true
message: Please provide the template name
schema:
type: string
title: Template Name
description: Template Name of the KYC form
mapping:
target: body.template_name
transform: string
securitySchemes:
XClientID:
type: apiKey
in: header
name: x-client-id
description: Client app ID. You can find your app id in the [merchant dashboard](https://merchant.cashfree.com/merchants/pg/developers/api-keys?env=prod").
XClientSecret:
type: apiKey
in: header
name: x-client-secret
description: Client secret key. You can find your secret in the [merchant dashboard](https://merchant.cashfree.com/merchants/pg/developers/api-keys?env=prod").
XClientSignatureHeader:
type: apiKey
in: header
name: x-client-signature
description: Use this if you do not want to pass the secret key and instead want to use the signature.
XPartnerAPIKey:
type: apiKey
in: header
name: x-partner-apikey
description: If you are partner and you are making an api call on behalf of a merchant
XPartnerMerchantID:
type: apiKey
in: header
name: x-partner-merchantid
description: If you are partner use this to specify the merchant id if you don't have the merchant client app id
externalDocs:
url: https://api.cashfree.com/pg
description: This url will have the information of all the APIs.
x-readme:
explorer-enabled: true
proxy-enabled: true
samples-enabled: true
samples-languages:
- shell