Autheo SDK
A Flutter SDK for KYC verification — ID card capture, liveness selfie, OTP, and address verification.
Requirements
| Minimum | |
|---|---|
| Flutter | 3.16.0 |
| Dart | 3.2.0 |
| Android | API 21 (Android 5.0) |
| iOS | 12.0 |
Installation
Add to your pubspec.yaml:
dependencies:
autheo_sdk: <latest-version>
Then run:
flutter pub get
Platform Setup
Android
Add the following permissions to android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Set minimum SDK version in android/app/build.gradle:
minSdkVersion 21
iOS
Add the following keys to ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>Required to capture ID card and selfie for verification</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Required to verify your location for address verification</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Required to select proof of residence document</string>
Set minimum deployment target to iOS 12.0 or higher in ios/Podfile:
platform :ios, '12.0'
Usage
import 'package:autheo_sdk/autheo_sdk.dart';
final result = await AutheoSDK.startVerification(
context,
apiKey: 'your-api-key',
firstName: 'John',
lastName: 'Doe',
businessId: 'your-business-id',
verificationType: 'ID Verification',
isAddressCheck: false,
isAmlCheck: false,
isCreditCheck: false,
isOtpRequired: true,
idType: 'Ghana Card',
idNumber: 'GHA-123456789-0',
// Optional
email: 'john@example.com',
phone: '0244123456',
addressCheckType: 'digital', // 'standard' | 'digital' | 'physical'
);
if (result.isSuccess) {
debugPrint('Verification passed: ${result.message}');
} else {
debugPrint('Verification failed: ${result.message}');
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
String |
Yes | — | Your Autheo API key |
firstName |
String |
Yes | — | Candidate first name |
lastName |
String |
Yes | — | Candidate last name |
businessId |
String |
Yes | — | Your business account ID |
verificationType |
String |
Yes | — | e.g. 'ID Verification' |
isAddressCheck |
bool |
Yes | — | Include address verification step |
isAmlCheck |
bool |
Yes | — | Run AML/blacklist check |
isCreditCheck |
bool |
Yes | — | Run credit history check |
isOtpRequired |
bool |
Yes | — | Require OTP before proceeding |
email |
String |
No | '' |
Candidate email |
phone |
String |
No | '' |
Candidate phone number |
idType |
String |
Yes | — | ID document type e.g. 'Ghana Card' |
idNumber |
String |
Yes | — | ID document number |
addressCheckType |
String |
No | 'digital' |
'standard', 'digital', or 'physical' |
Result
VerificationResult is returned with:
| Field | Type | Description |
|---|---|---|
isSuccess |
bool |
true if verification completed successfully |
message |
String? |
Human-readable status message |
data |
Map<String, dynamic>? |
Verification response data |
error |
String? |
Error detail if verification failed |
Troubleshooting
Camera not opening on Android — ensure CAMERA permission is declared and minSdkVersion is at least 21.
Face detection not working on certain devices — the SDK automatically caps resolution and uses NV21 format with row-padding stripped for compatibility with Samsung and Sony devices.
Firebase duplicate class error — if your app uses firebase-messaging, this SDK is safe. The google_ml_kit meta-package (which caused this conflict) has been replaced with the specific google_mlkit_face_detection package.
Libraries
- autheo_sdk
- components/custom_textfield
- constants/api_constants
- constants/colors
- screens/address_verification_screen
- screens/buyers
- screens/camera_preview_screen
- screens/ghana_card_capture
- screens/ghana_card_capture_new
- screens/landing_screen
- screens/loan_verification
- screens/multi_camera_screen
- screens/multi_capture_screen
- screens/otp_screen
- screens/schedule_appointment_screen
- screens/selfie_capture
- screens/selfie_new_capture
- screens/sellers
- screens/verification_screen
- service/api_service
- utils/helper
- utils/multi_image_capture
- utils/view_decoded_images