If you’re integrating Verifa and coming from Persona, this page maps the Persona concepts you already know to the Verifa equivalents. The two platforms are structurally similar enough that most migrations are a string swap rather than a refactor.
Persona.Client({...}) → Verifa.Client({...}) (same constructor shape, same callbacks)You can keep your existing backend session-create / webhook handler architecture; only the JS snippet and a handful of API field names change.
Differences:
captureUrl (server-created), matching Persona’s
production mode with inquiryId. Persona’s templateId-only quickstart
maps to Verifa’s publishableKey + templateId (also supported — see
JavaScript SDK → Quickstart).onReady is optional. The SDK opens automatically on .open(); you don’t
need an onReady → open() pattern like Persona’s.onComplete payload is { sessionId, status }. Field-level results live
server-side (fetch via GET /api/v1/sessions/:id); they’re never delivered
to the browser, matching Persona’s “no PII in the browser” stance.onError receives { code, message } with string codes you can switch
on. See the error reference.POST /api/v1/inquiries)Persona:
Verifa:
Response shape differs slightly — Persona returns JSON:API style with
data.id and data.attributes.fields-as-array. Verifa returns flat JSON
with id, capture_url, status, etc.
Persona:
Verifa:
Both return the structured result plus all the per-check fields. The Verifa response is flatter (no JSON:API envelope).
Both platforms sign with HMAC-SHA256. Verifa’s verification snippet:
Event-name mapping:
Full Verifa event list in the Webhooks Guide.
Persona bills per report. A single Inquiry that runs document verification
Verifa bills per session. The same multi-check session is one charge; reattempts within a session don’t re-bill. AML screening + 12 months of monitoring is a separate annual line item.
If you’re migrating from Persona for cost reasons, expect ~30-50% lower all-in cost on equivalent volume, plus removal of the “per-check budget forecast” mental overhead.
{ id, ... }
objects. If you have JSON:API parsing helpers, drop them.camelCase via
the Verifa-Key-Inflection header. Persona uses kebab-case. The shift
is mostly cosmetic but check your JSON parsers.workflow_id in code.If you hit something during migration that this page doesn’t cover, email support@withverifa.com with your Persona inquiry template and a description of what you’re trying to reproduce. We’ve done enough Persona migrations to have most edge cases mapped.