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
| Factor | Veriff | Persona |
|---|---|---|
| Coverage | 230+ countries | 200+ countries |
| Strongest in | EU, UK, LATAM | US, Canada, Asia-Pacific |
| Pricing | $1.50 per verification (Levy collects $0.30) | Comparable usage-based pricing |
| Setup time | 10 minutes | 10 minutes |
| Mobile UX | Branded WebView with selfie capture | Branded 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
- A new rider signs up in the Levy mobile app.
- Levy fires a
customer.createdwebhook to the KYC plugin. - Veriff (or Persona) creates a verification session and returns a URL.
- The mobile app opens the URL in a WebView. Rider scans their ID and takes a selfie.
- The KYC vendor processes the verification (seconds to minutes).
- The vendor calls back to the plugin's webhook endpoint with the result.
- The plugin calls
PATCH /api/plugin/v1/customers/<id>/tagsto write eitherkyc_verifiedorkyc_failedon the customer. - 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.
Install the plugin
Open Dashboard → Marketplace, search "Veriff", click Install.
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.
Enter API credentials
Paste your Veriff Public Key and Private Key. These are stored encrypted at rest in Supabase Vault.
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
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 normallykyc_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
- Cover Genius insurance — often paired with KYC for vehicle rentals
- Configuring a plugin — change verification rules later
- Troubleshooting — what to do if verifications fail to write back