Mobile identity verification with Persona's native SDK for Android and iOS

An optimized customer experience across your mobile applications

Imagine the perfect mobile app experience. Elegant scrolling. Beautiful, responsive buttons. Every frame is smooth and crisp. But when you’re ready to submit your government ID, you click next and get kicked to a website in the browser. To be honest, it was a bit jarring. Fortunately, it doesn't have to be this way.

In 2019 there were a reported 3.2 billion smartphone users across the world, with 3.8 billion predicted by 2021. Of those smartphone users, 90% of their time on mobile was spent in a native app experience. In other words, a lot. To help app developers and businesses unlock seamless identity verification experiences for this native world, we've released the Persona Mobile SDK for Android and iOS.

Persona’s Native SDK supports verifications and theming out-of-the-box, with more features on the way.

If you’re new to Persona or currently integrated, the Native SDKs have various advantages over using the website or an embedded WebView for your native app.

  • Leverage the phone’s native processing power to auto-capture government IDs and selfies to get higher quality pictures faster.
  • Persona’s theming capability makes it easy for your SDK to match your aesthetic. If you like how it looks out of the box, you’re done. If you want to spruce it up, that’s cool too.
  • Enjoy a smoother, faster experience overall with our native SDK; the experience will feel like it’s part of your own app. Because, well, it kind of is. 
  • Use the same templates you’ve configured for the web, on mobile. With no extra work, collect and verify the same information in the same way you know.

Integrate with just a few lines of code.

If you want to jump right into the documentation, please go right ahead. If you’re curious what this might look like in your app, look no further.


// launch from your Activity
  .start(this, VERIFY_REQUEST_CODE)

// overwriting the Activity#onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  super.onActivityResult(requestCode, resultCode, data)
  if (requestCode == VERIFY_REQUEST_CODE) {
    when(val result = Inquiry.onActivityResult(data)) {
      is Inquiry.Response.Success -> { }
      is Inquiry.Response.Failure -> { }
      is Inquiry.Response.Cancel -> { }
      is Inquiry.Response.Error -> { }


class ViewController: UIViewController, InquiryDelegate {
    @IBAction func buttonTapped(_ sender: UIButton) {
        let config = InquiryConfiguration(templateId: "TEMPLATE_ID")
        Inquiry(config: config, delegate: self).start(from: self)
    // MARK: - Inquiry Delegate Methods
    func inquirySuccess(inquiryId: String, attributes: Attributes?) { }
    func inquiryCancelled() { }
    func inquiryFailed(inquiryId: String) { }
    func inquiryError(_ error: Error) { }

Here’s the technical documentation again to get started. Note: React Native will be added soon!

Don't have a mobile engineer? How about an engineering team? Don't worry, that's why we built the hosted flow. Contact us to learn more.

Ready to get started?

Get in touch or start exploring Persona today.