Cashfree Secure ID (Verification) API
Identity verification and KYC API supporting PAN, Aadhaar, bank account, GST, passport, driving licence verification, face match, and video KYC for onboarding and compliance workflows.
Identity verification and KYC API supporting PAN, Aadhaar, bank account, GST, passport, driving licence verification, face match, and video KYC for onboarding and compliance workflows.
{
"openapi": "3.0.0",
"info": {
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
},
"contact": {
"email": "[email protected]",
"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": "Test Server",
"url": "https://sandbox.cashfree.com/verification"
},
{
"description": "Production Server",
"url": "https://api.cashfree.com/verification"
}
],
"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": "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": "Liveliness",
"description": "Operation related to Liveliness."
},
{
"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": "Secure-Share",
"description": "Operations related to secure-share."
},
{
"name": "BharatOCR",
"description": "Operations related to BharatOCR."
}
],
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
},
"XClientID": {
"type": "apiKey",
"in": "header",
"name": "x-client-id",
"description": "Client ID. You can find your ID in the [Merchant Dashboard](https://merchant.cashfree.com/verificationsuite/developers/api-keys)."
},
"XClientSecret": {
"type": "apiKey",
"in": "header",
"name": "x-client-secret",
"description": "Client secret key. You can find your secret key in the [Merchant Dashboard](https://merchant.cashfree.com/verificationsuite/developers/api-keys)."
},
"UVXClientID": {
"type": "apiKey",
"in": "header",
"name": "x-client-id",
"description": "Client ID. You can find your ID in the [Merchant Dashboard](https://merchant.cashfree.com/verificationsuite/secure-share)."
},
"UVXClientSecret": {
"type": "apiKey",
"in": "header",
"name": "x-client-secret",
"description": "Client secret key. You can find your secret key in the [Merchant Dashboard](https://merchant.cashfree.com/verificationsuite/secure-share)."
}
},
"schemas": {
"BharatOCRRequestSchema": {
"description": "Request parameters for BharatOCR.",
"type": "object",
"example": {
"verification_id": "test_verification_id",
"document_tag": "PAN",
"file": "abc",
"file_url": "https://linkofFile",
"do_verification": true
},
"required": [
"verification_id",
"document_type",
"file",
"file_url"
],
"properties": {
"verification_id": {
"type": "string",
"description": "It is the unique ID you create to identify the verification request. The maximum character limit is 50. Only alphaumeric, period (.), hyphen (-), and underscore ( _ ) are allowed.",
"example": "test_verification_id",
"default": "test_verification_id"
},
"document_type": {
"type": "string",
"description": "Tag depicts the document type of the file being shared in the request. Allowed values are PAN, AADHAAR, DRIVING_LICENCE, VOTER_ID, PASSPORT, VEHICLE_RC, CANCELLED_CHEQUE, and INVOICE.",
"example": "PAN",
"default": "PAN"
},
"file": {
"format": "binary",
"description": "Image of the document. Allowed file types: JPEG, JPG, or PNG. The maximum file size is 5 MB. Conditionally required when image_url is missing.",
"type": "string",
"example": "image"
},
"file_url": {
"type": "string",
"description": "Public URL of the image. Allowed only https URL. Allowed file types: JPEG, JPG, or PNG. The maximum file size is 5 MB. Conditionally required when the image is missing.",
"example": "https://linkofFile",
"default": "file_url"
},
"do_verification": {
"type": "boolean",
"description": "Indicates whether PAN verification should be performed. When set to `true`, the API validates the individual's PAN details, including the unique identifier, name, date of birth, and other relevant information. This verification assists in customer onboarding, KYC compliance, and fraud prevention. Defaults to `false`.",
"example": "true",
"default": "false"
}
}
},
"BharatOCRResponseSchema": {
"description": "Success response for retrieving the list of information associated with the mobile number.",
"type": "object",
"properties": {
"verification_id": {
"type": "string",
"description": "It is the unique ID shared by the merchant for each request.",
"example": "test_verification_id"
},
"reference_id": {
"type": "integer",
"description": "It displays the unique ID created by Cashfree Payments for reference purposes.",
"example": 1358
},
"document_type": {
"type": "string",
"description": "The field will show the document_type shared or predicted if it is not shared in the request.",
"example": "VOTED_ID"
},
"document_fields": {
"type": "object",
"description": "Structure with all the relevant fields in the input image.",
"properties": {
"voter_id_number": {
"type": "string",
"description": "It displays the voter id number.",
"example": "ABC1234567"
},
"name": {
"type": "string",
"description": "It displays the name of the voter id holder.",
"example": "John Doe"
},
"guardian_name": {
"type": "string",
"description": "It displays the name of the guardian of the voter id holder",
"example": "Josh Doe"
},
"gender": {
"type": "string",
"description": "It displays the gender of the voter ID holder.",
"example": "Male"
},
"date_of_birth": {
"type": "string",
"description": "It displays the date of birth of the ID holder.",
"example": "2001-10-02"
},
"address": {
"type": "string",
"description": "It displays the address of the voter ID holder.",
"example": "Floor 1, Vaishnavi summit, Koramanagala Block 3, Bengaraluru, Karnataka"
},
"date_of_issue": {
"type": "string",
"description": "It displays the date of issue of the voter ID.",
"example": "2023-08-15"
}
}
},
"quality_checks": {
"type": "object",
"description": "Contains all the quality checks the product performs on the given input image.",
"properties": {
"blur": {
"type": "boolean",
"description": "Conveys whether the image is blurred or not.",
"example": false
},
"partially_present": {
"type": "boolean",
"description": "Conveys whether the image is partially present or not.",
"example": false
},
"black_and_white": {
"type": "boolean",
"description": "Conveys if the image is black and white.",
"example": true
},
"face_present": {
"type": "boolean",
"description": "Conveys whether the document in the image has a face present.",
"example": true
},
"qr_present": {
"type": "boolean",
"description": "Conveys whether the document in the image has a QR.",
"example": false
}
}
},
"fraud_checks": {
"type": "object",
"description": "It displays the personal information of the mobile number holder.",
"properties": {
"is_screenshot": {
"type": "boolean",
"description": "Conveys true if the image input is a screenshot.",
"example": false
},
"is_photo_of_screen": {
"type": "boolean",
"description": "Conveys true if the input photo is the photo of a screen.",
"example": false
}
}
},
"verification_details": {
"type": "object",
"description": "It displays the personal information of the mobile number holder.",
"properties": {
"reference_id": {
"type": "integer",
"description": "It displays the unique ID created by Cashfree Payments for reference purposes."
},
"pan": {
"type": "string",
"description": "It is the unique 10-character alphanumeric identifier of the individual issued by the Income Tax Department. The first 5 should be alphabets followed by 4 numbers and the 10th character should again be an alphabet.",
"example": "ABCTY1234D"
},
"name": {
"type": "string",
"description": "It is the name of the individual as per the PAN information",
"example": "John Doe"
},
"dob": {
"type": "string",
"description": "It is the date of birth of the individual as per the PAN information. The format is YYYY-MM-DD",
"example": "1993-06-30"
},
"name_match": {
"type": "string",
"description": "It displays the result of name match verification.\nThe possible values are:\n- `Y` : The name entered matches with the name present on the PAN.\n- `N` : The name entered does not match with the name present on the PAN.",
"example": "Y"
},
"dob_match": {
"type": "string",
"description": "It displays the result of the date of birth verification. \nThe possible values are:\n- `Y` : The date of birth of the individual matches with the date of birth present on PAN.\n- `N` : The date of birth of the individual does not match with the date of birth present on PAN.",
"example": "Y"
},
"pan_status": {
"type": "string",
"description": "It displays the status of the PAN information.\nThe possible values are:\n\n - `E` : The entered PAN information is valid.\n\n - `EC`: The entered PAN information exists and is valid but marked as Acquisition.\n\n - `N` : The entered PAN information does not exist in the database.\n\n - `X` : The entered PAN information has been deactivated.\n\n - `F` : The entered PAN information is fake.\n\n - `D` : The entered PAN information has been deleted.\n\n - `EA` : The entered PAN information is valid but marked as Amalgamation.\n\n - `ED` : The entered PAN information is valid but marked as Death.\n\n - `EI` : The entered PAN information is valid but marked as Dissolution.\n\n - `EL` : The entered PAN information is valid but marked as Liquidated.\n\n - `EM` : The entered PAN information is valid but marked as Merger.\n\n - `EP` : The entered PAN information is valid but marked as Partition.\n\n - `ES` : The entered PAN information is valid but marked as Split.\n\n - `EU` : The entered PAN information is valid but marked as Under Liquidation.",
"example": "E"
},
"status": {
"type": "string",
"description": "It displays status of PAN. \nThe Possible Values are:\n- `VALID`\n- `INVALID`",
"example": "VALID"
},
"aadhaar_seeding_status": {
"type": "string",
"description": "It displays whether the individual linked the aadhaar information with PAN. \nThe possible values are:\n- `Y`: Aadhaar is linked to PAN\n- `R`: Aadhaar is not linked to PAN\n- `NA`: Not applicable, in case of business PAN",
"example": "Y"
},
"aadhaar_seeding_status_desc": {
"type": "string",
"description": "It displays additional information of the linking of aadhaar and PAN card.",
"example": "Aadhaar is linked to PAN"
}
}
}
}
},
"Scope": {
"type": "object",
"properties": {
"scope": {
"description": "This describes the scope for which the user has provided consent.",
"type": "string",
"example": "MOBILE"
},
"records": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/Mobile_Record"
},
{
"$ref": "#/components/schemas/Email_Record"
},
{
"$ref": "#/components/schemas/Address_Record"
},
{
"$ref": "#/components/schemas/Gender_Record"
},
{
"$ref": "#/components/schemas/DOB_Record"
},
{
"$ref": "#/components/schemas/Aadhaar_Record"
},
{
"$ref": "#/components/schemas/PAN_Record"
},
{
"$ref": "#/components/schemas/BAV_Record"
},
{
"$ref": "#/components/schemas/Name_Record"
},
{
"$ref": "#/components/schemas/Occupation_Record"
},
{
"$ref": "#/components/schemas/Income_Record"
}
]
}
}
}
},
"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": "[email protected]"
},
"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"
}
}
},
"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": "[email protected]"
},
"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"
}
}
},
"StaticKYCLinkRequestSchema": {
"description": "Request Body Schema for Generate Static KYC Link",
"type": "object",
"example": {
"template_name": "Aadhaar_verification"
},
"required": [
"template_name"
],
"properties": {
"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 static KYC link. The default template is Aadhaar_verification. Using merchant dashboard, customized KYC Link templates can be created.",
"example": "Aadhaar_verification"
}
}
},
"GenerateFormLinkQRCodeResponseSchema": {
"description": "Find the success response of Generate Static KYC Link",
"type": "object",
"properties": {
"static_link": {
"type": "string",
"description": "It displays the URL of the static KYC Link.",
"example": "https://forms.cashfree.com/verification/global-link/Y7tpcan5ksm0"
},
"qr_code": {
"type": "string",
"description": "It displays the generated QR code link to the static KYC Link. request.",
"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="
},
"template_name": {
"type": "string",
"description": "It is the name of the template you selected for creating QR Code.",
"example": "Aadhaar_verification"
},
"status": {
"type": "string",
"description": "It displays the status of the static link.\nPossible values are:\n- `ACTIVE`",
"example": "ACTIVE"
}
}
},
"DeactivateStaticKYCLinkResponseSchema": {
"description": "Find the success response of Deactivate Static KYC Link",
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "It displays whether template name is deactivated.",
"example": "Successfully Deactivated"
},
"static_link": {
"type": "string",
"description": "It displays the URL of the static KYC Link.",
"example": "https://forms.cashfree.com/verification/global-link/Y7tpcan5ksm0"
},
"template_name": {
"type": "string",
"description": "It is the name of the template you selected for creating static link.",
"example": "Aadhaar_verification"
},
"status": {
"type": "string",
"description": "It displays the status of the deactivated static link.\nPossible values are:\n- `INACTIVE`",
"example": "INACTIVE"
}
}
},
"getFormStatusResponseSchema": {
"description": "Find the success response for Get Form Status",
"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": "[email protected]"
},
"verification_id": {
"type": "string",
"description": "It displays the unique ID you created to identify the form.",
"example": "testverificationid"
},
"reference_id": {
"type": "integer",
"description": "It displays the unique ID created by Cashfree Payments for reference purposes.",
"example": 235461
},
"link_expiry": {
"type": "string",
"description": "It displays the expiry date of the link.",
"example": "2025-12-02"
},
"form_link": {
"type": "string",
"description": "It displays the URL of the form.",
"example": "https://forms.cashfree.com/"
},
"form_status": {
"type": "string",
"description": "It displays the status of the form.",
"example": "PENDING"
},
"verification_details": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/aadhaarFormStatusResponseSchema"
},
{
"$ref": "#/components/schemas/panFormStatusResponseSchema"
},
{
"$ref": "#/components/schemas/bavFormStatusResponseSchema"
},
{
"$ref": "#/components/schemas/upiFormStatusResponseSchema"
}
]
}
}
}
},
"aadhaarFormStatusResponseSchema": {
"description": "It displays the status of aadhaar verification",
"type": "object",
"properties": {
"reference_id": {
"type": "integer",
"description": "It displays the unique ID created by Cashfree Payments for reference purposes.",
"example": 234
},
"type": {
"type": "string",
"description": "It displays the verification type.",
"example": "OFFLINE_AADHAAR_VERIFICATION"
},
"status": {
"type": "string",
"description": "It displays the verification status.",
"example": "SUCCESS"
}
}
},
"aadhaarFormDetailResponseSchema": {
"description": "Offline Aadhaar Verification Details",
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "VALID"
},
"message": {
"type": "string",
"example": "Aadhaar Card Exists"
},
"care-of": {
"type": "string",
"example": "S/O:Fakkirappa Dollin"
},
"address": {
"type": "string",
"example": "D-98,vikas puri, Lucknow,Uttar Pradesh-223009"
},
"dob": {
"type": "string",
"example": "25-09-1993"
},
"email": {
"type": "string",
"example": "[email protected]"
},
"gender": {
"type": "string",
"example": "M"
},
"name": {
"type": "string",
"example": "Test"
},
"photo_link": {
"type": "string",
"example": "http://photo-url.com"
},
"mobile_hash": {
"type": "string",
"example": "ed189eb73247cb90b769e7e8d7dfd2efa4cd6a5ec27602f5d2721c035266568c"
},
"split_address": {
"$ref": "#/components/schemas/split_address_schema"
},
"reference_id": {
"type": "integer",
"example": 234
}
}
},
"panFormStatusResponseSchema": {
"description": "PAN Verification Product Status",
"type": "object",
"properties": {
"reference_id": {
"type": "integer",
"example": 0
},
"type": {
"type": "string",
"example": "PANDETAILS_VERIFICATION"
},
"status": {
"type": "string",
"example": "PENDING"
}
}
},
"panFormDetailResponseSchema": {
"description": "PAN Verification Details Response",
"type": "object",
"properties": {
"pan": {
"type": "string",
"example": "ABCPV1234D"
},
"type": {
"type": "string",
"example": "Individual"
},
"name_provided": {
"type": "string",
"example": "Test"
},
"registered_name": {
"type": "string",
"example": "JOHN DOE"
},
"valid": {
"type": "boolean",
"example": true
},
"message": {
"type": "string",
"example": "PAN verified successfully"
},
"name_match_score": {
"type": "string",
"example": 0
},
"name_match_result": {
"type": "string",
"example": "NO_MATCH"
},
"aadhaar_seeding_status": {
"type": "string",
"example": "Y"
},
"last_updated_at": {
"type": "string",
"example": "01/01/2019"
},
"name_pan_card": {
"type": "string",
"example": "JOHN DOE"
},
"pan_status": {
"type": "string",
"example": "VALID"
},
"aadhaar_seeding_status_desc": {
"type": "string",
"example": "Aadhaar is linked to PAN"
}
}
},
"bavFormStatusResponseSchema": {
"description": "Bank Details Validation Product Status",
"type": "object",
"properties": {
"reference_id": {
"type": "integer",
"example": 236
},
"type": {
"type": "string",
"example": "BANKDETAILS_VALIDATION"
},
"status": {
"type": "string",
"example": "FAILED"
}
}
},
"bavFormDetailSchema": {
"description": "Bank Details Validation Details",
"type": "object",
"properties": {
"status": {
"type": "string"
},
"subCode": {
"type": "string"
},
"message": {
"type": "string"
},
"accountStatus": {
"type": "string"
},
"accountStatusCode": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/bavDataSchema"
}
}
},
"bavDataSchema": {
"description": "Bank Details Response",
"type": "object",
"properties": {
"nameAtBank": {
"type": "string",
"example": "JOHN DOE"
},
"bankName": {
"type": "string",
"example": "YES BANK"
},
"branch": {
"type": "string",
"example": "SANTACRUZ, MUMBAI"
},
"city": {
"type": "string",
"example": "MUMBAI"
},
"utr": {
"type": "string",
"example": 1678097392152708
},
"micr": {
"type": "integer",
"example": 0
},
"nameMatchScore": {
"type": "string",
# --- truncated at 32 KB (675 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cashfree/refs/heads/main/openapi/openapi-verification.json