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.