99testsStart a job

Test case library · KYC, lending & investing

Test cases for Aadhaar eKYC, PAN and video KYC

This page covers Aadhaar-based eKYC in an app: OTP consent, offline paperless KYC, DigiLocker fetch, PAN checks, selfie liveness, video KYC and document upload. Most field failures come from the real world rather than the code path: OTPs that go to a family member's phone, budget phones killing the app mid-handoff, weak signal during video calls and names spelt differently on PAN and Aadhaar.

40 test cases13 release-blocking (P1)17 need a real phoneUpdated 2026-10-29

From the reviews. Government service apps, including the Aadhaar and DigiLocker apps, had the second-highest rate of login and OTP failures after banking (6.7% of storefront reviews), and all 8 had at least one malfunction review on show.

category page · India App Quality Report

In scope

  • Aadhaar OTP eKYC with consent and masking
  • Offline paperless KYC (where supported) and DigiLocker fetch
  • PAN verification and PAN-Aadhaar name matching
  • Selfie liveness and face match
  • Video KYC booking and call quality
  • Document capture from camera and gallery

Out of scope

  • Back-office review and agent tools
  • Lending or investing decisions made after KYC
  • Periodic re-KYC and KYC updates

Before you start

  • Sandbox or UAT build with test Aadhaar and PAN identities from your KYC provider, including mismatch cases
  • Printed dummy ID cards with obviously fake details for camera and video tests
  • Phones: a 3–4 GB RAM Android with OEM battery saver on, a dual-SIM Android and an iPhone
  • Jio, Airtel or Vi SIMs, plus a Wi-Fi network you can switch off
  • Video KYC test slots and a test agent available
Show
Add to a test plan

Happy path7

KYC-01

Complete Aadhaar OTP eKYC with consent

P1functional
  1. Log in with a test account that has not done KYC and open the KYC screen.
  2. Read the consent text, tick the checkbox and tap Continue.
  3. Enter the sandbox test Aadhaar number and tap Get OTP.
  4. Enter the OTP sent to the Aadhaar-linked test mobile and submit.

Expected: The app shows the fetched name, date of birth, gender and photo for confirmation, with the Aadhaar number masked. After confirming, the KYC status moves to the next step.

KYC-02

Complete offline paperless KYC with the ZIP file and share code

P2functional
  1. Download the offline KYC ZIP for the test identity and note the share code you set.
  2. In the app, choose offline KYC and pick the ZIP from the phone's file manager.
  3. Enter the share code and tap Submit.

Expected: The app reads the file and shows the name, date of birth and photo from it for confirmation. KYC status moves to the next step without asking for an Aadhaar OTP.

KYC-03

Fetch Aadhaar and PAN from DigiLocker and return to the app

P1functionalreal phone
  1. Choose DigiLocker as the KYC method and accept the app's consent screen.
  2. Sign in to DigiLocker with the test account and allow the requested documents.
  3. Wait for the redirect back to the app without tapping anything.

Expected: The app reopens on the KYC screen with the fetched documents listed, the Aadhaar number masked and the PAN details filled in.

Why a real phone: Handoff to the installed DigiLocker app or browser and back differs by phone.

KYC-04

Submit a valid PAN whose name matches the Aadhaar record

P1functional
  1. Finish Aadhaar eKYC for the test identity.
  2. Enter the test PAN for the same identity and tap Verify.

Expected: The PAN shows as verified with the name returned for it displayed for confirmation, and the app moves to the next KYC step.

KYC-05

Pass the selfie liveness check in good indoor light

P1functionalreal phone
  1. On the selfie step, allow camera access when asked.
  2. Hold the phone at eye level and follow each prompt, such as blink or turn.
  3. Wait for the result screen.

Expected: The camera preview opens promptly, each prompt is shown clearly, and the app shows a liveness pass before moving to the next step.

Why a real phone: Liveness relies on the real front camera, lighting and a live face.

KYC-06

Book a video KYC slot and finish the call

P1functionalreal phone
  1. Choose video KYC and book an available slot.
  2. Check the slot time on the confirmation screen and in the reminder notification.
  3. Join from the reminder at the slot time and complete the agent's checks.

Expected: Slot times show in IST on both the confirmation and the reminder. Video and audio work both ways, and KYC status changes to under review or completed after the call.

Why a real phone: Reminder notifications and a live two-way video call need a real phone and network.

KYC-07

Upload a PAN card photo taken with the in-app camera

P2functionalreal phone
  1. On the document step, choose Take photo.
  2. Capture the front of a dummy PAN card placed on a plain, dark surface.
  3. Check the preview, crop if offered, and tap Upload.

Expected: The preview is sharp and upright, the upload shows progress, and the document is listed as uploaded with a thumbnail.

Why a real phone: Autofocus, glare and image rotation come from the real camera hardware.

Validation & negative7

KYC-08

Reject an Aadhaar number with the wrong length or a mistyped digit

P2negative
  1. In the Aadhaar field, type only 11 digits, such as eleven zeros.
  2. Enter 12 digits, then try to type a 13th.
  3. Enter the sandbox Aadhaar with its last digit changed and tap Get OTP.

Expected: Get OTP stays disabled or an inline error appears for 11 digits, and the field stops at 12. The mistyped number shows a 'check the number' error and no OTP is sent.

KYC-09

Keep Get OTP blocked until Aadhaar consent is given

P1negative
  1. Open the Aadhaar consent screen and check the state of the checkbox.
  2. Without ticking it, tap Continue or Get OTP.

Expected: The checkbox is unticked by default, and the button stays disabled or a message asks for consent. No OTP is requested.

KYC-10

Enter a wrong Aadhaar OTP until the attempt limit is reached

P2negative
  1. Request the Aadhaar OTP.
  2. Enter a wrong OTP and submit, then repeat until the app stops accepting attempts.
  3. While blocked, try Resend and then the correct OTP.

Expected: Each wrong attempt shows a clear message, and after the configured limit entry is blocked with a message saying when to retry. Neither Resend nor the correct OTP bypasses the block.

KYC-11

Handle a wrong share code or a non-KYC file in offline KYC

P2negative
  1. Choose offline KYC, pick a valid test ZIP and enter a wrong share code.
  2. Re-enter the correct share code without picking the file again.
  3. Start over and pick a photo renamed to end in .zip.

Expected: The wrong share code shows a specific message and the corrected code works on the same file. The renamed photo is rejected as an invalid file and the app does not crash.

KYC-12

Reject a PAN in the wrong format

P2negative
  1. Enter a PAN ending in a digit, such as ABCDE12345, and tap Verify.
  2. Enter only nine characters, then a correctly shaped PAN typed in lowercase.

Expected: Wrong-format entries show an inline error saying a PAN is five letters, four digits and one letter. Lowercase input is converted to capitals or clearly rejected, not sent as typed.

KYC-13

Flag a clear name mismatch between PAN and Aadhaar

P1negative
  1. Use a sandbox identity whose PAN and Aadhaar have different surnames.
  2. Finish Aadhaar eKYC, then submit the PAN.
  3. Check the KYC status screen.

Expected: KYC is not marked verified. The app shows a mismatch message with the next step, such as manual review or uploading proof of a name change.

KYC-14

Selfie face does not match the Aadhaar photo

P2negativereal phone
  1. Use a sandbox identity whose stored photo is of someone other than the tester.
  2. Complete the selfie and liveness step with the tester's face.

Expected: The app shows a face-mismatch result, allows a retry and offers a fallback such as video KYC. KYC is not marked verified.

Why a real phone: Face match needs a live face captured by the real front camera.

Edge cases7

KYC-15

Accept minor name differences between PAN and Aadhaar

P2edge
  1. Use sandbox identities with initials versus full names, such as R K Sharma and Rajesh Kumar Sharma.
  2. Repeat with extra spaces, dots, a title like Mr, and different letter case.
  3. Submit the PAN after Aadhaar eKYC each time.

Expected: Each variant gets the outcome set by the product's matching rules, the same way on repeat runs. No variant crashes the flow or shows a raw error code.

KYC-16

Complete KYC for a person with a single name and no surname

P2edge
  1. Use a sandbox identity whose Aadhaar and PAN names are a single word.
  2. Go through the name, PAN and confirmation steps.

Expected: No field forces the user to invent a surname. The profile and PAN match show the name as recorded, without stray dots or a duplicated word.

KYC-17

Show the date of birth correctly, including year-only records

P2edge
  1. Finish eKYC and compare the date of birth on the confirmation, profile and PAN screens.
  2. Change the phone's time zone to one outside India and recheck.
  3. Repeat eKYC with a sandbox identity that has only a year of birth.

Expected: The full date is identical on every screen with no shift of one day. A year-only record is shown or completed without an invalid date or a crash.

KYC-18

Finish eKYC when the Aadhaar-linked mobile is a family member's phone

P2edge
  1. Log in with one number and use a sandbox Aadhaar linked to a different number.
  2. Request the OTP and read the message shown on screen.
  3. Type the OTP from the other phone manually.

Expected: The screen says the OTP went to the Aadhaar-linked mobile, not the login number. Manual entry works and no SMS auto-read prompt blocks typing.

KYC-19

Use the same Aadhaar on a second account

P2edge
  1. Finish eKYC on account A with the sandbox Aadhaar.
  2. Log in as account B on another phone and start eKYC with the same Aadhaar.

Expected: Account B is blocked or sent for review with a clear message, and account A's KYC status and details stay unchanged.

KYC-20

Resume KYC after leaving midway

P2edge
  1. Finish the Aadhaar step, then close the app from recent apps.
  2. Reopen the app after a few hours and go to KYC.

Expected: The app shows which steps are done and resumes from the next one. It asks for the Aadhaar OTP again only if the saved session has expired, and says so.

KYC-21

Run liveness in low light, with glasses and with a cap

P2edgereal phone
  1. Start the selfie step in a dim room with the only light behind you.
  2. Repeat wearing glasses, then a cap or dupatta covering the forehead.
  3. Fix each condition and try once more.

Expected: The app gives a specific hint, such as add more light or uncover your face, instead of a generic failure, and passes once the condition is fixed.

Why a real phone: Lighting, glare on glasses and face coverings only show up on a real camera.

Interruptions & network7

KYC-22

Use Resend when the Aadhaar OTP SMS is delayed

P2edgereal phone
  1. Move to a weak-signal spot, such as a basement, and request the OTP.
  2. Wait for the countdown to end without entering anything.
  3. Tap Resend and enter the latest OTP that arrives.

Expected: Resend becomes active only after the countdown, the screen says a new OTP was sent, and the latest OTP is accepted. Entering the earlier OTP gives a clear message rather than a generic failure.

Why a real phone: SMS delay depends on the real carrier, signal strength and SIM.

KYC-23

Leave to read the OTP on a phone with aggressive battery saving

P2interruptionreal phone
  1. On a Xiaomi, Realme or Vivo phone with default battery settings, request the OTP.
  2. Switch to the SMS app, wait a minute, and copy the OTP.
  3. Return to the app through recent apps and paste the OTP.

Expected: The OTP screen is still there with the timer running. If the system killed the app, it reopens on the OTP step without restarting consent or silently sending a new OTP.

Why a real phone: OEM battery savers kill backgrounded apps on real phones, not on emulators.

KYC-24

Lose network right after submitting the OTP

P2interruption
  1. Enter the correct OTP and tap Submit.
  2. Turn on airplane mode immediately, wait a few seconds, then turn it off.
  3. Follow the app's retry prompt.

Expected: The app shows a retry state instead of KYC failed. On retry it shows the result the server already recorded and does not ask for a fresh OTP if verification went through.

KYC-25

Come back from DigiLocker after the system killed the app

P1interruptionreal phone
  1. On a 3–4 GB RAM phone, open a few heavy apps first.
  2. Start the DigiLocker fetch and stay in DigiLocker for a minute before allowing access.
  3. Let the redirect bring you back to the app.

Expected: The app reopens on the KYC step and shows the fetched documents, or a clear retry option. It does not land on the home screen or a blank page with the result lost.

Why a real phone: Low-RAM phones kill the app in the background while DigiLocker is open.

KYC-26

Lock the screen or take a call during the liveness check

P2interruptionreal phone
  1. Start the liveness check.
  2. Press the power button mid-prompt, wait, then unlock.
  3. Start again and answer an incoming call mid-prompt, then return.

Expected: Both times the liveness step restarts cleanly with a live camera preview, not a frozen frame or black screen. The interrupted attempt is not counted as a failed attempt.

Why a real phone: Camera release on lock and call handling differ across real devices and OEMs.

KYC-27

Keep a video KYC call going through a signal drop or network switch

P1interruptionreal phone
  1. Start the video KYC call on Wi-Fi.
  2. Walk out of Wi-Fi range so the phone moves to mobile data.
  3. Move to a spot where the signal falls to 3G or 2G, such as a lift.

Expected: The app shows a poor-network warning and keeps audio going where possible. If the call drops, the user can rejoin the same session without booking a new slot.

Why a real phone: Real handovers and weak carrier signal cannot be reproduced faithfully on an emulator.

KYC-28

Receive an ordinary phone call during video KYC

P2interruptionreal phone
  1. Start the video KYC call.
  2. Call the test phone from another number and answer it.
  3. End the call after 30 seconds and return to the app.

Expected: The app holds the session and shows a way back in. On return, camera and microphone both work and the agent can continue without a new booking.

Why a real phone: Incoming carrier calls take over the microphone differently on each OEM.

Device & OS3

KYC-29

Auto-read the Aadhaar OTP on a dual-SIM phone

P2compatibilityreal phone
  1. Put the Aadhaar-linked test number in SIM 2 of a dual-SIM Android.
  2. Request the OTP and watch the OTP field.
  3. Repeat with the number in SIM 1.

Expected: If the app supports auto-read, the OTP fills from either SIM or a one-tap prompt appears. Manual entry stays available while waiting in both cases.

Why a real phone: SMS auto-read depends on the real SIM slot and the phone's SMS handling.

KYC-30

Return from the system camera on a low-RAM phone

P2compatibilityreal phone
  1. On a 3–4 GB RAM Android, open a few heavy apps first.
  2. On the document step, choose Take photo if it opens the system camera.
  3. Capture a dummy card and confirm in the camera app.

Expected: The app returns to the document step with the captured image in the preview. It does not restart KYC, show an empty preview or crash.

Why a real phone: The system may kill the app while the camera app is open on low-RAM phones.

KYC-31

Pick an ID image from the gallery on new and old OS versions

P2compatibility
  1. On Android 13 or later, choose Upload from gallery.
  2. Repeat on an older Android version and on an iPhone.
  3. On the iPhone and the newest Android, allow access to selected photos only.

Expected: Each version lets the user pick an image, asking for photo access at most once and only if needed. With limited access, the app shows the allowed photos or a way to change the selection, not an empty screen.

Security & privacy6

KYC-32

Show Aadhaar only in masked form after entry

P1security
  1. Finish eKYC and open the confirmation, profile and KYC summary screens.
  2. Open any KYC notification, email or downloadable summary the app produces.

Expected: Every place shows the Aadhaar masked, with only the last four digits visible, such as XXXX XXXX 1234. The full number never reappears, including when editing the profile.

KYC-33

Block screenshots and hide KYC details in recent apps

P2securityreal phone
  1. Take a screenshot on the Aadhaar entry, OTP and fetched-details screens.
  2. Try the phone's own gesture too, such as a three-finger swipe.
  3. Open the recent apps view while on the fetched-details screen.

Expected: Screenshots are blocked or saved as blank images, and the recent apps preview hides the Aadhaar details.

Why a real phone: OEM screenshot gestures and recents previews behave differently on Xiaomi and Samsung phones.

KYC-34

Reject an offline KYC file whose contents were edited

P1security
  1. On a computer, unzip a test offline KYC file using its share code.
  2. Change one letter of the name in the XML and zip it again with the same share code.
  3. Copy it to the phone and upload it in offline KYC.

Expected: The app rejects the file as invalid or tampered and shows no details for confirmation.

KYC-35

Try to pass liveness with a printed photo or a replayed video

P1securityreal phone
  1. On the selfie step, hold up a printed photo of the tester's face.
  2. Repeat with a video of the tester's face playing on another phone.

Expected: Both attempts fail liveness with a retry message, and KYC is not marked verified.

Why a real phone: Spoof detection needs a real camera looking at a real print or screen.

KYC-36

Log out on a shared family phone and log in as someone else

P1security
  1. As account A, finish Aadhaar eKYC and capture a document, then log out.
  2. Log in as account B on the same phone and open KYC.
  3. Check every KYC field, draft and document thumbnail.

Expected: Account B sees no name, photo, masked number or document from account A and starts at the first KYC step.

KYC-37

Keep selfies and ID captures out of the phone gallery

P2securityreal phone
  1. Capture the selfie and a dummy document using the in-app camera.
  2. Open the phone's gallery and file manager and check camera and download folders.

Expected: No selfie or document image from the KYC flow appears in the gallery or in shared folders.

Why a real phone: Some OEM camera apps save a copy to the gallery when another app opens them.

Accessibility & language3

KYC-38

Move through eKYC with TalkBack and VoiceOver

P2accessibility
  1. Turn on TalkBack on Android or VoiceOver on iPhone.
  2. Swipe through the consent, Aadhaar entry, OTP and confirmation screens.

Expected: Every field and button announces a clear label and the consent checkbox announces its state. The masked number is read as ending in its last four digits, not as a string of X's.

KYC-39

Use the KYC screens at the largest font and display size

P2accessibility
  1. Set font size and display size to the maximum in phone settings.
  2. Open the consent, OTP, PAN and video KYC booking screens.

Expected: Consent text scrolls fully, the checkbox and Continue button stay visible and tappable, and OTP boxes and slot times are not cut off or overlapping.

KYC-40

Run consent and name entry in Hindi

P2localization
  1. Switch the app language to Hindi and open the Aadhaar consent screen.
  2. Read the consent, checkbox label and buttons.
  3. Where a name is typed, try a Hindi keyboard and a Hinglish spelling.

Expected: Consent and buttons appear fully in Hindi with no English placeholder strings or clipped text. Typed Devanagari is either accepted and shown correctly or rejected with a clear message to use English letters.

In the field

Where aadhaar ekyc breaks on real phones

  • The Aadhaar OTP goes to whatever number is linked to Aadhaar, often a parent's phone, but the screen says it went to the login number and users wait for an SMS that never comes.
  • On 3–4 GB RAM phones with Xiaomi, Realme or Vivo battery savers, the app is killed while the user is in DigiLocker, the camera app or the SMS app, and the KYC result is lost on return.
  • Names rarely match exactly: initials on PAN, full names on Aadhaar, single-name users and changed surnames trip strict matching and push genuine users into manual review.
  • Video KYC calls drop when the phone moves from Wi-Fi to Jio, Airtel or Vi data or slips to 3G in a lift, and many apps force a new slot instead of a rejoin.
  • Liveness fails with a single light behind the user, glare on glasses or a dupatta over the forehead, and a generic failure message leaves users retrying blindly.
  • A date of birth shifts by one day when a date-only value is converted between IST and UTC, which then fails the PAN match.

Run these 40 cases on real phones

They fit the Standard package: 10 × 45-minute sessions on 4 phones or browsers of your choice, up to ~50 cases, ₹18,999 + GST ($249), verified report in 3 business days. The 13 P1 cases alone fit Starter (₹9,999 + GST).

Download the CSV, pick the package at checkout and upload the file with your build. Testers run them on their own phones, on Jio, Airtel and Vi.

Questions

About testing aadhaar ekyc

How do you test Aadhaar eKYC without using real Aadhaar numbers?

Ask your KYC provider for sandbox or UAT identities, including ones with mismatched names, year-only birth dates and no linked mobile. Use printed dummy cards with obviously fake details for camera and video tests. Never type the real Aadhaar or PAN of staff or friends into test builds, and keep negative inputs format-invalid so they cannot belong to anyone.

Which eKYC test cases need a real phone rather than an emulator?

Anything involving the camera, liveness, SMS OTP delivery, switching to DigiLocker and back, OEM battery savers or network handovers during video KYC. Emulators feed a virtual camera and do not kill apps the way budget Android phones do. Field validation, consent copy and masking checks run fine on an emulator.

What should happen when the PAN name does not match the Aadhaar name?

That depends on the product's matching rules, so get them written down before testing. Minor differences such as initials, spacing or letter case are often allowed, while a different surname usually goes to manual review or needs proof. The test is that each variant gets a consistent, clearly explained outcome and that no real mismatch is silently marked verified.

Related flows

Test these next

Your AI wrote the test cases. Run them on real phones.

99tests runs your cases, AI-generated ones included, on the phones, laptops and browsers your users own. Every finding is verified, serious bugs come with a screen recording, and each case comes back pass, fail, blocked or not run.