Overview
Onfido offers an identity verification platform designed to help businesses verify user identities and prevent fraud in digital environments. The platform combines document verification, biometric analysis, and database checks to assess the authenticity of an identity. This process is typically integrated into customer onboarding flows, enabling organizations to meet Know Your Customer (KYC) and Anti-Money Laundering (AML) regulations, as well as general fraud prevention objectives.
The core of Onfido's service involves users submitting a photo of their government-issued ID document and a selfie. The system then uses artificial intelligence to analyze the document's authenticity, compare the selfie to the document photo, and perform liveness detection to ensure the user is present and not a spoof. This multi-layered approach aims to minimize the risk of identity fraud, including synthetic identity fraud and account takeovers.
Onfido is suitable for a range of use cases, including financial services, gaming, healthcare, and sharing economy platforms, where secure and compliant customer onboarding is critical. The platform provides tools for developers to integrate these verification capabilities directly into their applications via a comprehensive API reference and dedicated SDKs for web, iOS, and Android. The developer experience is supported by clear documentation and examples in languages such as Python, Ruby, and Node.js, facilitating quick implementation.
Regulatory compliance is a key focus for Onfido, with certifications and adherence to standards such as SOC 2 Type II, GDPR, ISO 27001, and eIDAS. This commitment to compliance helps businesses operating in regulated industries to meet their legal obligations while maintaining a streamlined user experience. The platform's ability to automate identity checks across various jurisdictions makes it a solution for global operations requiring consistent verification standards.
Key features
- Document Verification: Automated analysis of government-issued identity documents from over 195 countries to detect tampering and ensure authenticity.
- Biometric Verification: Compares a user's selfie to their document photo using facial recognition, including liveness detection to prevent spoofing attempts.
- Watchlist Screening: Screens individuals against global watchlists, sanctions lists, and politically exposed person (PEP) databases for enhanced due diligence.
- Identity Verification: Combines document, biometric, and data checks to confirm a user's identity against reliable sources.
- Fraud Prevention: Utilizes AI and machine learning to identify and flag suspicious activities and patterns indicative of fraud.
- Age Verification: Confirms a user's age for compliance with age-restricted services and products.
- Global Coverage: Supports verification for users across numerous countries and regions, accommodating diverse document types.
- Developer SDKs: Provides client-side SDKs for Web, iOS, and Android platforms to simplify integration.
Pricing
Onfido primarily offers custom enterprise pricing, which is tailored based on the volume of verifications, specific features required, and geographic coverage. Potential customers are encouraged to contact Onfido directly for a personalized quote.
| Service Tier | Description | Pricing Model |
|---|---|---|
| Enterprise | Full suite of identity verification features, including document, biometric, and watchlist checks. Designed for high-volume usage and specific compliance needs. | Custom pricing per transaction, based on volume and feature set. Contact sales for a quote. |
Common integrations
- Web Applications: Integrate using the Onfido Web SDK for in-browser identity verification flows.
- Mobile Applications (iOS): Implement identity checks directly within iOS apps using the Onfido iOS SDK.
- Mobile Applications (Android): Integrate identity verification into Android apps with the Onfido Android SDK.
- Backend Systems: Utilize the Onfido API with server-side languages like Python, Ruby, or Node.js to manage checks and retrieve results.
Alternatives
- Jumio: Offers identity verification, eKYC, and AML solutions, focusing on document and biometric authentication.
- Veriff: Provides AI-powered identity verification with a focus on video-first authentication and fraud prevention.
- Auth0 (Okta): Primarily an identity and access management platform, which can integrate with identity verification providers to enhance user security and compliance.
Getting started
To begin integrating Onfido, developers typically start by setting up a client-side SDK (Web, iOS, or Android) to capture user documents and biometrics, then process the data via the Onfido API from their backend. The following Python example demonstrates how to create an applicant and initiate a document check using the Onfido API.
import onfido
# Initialize the Onfido API client with your API token
# Replace 'YOUR_API_TOKEN' with your actual Onfido API token
onfido_api = onfido.Api(api_token='YOUR_API_TOKEN')
try:
# 1. Create an applicant
applicant = onfido_api.applicant.create(
first_name='Jane',
last_name='Doe',
email='[email protected]'
)
print(f"Applicant created: {{applicant.id}}")
# In a real application, you would then upload documents and selfies
# using the client-side SDKs (Web, iOS, Android) and associate them
# with this applicant ID. For demonstration, we'll simulate a check.
# 2. Create a check for the applicant
# This assumes documents have been uploaded and linked to the applicant via SDKs
check = onfido_api.check.create(
applicant_id=applicant.id,
report_names=['document', 'facial_similarity_photo', 'watchlist'],
# Optional: Specify document type, e.g., 'driving_licence', 'national_identity_card'
# document_types=['driving_licence']
)
print(f"Check initiated: {{check.id}}")
print(f"Check status: {{check.status}}")
# 3. Retrieve check results (asynchronously in a real application)
# You would typically use webhooks to be notified when a check is complete.
# For this example, we'll poll the status.
# In a production environment, avoid busy-waiting and use webhooks.
import time
while check.status in ['in_progress', 'awaiting_applicant']:
time.sleep(5) # Wait for 5 seconds before polling again
check = onfido_api.check.find(check.id)
print(f"Current check status: {{check.status}}")
print(f"Final check result: {{check.result}}")
if check.result == 'clear':
print("Applicant successfully verified.")
else:
print("Applicant verification failed or requires further review.")
except onfido.OnfidoException as e:
print(f"Onfido API error: {{e}}")
except Exception as e:
print(f"An unexpected error occurred: {{e}}")
This Python code snippet illustrates the basic flow: creating an applicant, initiating a check, and polling for the result. In a production environment, the document and biometric data upload would be handled by one of Onfido's client-side SDKs, which securely capture and transmit the necessary information before the server-side check is performed. Webhooks are recommended for receiving asynchronous updates on check completion rather than polling.