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

# Aadhaar Verification

> Comprehensive guide to Aadhaar verification methods including DigiLocker integration and Optical Character Recognition (OCR)-based approaches.

Aadhaar is a unique 12-digit number used to verify an individual's identity in India. Aadhaar verification is a critical requirement across sectors including **NBFCs**, **Banks**, **Lending companies**, and **Insurance companies** for customer onboarding and compliance. Businesses use Aadhaar verification to establish proof of identity (POI) and proof of address (POA) for their customers.

Cashfree Payments offers two primary Aadhaar verification methods to suit different business needs and user preferences:

* **[Verify Aadhaar via DigiLocker](#verify-aadhaar-via-digilocker)**: Secure, government-approved verification through DigiLocker with user consent.
* **[Verify Aadhaar via OCR](#verify-aadhaar-via-ocr)**: Document image processing using optical character recognition technology and QR code scanning.

## Verify Aadhaar via DigiLocker

DigiLocker verification offers the most secure and user-friendly method for Aadhaar verification. This government-approved platform allows users to share their verified Aadhaar documents directly from their DigiLocker account with explicit consent.

### Key benefits and features

Cashfree's Aadhaar DigiLocker verification offers the following benefits:

* **Enhanced security**: No need to share physical documents or sensitive information with built-in fraud protection.
* **Multi-document retrieval**: Access PAN, Aadhaar, and Driving License documents in a single authentication flow without separate verification requests.
* **Simplified authentication**: Users authenticate with mobile number and OTP verification, removing password and captcha requirements for streamlined onboarding.
* **Regulatory compliance**: Compliant with Digital Personal Data Protection Act (DPDPA), 2023 through user consent-based verification.
* **DigiLocker SDK availability**: Cashfree offers a dedicated [DigiLocker SDK](/api-reference/vrs/v2/digilocker/digilocker-sdk), enabling faster integration and simplified implementation.

### Integration workflow

To integrate DigiLocker verification into your application, follow these steps:

1. Use the [Verify DigiLocker Account API](/api-reference/vrs/v2/digilocker/verify-digilocker-account) to check if the user has an existing DigiLocker account.
2. Use the [Create DigiLocker Link API](/api-reference/vrs/v2/digilocker/create-digilocker-url) to generate a secure authentication link.
3. Redirect the user to the generated DigiLocker link to log in and provide document sharing consent.
4. Use the [Get Verification Status API](/api-reference/vrs/v2/digilocker/get-digilocker-verification-status) to monitor the verification progress.
5. Use the [Get Document API](/api-reference/vrs/v2/digilocker/get-document-from-digilocker) to retrieve the verified Aadhaar document and user details.
6. Configure webhook endpoints to receive real-time status updates throughout the verification process.

For complete implementation details, see the [DigiLocker Integration Guide](/api-reference/vrs/v2/digilocker/digilocker-integration).

## Verify Aadhaar via OCR

OCR verification allows you to verify Aadhaar information by processing document images. This method uses OCR technology to extract text from images or scanned documents and convert it to machine-readable format.

### Key benefits and features

Cashfree's Aadhaar OCR verification offers the following benefits:

* **High extraction accuracy**: Advanced OCR technology delivers over 99% accuracy for clearly visible document fields including name, gender, DOB, and address.
* **QR code cross-verification**: Identity verification through UIDAI database-sourced QR code data with cross-validation against extracted text.
* **Quality checks**: Automated detection of image quality issues such as blur, glare, and poor lighting to nudge users to upload higher quality documents, improving extraction accuracy.
* **Forgery detection**: Comprehensive fraud prevention covering all types of forgery checks, trained on large datasets to detect and prevent forged document submissions.
* **Automatic document detection**: Intelligent classification to determine whether the submitted document is an Aadhaar card and identify front/back sides automatically.
* **Flexible input**: Support for various image formats and document types with automated processing.

### Extraction accuracy and quality assurance

The Aadhaar OCR (part of Smart OCR) delivers extraction accuracy of over 99% for document fields that are clearly visible to the naked eye, including name, gender, DOB, and address, among others.

The OCR includes multiple quality and forgery checks to help you classify the submission of the document and nudge your users accordingly. The forgery checks also ensure that the document submitted isn't tampered with in any possible way.

### Quick response code verification and data validation

The solution scans the Aadhaar card's QR code instantaneously and cross-verifies it with the extracted document details, ensuring higher data accuracy and minimising the possibilities of a forged Aadhaar submission.

### Quick response code verification features

Aadhaar documents contain secure QR codes with data sourced from UIDAI (Unique Identification Authority of India) database, offering superior identity verification capabilities.

* **UIDAI database integration**: QR code data originates directly from the official UIDAI database, ensuring data authenticity and eliminating tampering risks.
* **Dual verification approach**: Cross-validate OCR-extracted text against QR code data to detect discrepancies and confirm document authenticity.
* **Enhanced identity confirmation**: Combination of visual text extraction and database-verified QR data creates a robust verification framework.
* **Real-time data accuracy**: QR codes contain the most current information from government records.

## Fraud prevention and identity verification security

Aadhaar verification includes built-in security measures to detect and prevent identity fraud during the verification process.

* **Document authenticity validation**: [Smart OCR](/api-reference/vrs/v2/smart-ocr/smart-ocr) offers document tampering detection to identify forged or modified Aadhaar documents.
* **Spoofing detection**: Smart OCR automatically detects photos of screens and digitally imposed images to prevent submission of fraudulent documents.
* **QR code verification**: Advanced QR code scanning validates embedded security features in Aadhaar documents, cross-referencing with UIDAI database for data integrity.
* **Real-time validation**: Cross-reference extracted data against multiple validation points to detect inconsistencies and potential fraud attempts.

## Next steps

### Get started with DigiLocker verification

To get started with Cashfree's DigiLocker verification, follow these steps:

1. Review the [DigiLocker Integration Guide](/api-reference/vrs/v2/digilocker/digilocker-integration).
2. Test the integration using [Verify DigiLocker Account API](/api-reference/vrs/v2/digilocker/verify-digilocker-account).
3. Check [DigiLocker FAQs](/secure-id/digilocker/digilocker-faqs) for common questions.

### Get started with optical character recognition verification

To get started with Cashfree's OCR verification, follow these steps:

1. Integrate [Smart OCR API](/api-reference/vrs/v2/smart-ocr/smart-ocr).
2. Follow image upload guidelines for best results.
3. Implement proper error handling for invalid documents.

<div class="hidden" data-table-of-contents="bottom">
  <p class="mt-4 font-medium flex items-center gap-2 related-docs-heading">
    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="w-4 h-4">
      <path d="M3 4h7a2 2 0 0 1 2 2v13a2 2 0 0 0-2-2H3z" />

      <path d="M21 4h-7a2 2 0 0 0-2 2v13a2 2 0 0 1 2-2h7z" />
    </svg>

    <span>Related topics</span>
  </p>

  <ul>
    <li><a href="/docs/api-reference/vrs/v2/smart-ocr/smart-ocr">Smart OCR API</a></li>
    <li><a href="/docs/secure-id/digilocker/aadhaar-masking">Aadhaar Masking</a></li>
  </ul>
</div>

## FAQs

<AccordionGroup>
  <Accordion title="What Aadhaar verification methods does Cashfree offer?" onClick={() => posthog.capture('Accordion Clicked', { title: "What Aadhaar verification methods does Cashfree offer?" })}>
    Cashfree offers two primary Aadhaar verification methods:

    * **DigiLocker verification**: Secure, government-approved verification where users share documents directly from their DigiLocker account with consent
    * **OCR verification**: Image-based verification using optical character recognition technology to extract details from uploaded Aadhaar documents

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-aadhaar-verification-methods-does-cashfree-offer" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Which verification method should a business choose?" onClick={() => posthog.capture('Accordion Clicked', { title: "Which verification method should a business choose?" })}>
    The choice depends on specific requirements:

    * **Choose DigiLocker verification** to prioritise security, compliance, and user experience. It's government-verified, requires no document uploads, and is DPDPA compliant
    * **Choose OCR verification** to handle physical documents or workflows that require image-based verification

    DigiLocker is generally recommended for most businesses due to its superior security and user experience.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23which-verification-method-should-a-business-choose" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What if a customer doesn't have a DigiLocker account?" onClick={() => posthog.capture('Accordion Clicked', { title: "What if a customer doesn't have a DigiLocker account?" })}>
    Yes, customers can still use DigiLocker verification even without an existing account. If a customer doesn't have a DigiLocker account, they can create one during the verification process. The system will guide them through:

    * Creating a new DigiLocker account using their Aadhaar-linked mobile number
    * Setting up a PIN for account security
    * Providing consent to share their Aadhaar document

    This typically takes 2-3 minutes and only needs to be done once.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23my-customer-doesnt-have-a-digilocker-account-can-they-still-use-digilocker-verification" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What happens if a customer's Aadhaar isn't linked to DigiLocker?" onClick={() => posthog.capture('Accordion Clicked', { title: "What happens if a customer's Aadhaar isn't linked to DigiLocker?" })}>
    If the Aadhaar isn't linked to DigiLocker, the verification can't proceed through DigiLocker. In this case, you can:

    * Use the OCR verification method instead
    * Advise the customer to link their Aadhaar to DigiLocker through the official DigiLocker website
    * Check with the customer if they have an existing DigiLocker account with different credentials

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-happens-if-a-customers-aadhaar-isnt-linked-to-digilocker" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  {" "}

  <Accordion title="Do I have to pay in advance, or can I pay after the Aadhaar verification is done?" onClick={() => posthog.capture('Accordion Clicked', { title: "Do I have to pay in advance, or can I pay after the Aadhaar verification is done?" })}>
    There is an option to pay either way - pre-paid or post-paid. Please get in
    touch with our sales team to find the best suitable method for you.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23do-i-have-to-pay-in-advance-or-can-i-pay-after-the-aadhaar-verification-is-done" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  {" "}

  <Accordion title="What is OTP-based Aadhaar Verification?" onClick={() => posthog.capture('Accordion Clicked', { title: "What is OTP-based Aadhaar Verification?" })}>
    Note: This feature has been discontinued and is no longer available.

    For current Aadhaar verification options, please refer to our Smart OCR API.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-is-otpbased-aadhaar-verification" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  {" "}

  <Accordion title="Does Cashfree support OKYC (Offline KYC) for Aadhaar verification?" onClick={() => posthog.capture('Accordion Clicked', { title: "Does Cashfree support OKYC (Offline KYC) for Aadhaar verification?" })}>
    No, OKYC (Offline KYC) isn't supported for Aadhaar verification.

    For Aadhaar verification, we recommend using:

    * **Smart OCR API**: Extract and verify Aadhaar details from document images
    * **DigiLocker integration**: Verify Aadhaar through government-backed DigiLocker platform
    * **Video KYC**: Complete verification through live agent-assisted video calls

    These alternatives provide secure and compliant Aadhaar verification without requiring OKYC.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23does-cashfree-support-okyc-offline-kyc-for-aadhaar-verification" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What all details can be verified through OTP-based Aadhaar Verification?" onClick={() => posthog.capture('Accordion Clicked', { title: "What all details can be verified through OTP-based Aadhaar Verification?" })}>
    The following details can be verified through OTP-based Aadhaar Verification, by Cashfree Payments:

    * Registered Name

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-happens-if-my-customers-aadhaar-isnt-linked-to-digilocker" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How can you track if DigiLocker verification was successful?" onClick={() => posthog.capture('Accordion Clicked', { title: "How can you track if DigiLocker verification was successful?" })}>
    You can track the verification status through multiple methods:

    * **Real-time status checks**: Use the Get Verification Status API to check current progress
    * **Webhook notifications**: Receive instant updates when status changes (PENDING, AUTHENTICATED, EXPIRED, CONSENT\_DENIED)
    * **Final document retrieval**: Once successful, use the Get Document API to retrieve the verified Aadhaar details

    The entire process typically completes within 2-3 minutes.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23how-do-i-know-if-digilocker-verification-was-successful" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How to handle blurry Aadhaar image uploads?" onClick={() => posthog.capture('Accordion Clicked', { title: "How to handle blurry Aadhaar image uploads?" })}>
    For OCR verification, image quality is crucial. If the image is blurry:

    * Ask the customer to retake the photo ensuring good lighting and focus
    * Verify the Aadhaar number is clearly visible and not scratched or damaged
    * Ensure the image captures the entire document without cutting off edges
    * Avoid including other objects in the photo

    Consider switching to DigiLocker verification to avoid image quality issues entirely.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-should-i-do-if-my-customer-uploads-a-blurry-aadhaar-image" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can you verify someone's Aadhaar using only their name?" onClick={() => posthog.capture('Accordion Clicked', { title: "Can you verify someone's Aadhaar using only their name?" })}>
    No, you can't verify an Aadhaar card using only the person's name. For security and privacy reasons, Aadhaar verification requires:

    * The complete 12-digit Aadhaar number for both DigiLocker and OCR verification methods
    * User consent (explicit for DigiLocker, implied for OCR verification)
    * Proper authentication through the respective verification flow

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23can-i-verify-someones-aadhaar-using-only-their-name" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is DigiLocker verification legally compliant for KYC requirements?" onClick={() => posthog.capture('Accordion Clicked', { title: "Is DigiLocker verification legally compliant for KYC requirements?" })}>
    Yes, DigiLocker verification is fully compliant with regulatory requirements:

    * **Government-approved**: DigiLocker is an official government platform
    * **DPDPA compliant**: Meets Digital Personal Data Protection Act (DPDPA) 2023 requirements
    * **User consent-based**: Explicit user consent is obtained before accessing documents
    * **Audit trail**: Complete verification history is maintained for compliance

    This makes it suitable for KYC requirements across banking, lending, insurance, and fintech sectors.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23is-digilocker-verification-legally-compliant-for-kyc-requirements" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What details are accessible after successful Aadhaar verification?" onClick={() => posthog.capture('Accordion Clicked', { title: "What details are accessible after successful Aadhaar verification?" })}>
    The accessible details depend on the verification method used:

    **DigiLocker verification provides:**

    * Full name as registered
    * Complete address
    * Date of birth
    * Gender
    * Aadhaar number
    * Father's name (if available)

    **OCR verification extracts:**

    * Aadhaar number
    * Name
    * Address
    * Other visible details from the document image

    DigiLocker typically provides more comprehensive and accurate information.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-details-can-i-access-after-successful-aadhaar-verification" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is upfront payment required for Aadhaar verification services?" onClick={() => posthog.capture('Accordion Clicked', { title: "Is upfront payment required for Aadhaar verification services?" })}>
    Cashfree offers flexible payment options to suit business needs:

    * **Prepaid**: Pay in advance and use credits for verification
    * **Postpaid**: Pay after using the verification services based on usage

    Contact the sales team to discuss the most suitable payment model for business volume and requirements.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23do-i-need-to-pay-upfront-for-aadhaar-verification-services" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How secure is DigiLocker verification for privacy-conscious customers?" onClick={() => posthog.capture('Accordion Clicked', { title: "How secure is DigiLocker verification for privacy-conscious customers?" })}>
    DigiLocker verification offers the highest level of privacy and security:

    * **Government-managed**: DigiLocker is owned and operated by the Government of India
    * **Explicit consent**: Documents are shared only after user provides clear consent
    * **No document storage**: Cashfree doesn't store physical document copies
    * **Secure transmission**: All data transfers use encrypted channels
    * **Limited access**: Only specific requested details are shared

    You can assure customers that this method is more secure than sharing physical document copies.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23how-secure-is-digilocker-verification-for-privacy-conscious-customers" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What happens if verification fails or times out?" onClick={() => posthog.capture('Accordion Clicked', { title: "What happens if verification fails or times out?" })}>
    Different scenarios can cause verification issues:

    **DigiLocker verification failures:**

    * **EXPIRED**: Link expired (10-minute validity) - generate a new link
    * **CONSENT\_DENIED**: User rejected consent - try document processing method
    * **Network issues**: Retry after some time or use alternative method

    **OCR verification failures:**

    * **Poor image quality**: Request better quality images
    * **Invalid document**: Verify it's a genuine Aadhaar card
    * **Processing errors**: Retry or contact support

    Always implement fallback mechanisms and proper error handling in your integration.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-happens-if-verification-fails-or-times-out" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Are there any volume limits for Aadhaar verification?" onClick={() => posthog.capture('Accordion Clicked', { title: "Are there any volume limits for Aadhaar verification?" })}>
    Cashfree supports high-volume verification requirements:

    * **Rate limits**: Standard API rate limits apply - contact support for higher limits
    * **Daily volumes**: No specific daily caps, but enterprise customers get priority processing
    * **Concurrent requests**: Multiple parallel verifications supported
    * **Bulk processing**: Available for large-scale verification needs

    For high-volume requirements (10,000+ verifications per day), contact the sales team for optimised pricing and performance.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23are-there-any-volume-limits-for-aadhaar-verification" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the validity of the received OTP?" onClick={() => posthog.capture('Accordion Clicked', { title: "What is the validity of the received OTP?" })}>
    The generated OTP will be valid for 10 minutes.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23what-is-the-validity-of-the-received-otp" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How fast do verification results come back?" onClick={() => posthog.capture('Accordion Clicked', { title: "How fast do verification results come back?" })}>
    Response times vary by verification method:

    **DigiLocker verification:**

    * Initial API response: Immediate (URL generation)
    * User completion time: 2-3 minutes (depends on user actions)
    * Final document retrieval: 1-2 seconds after user consent

    **OCR verification:**

    * Image upload processing: 30-60 seconds
    * Data extraction: Near real-time
    * Verification result: Within 1-2 minutes

    Use webhooks for real-time notifications instead of polling for status updates.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23how-fast-do-verification-results-come-back" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can verification be integrated into mobile applications?" onClick={() => posthog.capture('Accordion Clicked', { title: "Can verification be integrated into mobile applications?" })}>
    Yes, both verification methods work seamlessly in mobile applications:

    **DigiLocker on mobile:**

    * Use WebView or in-app browser to load DigiLocker consent URL
    * Handle redirect URLs to capture completion status
    * Optimised mobile interface provided by DigiLocker

    **OCR verification on mobile:**

    * Camera integration for document capture
    * Image quality validation before upload
    * Real-time feedback for better user experience

    SDKs and mobile-specific documentation available for popular platforms (Android, iOS, React Native, Flutter).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Faadhaar-verification%23can-verification-be-integrated-into-mobile-applications" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>
</AccordionGroup>
