Data and Downloads
This page provides guidelines for handling API errors within the application. While developing applications, AUAs need to decide how to handle the errors gracefully and provide resident/operator friendly messages. Simply showing the error on screen is not helpful. This document is an attempt to provide guidelines for doing better error handling.
Following table describes API error codes, suggestion for how to handle it, possible message to user, and probable reasons for the error.
Any other information regarding errors, please contact auth support team of UIDAI at authsupport[at]uidai[dot]net[dot]in.
| API Error Code | Description | Provision Required in the Application | Suggested Message to the User | Suggested instructions to the user | Probable Reasons |
| 100 | "Pi" (basic) attributes of demographic data did not match | User should be allowed to re-enter his/her personal information attributes like name, lname, gender, dob, dobt, age, phone, email whichever is used for authentication in application | Please re-enter your <name, lname, gender, dob, dobt, age, phone, email>. | Operator should re-enter correct details personal information as per the Aadhaar letter. Ensure correct Aadhaar Information is entered. | One or more personal information attributes not matching. |
| 200 | "Pa" attributes of demographic data did not match | User should be allowed to re-enter address fields | Please re-enter your <address details>. | Re-enter correct address as per the Aadhaar letter. Ensure correct Aadhaar Information is entered. | One or more address attributes not matching. |
| 300 | Biometric data did not match | Allow "n" retry attempts (configurable). Inform user of remaining attempts. | Please give your finger prints again. | Ensure correct Aadhaar number is entered. Clean fingers and place properly on scanner. | Poor fingerprint quality, scanner dust, wet fingers. |
| 310 | Duplicate fingers used in the request | Prompt user to provide distinct fingers | Please try again with distinct fingers. | Provide different fingers for two-finger authentication. | Same finger sent twice in the request. |
| 311 | Duplicate irises used in the request | Prompt user to provide distinct irises | Please try again with distinct irises. | Provide different irises for iris authentication. | Same iris sent twice in the request. |
| 312 | FMR and FIR cannot be mixed in the same transaction | Ensure no mixing of fingerprint image and minutiae records in a transaction | Technical Exception <No> | Contact technical helpdesk. | Cannot mix fingerprint image (FIR) and minutiae records (FMR). |
| 313 | Single FIR has multiple fingers | Prompt user to place a single finger at a time | Please try again placing single finger on device. | Place one finger at a time on the device. | FIR contains multiple finger images. |
| 314 | More than 10 FMR/FIR records in the request | Limit fingerprint records to a maximum of 10 | Technical Exception | Contact support. Ensure request does not exceed 10 finger records. | Authentication request exceeds 10 finger records. |
| 315 | More than 2 IIR records in the request | Limit iris records to a maximum of 2 | Technical Exception | Contact support. Ensure request does not exceed 2 iris records. | Authentication request exceeds 2 iris records. |
| 400 | OTP validation failed | Allow retry; provide option to regenerate OTP | Please provide correct OTP value. | Generate a new OTP if repeated failures occur. | Incorrect OTP entered or value mismatch in CIDR. |
| 401 | "Tkn" validation failed | Derive token value from network operator | Technical Exception | Contact support. Verify token details. | "Tkn" details do not match CIDR registration. |
| 500 | Invalid Skey encryption | Use configurable UIDAI-issued digital certificates | Technical Exception <No> | Contact technical helpdesk. Verify correct digital certificate is used for AES-256 encryption. | Wrong digital certificate used for AES-256 encryption. |
| 501 | Invalid "ci" attribute in Skey | Make "ci" value configurable | Technical Exception <> | Verify UIDAI certificate expiry date is properly specified. | Certificate expiry date not properly specified in "ci" attribute. |
| 502 | Invalid PID encryption | Test extensively with UIDAI test service | Technical Exception <No> | Ensure correct AES encryption implementation is used. | Incorrect AES encryption implementation. |
| 503 | Invalid HMAC encryption | Test extensively with UIDAI test service | Technical Exception <No> | Verify AES encryption and key usage are correct. | Incorrect AES encryption or mismatched session keys. |
| 504 | Session key re-initiation required | Provide full session key initiation capability | Technical Exception <No> | Try again. Session may have expired. | Session expired or session key out of sync. |
| 505 | Synchronized Skey not allowed | Use full skey scheme instead of synchronized scheme | Technical Exception <No> | Switch to full skey scheme. | AUA does not have SSK scheme privilege. |
| 510 | Invalid Auth XML format | Validate Auth XML before sending to CIDR | Technical Exception <No> | Use the latest recommended API version. | Non-compliance with Authentication API XML structure. |
| 511 | Invalid PID XML format | Validate PID XML structure before encryption | Technical Exception <No> | Use the latest recommended API version. | Non-compliance with PID XML format specification. |
| 520 | Invalid device — "tid" attribute value is incorrect | Set "tid" attribute to "public" for non-registered devices | Technical Exception <No> | Use "public" value only (lowercase) for "tid". | Incorrect "tid" attribute value in the request. |
| 521 | Invalid finger device code (fdc) | Obtain proper FDC code from certified vendor | Technical Exception <No> | Use certified FDC code obtained from the vendor. | FDC code not from a UIDAI-certified vendor. |
| 522 | Invalid iris device code (idc) | Obtain proper IDC code from certified vendor | Technical Exception <No> | Use certified IDC code obtained from the vendor. | IDC code not from a UIDAI-certified vendor. |
| 530 | Invalid authenticator code (AUA code) | Use registered AUA code in requests | Technical Exception <No> | Verify AUA code is registered with UIDAI. | Unregistered or mismatched AUA code used. |
| 540 | Invalid Auth XML version | Use a supported API version | Technical Exception <No> | Use the supported API version as recommended by UIDAI. | Unsupported or invalid API version specified. |
| 541 | Invalid PID XML version | Use a supported PID XML version | Technical Exception <No> | Use the supported PID XML version as recommended by UIDAI. | Unsupported PID element version specified. |
| 542 | AUA not authorized to use the ASA channel | Ensure AUA-ASA link exists in UIDAI portal | Ensure request is via authorized ASA. | Contact UIDAI helpdesk for ASA linkage. | No AUA-ASA linking configured in portal. |
| 543 | Sub-AUA not associated with AUA | Add Sub-AUA to correct parent AUA in portal | Ensure request is via associated AUA. | Contact UIDAI for Sub-AUA association. | Sub-AUA not added to the parent AUA. |
| 550 | Invalid "Uses" element attributes | Validate Uses tag attributes before sending request | Technical Exception <No> | Check "bt" attribute conditional usage rules. | Invalid attributes or conditional logic error in Uses element. |
| 561 | Request has expired (old timestamp) | Do not store Pid block; sync client date-time with IST | Verify device/client date-time synchronization. | Synchronize device with IST and resend the request. | Old request submitted or device date-time is behind current time. |
| 562 | Request has future timestamp | Sync client/server date-time with IST | Verify device/client date-time synchronization. | Synchronize device with IST and resend the request. | Device date-time is ahead of server time. |
| 563 | Duplicate request received | Prompt user to try again with a new request | Please submit your request again. | Send a new authentication request. | Identical request sent multiple times. |
| 564 | HMAC validation failed | Create HMAC using SHA-256 as defined in API | Technical Exception <No> | Verify HMAC algorithm implementation as per API specification. | Wrong HMAC calculation algorithm used. |
| 565 | License key has expired | Implement configurable license key management | Technical Exception <No> | Update the license key configuration. | Current license key has expired. |
| 566 | Invalid license key | Implement license key management feature | Technical Exception <No> | Verify license key validity with UIDAI. | License key is not valid. |
| 567 | Invalid input — unsupported characters in data | Add client-side and server-side validation for character encoding | Technical Exception <No> | Remove unsupported characters from Indian language fields. | Unsupported characters used in Indian language input fields. |
| 568 | Unsupported language specified | Restrict language selection to API-supported languages only | Technical Exception <No> | Select only a supported language as per UIDAI API specification. | Language value not in the supported language list. |
| 569 | Digital signature verification failed | Ensure end-to-end data integrity and security | Technical Exception <No> | Use a secure communication protocol. Do not modify XML after signing. | XML data modified after signing. |
| 570 | Invalid key info in digital signature | Store and manage certificate outside application code | Technical Exception <No> | Verify certificate validity and issuing authority. | Expired, invalid, or unauthorized digital certificate used. |
| 571 | PIN requires reset — default PIN not changed | Allow PIN reset before authentication usage | Please reset your PIN in the UIDAI update application. | Change default PIN via UIDAI client application. | Resident using unreset default PIN. |
| 572 | Invalid biometric position value | Validate "pos" attribute value against biometric type | Technical Exception <No> | Check that position value is valid for the biometric type used. | Position attribute does not match the biometric type. |
| 573 | Pi usage not allowed by license | Restrict Pi usage based on license authorization | Technical Exception <No> | Check AUA license for Pi usage authorization. | AUA license does not permit Pi usage. |
| 574 | Pa usage not allowed by license | Restrict Pa usage based on license authorization | Technical Exception <No> | Check AUA license for Pa usage authorization. | AUA license does not permit Pa usage. |
| 575 | Pfa usage not allowed by license | Restrict Pfa usage based on license authorization | Technical Exception <No> | Check AUA license for Pfa usage authorization. | AUA license does not permit Pfa usage. |
| 576 | FMR usage not allowed by license | Restrict FMR usage based on license authorization | Technical Exception <No> | Check AUA license for FMR usage authorization. | AUA license does not permit FMR usage. |
| 577 | FIR usage not allowed by license | Restrict FIR usage based on license authorization | Technical Exception <No> | Check AUA license for FIR usage authorization. | AUA license does not permit FIR usage. |
| 578 | IIR usage not allowed by license | Restrict IIR usage based on license authorization | Technical Exception <No> | Check AUA license for IIR usage authorization. | AUA license does not permit IIR usage. |
| 579 | OTP usage not allowed by license | Restrict OTP usage based on license authorization | Technical Exception <No> | Check AUA license for OTP usage authorization. | AUA license does not permit OTP usage. |
| 580 | PIN usage not allowed by license | Restrict PIN usage based on license authorization | Technical Exception <No> | Check AUA license for PIN usage authorization. | AUA license does not permit PIN usage. |
| 581 | Fuzzy matching not allowed by license | Restrict "ms" attribute usage per license | Technical Exception <No> | Check AUA license for fuzzy matching authorization. | AUA license does not permit fuzzy matching. |
| 582 | Local language usage not allowed by license | Restrict language options based on license | Technical Exception <No> | Use only authorized languages as per AUA license. | AUA license does not permit local language usage. |
| 584 | Invalid PIN code in Meta element | Validate PIN code value before submission | Technical Exception <No> | Use a valid PIN code from UIDAI-recognized system. | PIN code not in the valid values list. |
| 585 | Invalid Geo code in Meta element | Validate decimal latitude/longitude format | Technical Exception <No> | Use proper decimal format with 4-digit precision for geo coordinates. | Geo code does not match specification format. |
| 710 | Missing "Pi" data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure all required Pi data is included as per Uses specification. | Missing Pi data as specified in Uses element. |
| 720 | Missing "Pa" data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure all required Pa data is included as per Uses specification. | Missing Pa data as specified in Uses element. |
| 721 | Missing "Pfa" data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure all required Pfa data is included as per Uses specification. | Missing Pfa data as specified in Uses element. |
| 730 | Missing PIN data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure PIN data is included if specified in Uses element. | Missing PIN data as specified in Uses element. |
| 740 | Missing OTP data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure OTP data is included if specified in Uses element. | Missing OTP data as specified in Uses element. |
| 800 | Invalid biometric data | Review biometric device compliance with UIDAI standards | Technical Exception <No> | Verify ISO-compliant biometric templates are being used. | Non-ISO compliant or corrupted biometric templates. |
| 810 | Missing biometric data in PID block | Validate PID block structure before encryption | Technical Exception <No> | Ensure biometric data is included as per Uses specification. | Missing biometric data as specified in Uses element. |
| 811 | Biometric data not available in CIDR | Handle inactive biometric status and contact helpdesk | Biometric data not available in CIDR. Contact UIDAI. | Verify Aadhaar number and update biometrics via UIDAI. | Biometric not enrolled in resident's record in CIDR. |
| 812 | Best Finger Detection (BFD) not done | Initiate BFD application for the resident | Please proceed with the Best Finger Detection (BFD) process. | Complete the BFD process before authentication. | Resident has not completed Best Finger Detection process. |
| 820 | Missing "bt" attribute value in Uses element | Validate Uses element for "bt" attribute presence | Technical Exception <No> | Include a valid "bt" value in the Uses element. | Empty or missing "bt" attribute in Uses element. |
| 821 | Invalid "bt" attribute value in Uses element | Validate "bt" attribute against allowed values | Technical Exception <No> | Use valid "bt" attribute values as per API specification. | Invalid value specified in "bt" attribute. |
| 901 | No authentication data present in request | Validate that at least one authentication factor is included | Technical Exception <No> | Include at least one authentication factor (Demo, Pv, or Bios). | No Demo, Pv, or Bios data present in the request. |
| 902 | Invalid "dob" value format or out of range | Validate date-of-birth format and age range client-side | Please enter date of birth in the specified format. | Use YYYY or YYYY-MM-DD format. Age must be between 0 and 150 years. | Wrong date format or age value outside valid range. |
| 910 | Invalid "mv" attribute value in Pi element | Validate "mv" attribute value before request | Technical Exception <No> | Use a valid "mv" attribute value as per API specification. | Invalid "mv" value specified in Pi element. |
| 911 | Invalid "mv" attribute value in Pfa element | Validate "mv" attribute value before request | Technical Exception <No> | Use a valid "mv" attribute value as per API specification. | Invalid "mv" value specified in Pfa element. |
| 912 | Invalid "ms" (match score) attribute value | Validate "ms" attribute value before request | Technical Exception <No> | Use a valid "ms" attribute value as per API specification. | Invalid "ms" match score value specified. |
| 913 | Both Pa and Pfa elements present — mutually exclusive | Ensure Pa and Pfa are not sent in the same request | Pa and Pfa elements are mutually exclusive. Use only one. | Use either Pa or Pfa in the request, not both. | Both Pa and Pfa address elements present in the same request. |
| 930–939 | Technical server-side errors | Implement standard error handling and contact UIDAI tech support | Technical Exception <No> | Contact UIDAI technical support team. | Internal authentication server issues. |
| 940 | Unauthorized ASA channel used | Consult ASA for proper channel authorization | Technical Exception <No> | Verify ASA channel authorization with UIDAI. | Unauthorized ASA channel used in the request. |
| 941 | ASA channel not specified | Consult ASA and specify proper channel | Technical Exception <No> | Specify the proper ASA channel in the request. | ASA channel not specified in the request. |
| 980 | Unsupported option or development feature used in production | Review and remove all development features before production deployment | Technical Exception <No> | Remove development-only features from production build. | Development feature used in production environment. |
| 996 | Aadhaar number has been cancelled | Handle cancelled Aadhaar status and inform operator to re-enroll | This Aadhaar number has been cancelled. Resident should re-enroll. | Contact UIDAI helpline for re-enrollment. | Aadhaar number has been cancelled by UIDAI. |
| 997 | Aadhaar number is suspended or not active | Handle suspended Aadhaar status gracefully | Aadhaar status is not active. Please contact UIDAI. | Contact UIDAI helpline to resolve suspended status. | Aadhaar number is suspended or not active in CIDR. |
| 998 | Invalid Aadhaar number or data unavailable in system | Validate Aadhaar number format on client-side before submission | Please enter a correct Aadhaar number. | Retry with the correct 12-digit Aadhaar number. | Invalid Aadhaar number format or Aadhaar not found in CIDR. |
| 999 | Unknown error | Implement standard error handling for unknown errors | Technical Exception <No> | Contact authsupport[at]uidai[dot]gov[dot]in for assistance. | Unidentified error condition in the system. |
The URL format for integration and testing Aadhaar authentication service by the external entities:
http ://<host>/<ver>/<ac>/<uid[0]>/uid[1]>/<asalk>
Test URLs: (remember to append AUA code and first two digits of Aadhaar number)
URLs for other API versions:
- Auth2.0 - http://developer.uidai.gov.in/authrd/2.0
- otp 2.5 - http://developer.uidai.gov.in/uidotp/2.5
URLs for other API versions [NEW VERSION]:
- e-KYC 2.5 - https://developer.uidai.gov.in/uidkyc/kyc/2.5
Test Codes:
- AUA Code ("ac" attribute) : "public"
- Sub-AUA Code ("sa" attribute) - "public"
- License Key ("lk" attribute) : You can use any of the following license keys given below. Binary distribution of sample client is shipped with the first one below.
- AUA License Key: MOw-DpjjHGxPlnKDXZlGh72zoPoryq4q5K1AhJL58HKfsoeCklXadcw - allows usage of PI, PA, PFA, BIO-FMR, BIO-FIR, BIO-IIR, OTP, PIN, Indian Language, e-KYC
- ASA License Key: MGL5DLfGSNT6Eam2Gq_CtHARsi8HML0GpYH5tU_kg7XJ8YpkdtaL9TA
- Public key certificate - See chapter on certificates remember to use Staging/Test certificate for testing and production certificate for production
- Keystore for digital signature for "public" AUA - You can request p12 file by writing to authsupport[at]uidai[dot]net[dot]in.
/<1st-digit-of-uid>/<2nd-digit-of-uid>/
Following are the test UIDs and their demographic data. All of them have same bio record as given above. If you have your own Aadhaar number (real one) then you can use that to test too.
uid=999941057058
name=Shivshankar Choudhury
dob=13-05-1968
dobt=V
gender=M
phone=2810806979
email=sschoudhury[at]dummyemail[dot]com
street=12 Maulana Azad Marg
vtc=New Delhi
subdist=New Delhi
district=New Delhi
state=New delhi
pincode=110002
uid=999971658847
name=Kumar Agarwal
dob=04-05-1978
dobt=A
gender=M
phone=2314475929
email=kma[at]mailserver[dot]com
building=IPP, IAP
landmark=Opp RSEB Window
street=5A Madhuban
locality=Veera Desai Road
vtc=Udaipur
district=Udaipur
state=Rajasthan
pincode=313001
uid=999933119405
name=Fatima Bedi
dob=30-07-1943
dobt=A
gender=F
phone=2837032088
email=bedi2020[at]mailserver[dot]com
building=K-3A Rampur Garden
vtc=Bareilly
district=Bareilly
state=Uttar Pradesh
pincode=243001
uid=999955183433
name=Rohit Pandey
dob=08-07-1985
dobt=A
gender=M
phone=2821096353
email=rpandey[at]mailserver[dot]com
building=603/4 Vindyachal
street=7TH Road Raja Wadi
locality=Neelkanth Valley
poname=Ghatkopar (EAST)
vtc=Mumbai
district=Mumbai
state=Maharastra
pincode=243001
uid=999990501894
name=Anisha Jay Kapoor
gender=F
dob=01-01-1982
dobt=V
building=2B 203
street=14 Main Road
locality=Jayanagar
district=Bangalore
state=Karnataka
pincode=560036
If you want to make use of your own UIDs (for testing services like e-KYC), you can request for creation of a test UID by writing to community.tc[at]uidai[dot]net[dot]in from your registered e-mail id (email id registered for the UID which is mandatory). You should not request for a test UID for another person. Please send filled-in consent form duly signed by the applicant.
Test UID creation process is time consuming and you should provide minimum 20 days for the activity to get completed. Any follow ups after 20 days, should be done to the above mentioned mail id ONLY. Please note that, the test UIDs will be created at UIDAI's discretion and UIDAI reserves the rights to deny any such requests for any reasons which will not be disclosed to the requester.
/<1st-digit-of-uid>/<2nd-digit-of-uid>/
Aadhaar authentication requires the identity data of the resident within the XML (PID block) to be encrypted. AES-256 session key is encrypted using UIDAI's 2048- public key. This page contains all certificates available for the ecosystem.
Sample Java application (both binary and source code zip files) to test Aadhaar authentication can be downloaded from here.
Production Public Key Certificates
Note: Latest production public key certificate (for PID Encryption) will always be available under link: uidai_auth_prod.cer
| Certificate Detail | Expiry Date |
|---|---|
| uidai_auth_prod.cer(Latest) | 13 Aug 2028 |
| uidai_auth_prod_old.cer(old) | 23 Sep 2025 |
| uidai_auth_prod_old.cer(old) | 30 Dec 2019 |
| uidai_auth_prod_old.cer(old) | 27 Feb 2017 |
| uidai_auth_prod_old.cer (old) | 5 Aug 2015 |
| uidai_auth_prod_old.cer (old) | 3 Oct 2013 |
UIDAI Digital Signature
For validating & signature in the UIDAI response xml , you are requested to make use of the signature public key attached below. (Not required if you are not validating signatures in API responses or using the trust root validation for validating the UIDAI response xml signature)
| Certificate Detail | Expiry Date |
|---|---|
| 28 Apr 2026 | |
| uidai_auth_sign_prod.cer (old) | 27 May 2023 |
| uidai_auth h_sign_prod_old.cer (Old) | 07 June 2020 |
| uidai_auth_sign_prod_old.cer (Old) | 10 June 2017 |
| uidai_auth_sign_prod_old.cer (old) | 29 Jul 2015 |
Offline e-KYC public key certificates
Please find the Public key certificate details for Validating the digital signature of Aadhaar Paperless Offline e-KYC and Secure QR Code.
Paperless Offline e-KYC
| Certificate Detail | Expiry Date |
|---|---|
| uidai_offline_publickey_2026.cer | 03 Feb 2029 |
| uidai_offline_publickey_17022026.cer | 17 Feb 2026 |
| uidai_offline_publickey_26022021.cer | 27 Feb 2024 |
| uidai_offline_publickey_29032019.cer | 28 Feb 2021 |
| uidai_offline_publickey_26022019.cer | 09 April 2019 |
Secure QR Code
| Certificate Detail | Expiry Date |
|---|---|
| uidai_12_06_18_cer.cer | 07 June 2021 |
| uidai_prod_cdup.cer | 07 June 2020 |
Staging/Testing Public Key Certificates
Note: Latest staging/testing public key certificate will always be available under link uidai_auth_stage.cer
| Certificate Detail | Expiry Date |
|---|---|
| Auth_Stagging_11082030.cer | 11 Aug 2030 |
| AuthStaging25082025.cer | 25 Aug 2025 |
| uidai_auth_stage.cer (Latest) | 16 Sept 2020 |
| uidai_auth_stage_old.cer (old) | 22 Sept 2020 |
| PublicKey_testing.cer | 26 Jan 2023 |
PreProduction Signature/Encryption Public Key Certificates
Please find the keys below for validating the Digital Signature of UIDAI response XML, and encrypting the PID block of request XML in PreProduction Environment.
| Certificate Detail | Expiry Date |
|---|---|
| 25 Aug 2028 | |
| 03 May 2026 | |
| uidai_auth_sign_Pre-Prod_2023.cer (old) | 02 June 2023 |
| UIDAI-EncryptionKey-Pre-Production.cer | 29 Sept 2025 |
| uidai_auth_sign_preprod.cer (Old) | 16 June 2020 |
| uidai_auth_encrypt_preprod.cer (Old) | 30 October 2020 |
This is a sample authentication client software which works with authentication API. This software has the capability to authenticate demographic fiels, OTP,and provision to plug-in biometric capture. This is written in Java and requires Java 1.6. Source code along with Maven build files and Eclipse project files are also provided.
This is designed purely as a test tool to reduce the development time taken by the AUAs and device vendors. This is released as source code and developers are free to download, modify, enhance, and use it. THIS IS NOT A SUPPORTED SOFTWARE.
---------------------------------------------------------------------------------------------
User manual - See "Aadhaar e-KYC Basics" book.
----------------------------------------------------------------------------------------------
e-KYC API version 1.0 Sample Client - Full Source Code - updated 08 Jan 2014
e-KYC API version 1.0 Sample Client - Full Binary - updated 08 Jan 2014 (NOTE: Also download Fop and Batik and extract the jar files to "jar" directory for printing to work)
e-KYC API version 2.0 Sample Client - Full Source Code - updated 22nd Sep 2016
e-KYC API version 2.0 Sample Client - Full Binary - updated 22nd Sep 2016
XSD and Protobuf files for Aadhaar Authentication APIs Version 1.6
Authenticaion client written in C/C++ is made available to the community by Geodesic team for their GeoAmida device. Full source is hosted at their Github repository. Please note that this software is neither created nor maintained by UIDAI. Aadhaar community is thankful to Geodesic for contributing this as open source to the community.
Authenticaion client written in Python and related tools are made available to the community by Venkata Pingali from TCS Labs, Pune. Full source is hosted at this Github repository. In addition, Aadhaar-based login module for Django is available here. Please note that this software is neither created nor maintained by UIDAI. Aadhaar community is thankful to the author for contributing this as open source to the community.
Biometric data formats (FMR, FIR, IIR) testing tool checks if formats are valid ISO formats and as supported by Aadhaar Authentication. Developers can use this tool to test if the biometric record is proper before testing it online.
Biometric Format Test Tool - Binary and Source - Released on 9 Aug 2012
Bulk demographic authentication tool facilitates Demo Auth, accepting demographic data of the residents through various input modalities. THIS IS A SAMPLE TOOL demonstrating the features of demographic authentication. Both source and binary are provided below.
Binary setup and user manual - Binary - Released on 9 Oct 2013
Source code project - Source - Released on 9 Oct 2013
This is a sample reference implementation of KYR+ software which works with Aadhaar Enrolment Client 1.2.x versions. This software has the capability to configure fields and capture additional fields specific to registrars. This is built using Visual Studio 2008 using Windows forms and C#.
This is designed purely as a productivity tool to reduce the development time taken by the registrars on the KYR+ aspect. This is released as source code and registrars are free to download, modify, enhance, and use it. THIS IS NOT A SUPPORTED SOFTWARE.
KYR+ sample application (New Version) - Full source code - released 15 March, 2011.
KYR+ sample application (New Version) - Binary - released 15 March, 2011.
KYR+ sample application document (New Version) - User Manual - released 15 March, 2011
This test decryptor utility is developed to assist Registrars in decrypting the Registrar Enrolment Packets before go-live. This utility works with packets that are encrypted with 1024-bit key (see below for 2048-bit key tool)This utility supports only PFX and PEM formats for private key files. The private key files must be password protected. This tool also supports USB Token with .Net PKCS11 APIs at location "[local file path removed]".
For all the other cases, a modification in the source code of Decryptor Utility is necessary for execution the decryption. Full source code is available below for download.
This is designed purely as a test tool along with source code provided for initial testing. THIS IS NOT A SUPPORTED SOFTWARE.
Decryption utility binary - last updated 16 Nov, 2010.
Decryption utility source code - last updated 16 Nov, 2010.
Decryption utility "read me" document - last updated 16 Nov, 2010
This test decryptor utility is developed to assist Registrars in decrypting the Registrar Enrolment Packets before go-live. This utility works with packets that are encrypted with 2048-bit key (see above for 1024-bit key tool). This utility supports only PFX and PEM formats for private key files. The private key files must be password protected. This tool also supports USB Token with .Net PKCS11 APIs at location "[local file path removed]".
For all the other cases, a modification in the source code of Decryptor Utility is necessary for execution the decryption. Full source code is available below for download.
This is designed purely as a test tool along with source code provided for initial testing. THIS IS NOT A SUPPORTED SOFTWARE.
Decryption utility binary - last updated 31 Oct, 2011.
Decryption utility source code - last updated 31 Oct, 2011.
Decryption utility "read me" document - last updated 31 Oct, 2011.
(OLD VERSION, see below for new version links) This is a sample reference implementation of KYR+ software which works with Aadhaar Enrolment Client 1.1.x versions. This software has the capability to configure fields and capture additional fields specific to registrars. This software saves the captured data into an embedded database. This is built using Visual Studio 2008 using Windows forms and C#.
This is designed purely as a productivity tool to reduce the development time taken by the registrars on the KYR+ aspect. This is released as source code and registrars are free to download, modify, enhance, and use it. THIS IS NOT A SUPPORTED SOFTWARE.
KYR+ sample application (Old Version) - Full source code for version 3.0 - released 15 Sept, 2010.
KYR+ sample application document (Old Version) - Version 3.0 documentation - released 15 Sept, 2010
The below certificate should be used for encrypting the response XML before placing them in SFTP INBOX of UIDAI.
| Certificate Detail | Expiry Date |
|---|---|
| uidai_fi_prod.cer | 5 Aug 2015 |
Sample SHA-256 implementation code to sign the Authentication Request XML digitally
Click here for (Sample SHA-256 implementation code to sign the Authentication Request XML digitally)
Content Information
Published on: 11 May 2026
Last Updated: 02 Jul 2026
Owner: Dev UIDAI
View more F.A.Qs
Content Information
Published on: 11 May 2026
Last Updated: 02 Jul 2026
Owner: Dev UIDAI