Skip to content

Identity Verification

The Android and iOS SDKs provide a streamlined way to integrate identity verification flows into your mobile application. These flows support the capture and validation of the following user credentials: Email address, Passport, ID Card, Driving License.

Integrate the SDK's pre-built UI components into your app to guide users through each verification step. This includes interfaces for entering an email address, capturing images of passports or ID cards, and confirming submitted data.

After verification, the SDK stores the verified credentials securely in the device's local database. This can later be used to fulfill presentation requests.

Try Identity Verification

Experience identity verification in action with our demo applications. Each mobile app demonstrates real-world identity verification workflows with Self SDK.

Platform Quick Install Source Code
Mobile - Android Download APK View Source
Mobile - iOS Download from App Store View Source

Quick Start

  1. Install mobile app - Download the Android or iOS app using the links above
  2. Register Self account - Open the mobile app and follow the registration prompts
  3. Verify a passport or driving license or email - Follow the prompts in the mobile app

Each application includes complete identity verification workflows with real cryptographic signatures, verification, and audit trails.

How to build an identity verification workflow

You can build an identity verification workflow for governement-issued identity documents with Self. Let's break down the process into steps:

iOS

To read data from an e-passport. You need to configure the ability to read an NFC chip from passport:

  1. Add Near Field Communication Tag Reading capability to the entitlement file.
  2. Add NFCReaderUsageDescription to Info.plist file.
    <key>NFCReaderUsageDescription</key>
    <string>This app uses NFC to scan passports</string>
    3. Add a list of application identifiers that the app supports into the Info.plist file.
1
2
3
4
5
6
    <key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
       <array>
          <string>A0000002472001</string>
          <string>A0000002471001</string>
          <string>00000000000000</string>
       </array>

Once you have configured your app to be able to read the passport NFC chip you can carry out identity verification as follows:

case .verifyDocumentStart:
    VerifyDocumentStartScreen {
        showVerifyDocument = true
    } onBack: {
        withAnimation(.easeInOut(duration: 0.5)) {
            currentScreen = .actionSelection
        }
    }
    .fullScreenCover(isPresented: $showVerifyDocument, onDismiss: {
        // dismiss view
    }, content: {
        // MARK: - Verify Documents
        DocumentFlow(account: viewModel.account, devMode: true, autoCaptureImage: false, onResult:  { success in
            print("Verify document finished: \(success)")
            showVerifyDocument = false
            if success {
                withAnimation(.easeInOut(duration: 0.5)) {
                    currentScreen = .verifyDocumentResult
                }
            } else {
                withAnimation(.easeInOut(duration: 0.5)) {
                    currentScreen = .actionSelection
                }
            }
        })
    })

Android

// integrate passport, idcard verification flow
addDocumentVerificationRoute(navController, route = MainRoute.DocumentRoute, selfModifier = selfModifier,account = { viewModel.account },
    isDevMode = { false }, // true for testing only
    onFinish = { isSuccess, error ->
        if (isSuccess) {
            coroutineScope.launch(Dispatchers.Main) {
                navController.navigate(MainRoute.VerifyDocumentResult)
            }
        }
    }
)

Conclusion

Identity verification with Self SDK provides a secure, privacy-preserving way to verify user credentials directly on their device. The SDK handles the complex verification processes while giving you full control over the user experience.

Key Benefits

  • Privacy-First: All verification happens locally on the user's device
  • Secure Storage: Verified credentials are stored cryptographically on the device
  • Multiple Document Types: Support for passports, ID cards, driving licenses, and email addresses
  • Pre-built UI: Ready-to-use components reduce development time
  • Cross-Platform: Consistent experience across iOS and Android

For further details and advanced use cases, refer to the Essentials section or browse our examples repository for working implementations.