intermediate
plugins
veriff
persona

Veriff and Persona — Identity Verification

Add KYC and age verification to rider signups using the Veriff or Persona plugins. Setup, pricing, and how verified-rider blocks work.

Levy Fleets TeamMay 18, 20266 min read

Veriff and Persona — Identity Verification

Veriff and Persona are first-party KYC plugins. Both verify a rider's government ID and confirm they meet age requirements before allowing rentals. Install one (you don't need both) based on which provider serves your markets.

When you need KYC

Most US fleet operators don't formally require KYC, but you should consider it if:

  • You rent e-bikes or mopeds that require a 16+ or 18+ rider
  • You operate in regulated markets (EU, UK, several US cities) where micromobility licensing requires verified-rider records
  • You've had fraud or chargeback issues with anonymous accounts
  • You sell vehicle insurance that requires verified policyholders (Cover Genius pairs well with this)

Veriff vs Persona — which to pick

FactorVeriffPersona
Coverage230+ countries200+ countries
Strongest inEU, UK, LATAMUS, Canada, Asia-Pacific
Pricing$1.50 per verification (Levy collects $0.30)Comparable usage-based pricing
Setup time10 minutes10 minutes
Mobile UXBranded WebView with selfie captureBranded WebView with selfie capture

Both write the same kyc_verified or kyc_failed customer tag back to Levy, so your downstream logic is provider-agnostic. Pick one — you generally don't need both.

How verification works

  1. A new rider signs up in the Levy mobile app.
  2. Levy fires a customer.created webhook to the KYC plugin.
  3. Veriff (or Persona) creates a verification session and returns a URL.
  4. The mobile app opens the URL in a WebView. Rider scans their ID and takes a selfie.
  5. The KYC vendor processes the verification (seconds to minutes).
  6. The vendor calls back to the plugin's webhook endpoint with the result.
  7. The plugin calls PATCH /api/plugin/v1/customers/<id>/tags to write either kyc_verified or kyc_failed on the customer.
  8. The mobile app reads that tag and either allows rentals or blocks with a "verification required" screen.

Setup — Veriff

You need a Veriff account with a Public Key and Private Key. Get these from https://station.veriff.com → Integrations.

1

Install the plugin

Open Dashboard → Marketplace, search "Veriff", click Install.

2

Grant permissions

Veriff requests read:customers, read:customers.pii, and write:customers.tags. The PII scope is required so Veriff can pre-fill the rider's name on the verification form. The PII scope is highlighted in amber — check the confirmation box.

3

Enter API credentials

Paste your Veriff Public Key and Private Key. These are stored encrypted at rest in Supabase Vault.

4

Configure verification rules

  • Required for: All riders / Riders under 25 / Riders in specific countries
  • Document types: Passport, driver's license, national ID
  • Minimum age: 16, 18, or 21
5

Confirm and install

No charge at install. You're billed per verification — $1.50 each — at month-end.

Setup — Persona

Persona setup is identical in shape — install, grant permissions, enter your Persona API key and Template ID, configure verification rules. See https://withpersona.com/docs for getting your API credentials.

Mobile-app blocking behavior

Once installed, the Levy mobile app reads each customer's KYC tags before allowing a rental:

  • kyc_verified — rentals allowed normally
  • kyc_failed — rentals blocked with a "Verification failed, contact support" message
  • No tag yet — rentals blocked with a "Complete verification to ride" CTA that opens the verification WebView

If you uninstall the KYC plugin, the mobile app stops blocking — existing tags remain, but new riders won't be prompted.

Pricing

Veriff is usage-based at $1.50 per verification. Levy collects a 20% platform fee ($0.30) and pays Veriff $1.20. You see one line item on your monthly invoice: "Veriff usage — X verifications".

Persona is comparably priced; check the marketplace detail page for the current rate.

Failed verifications are still billable — the vendor performed the work. Re-attempts by the same rider are billed as separate verifications.

Compliance notes

  • Both Veriff and Persona are SOC 2 compliant and offer GDPR-aligned data handling.
  • KYC results (the verification document itself, the selfie) are stored on the vendor's infrastructure, not Levy. Levy only stores the binary tag.
  • If a rider uninstalls their Levy account, Levy fires a deletion webhook to the KYC plugin so the vendor can purge their record (GDPR right-to-erasure).

What's next