Each Passflow product runs standalone or composes into the full pipeline. Same SDKs, same dashboards, same decisioning model.
Document capture, OCR, biometric match, AML screening and decisioning — orchestrated through one workflow. Drop into your onboarding flow with three lines of code.
# Start an identity verification curl https://api.passflow.ai/v1/verifications \ -H "Authorization: Bearer $PASSFLOW_API_KEY" \ -d '{ "workflow": "us_retail_kyc_v3", "applicant": { "reference": "acct_28104" }, "residency": "us-ashburn-1" }'
MRZ parsing, NFC chip read, security feature detection, tamper analysis. Updates ship monthly from a team of forensic document analysts.
Passive liveness from a single selfie. No "turn your head" choreography that loses 20% of your applicants. Active liveness available as fallback for high-risk segments.
Selfie-to-document, selfie-to-ID-photo, selfie-to-existing-customer. Returns a similarity score with model version and decision threshold — what your audit team needs.
Screen on apply. Re-screen on schedule. Re-screen on event. Built-in case management for analyst review. 250+ lists curated and updated daily.
| CANDIDATE | SCORE | DOB DELTA | DISP |
| Chen, Maria | 0.71 | +11 yr | CLEARED |
| Chen, Maria L. | 0.65 | −4 yr | CLEARED |
| — no further candidates above 0.6 — |
iOS, Android, Web, Flutter, React Native. REST API + signed webhooks. A test bank account with mock data so you can wire it up before the contract closes.
import Passflow from "@passflow/node" const pf = new Passflow(process.env.PASSFLOW_API_KEY) const verification = await pf.verifications.create({ workflow: "us_retail_kyc_v3", applicant: { reference: "acct_28104" } }) // Receive a signed webhook when decisioned app.post("/passflow", pf.verifyWebhook, (req, res) => { if (req.body.event === "verification.approved") { openAccount(req.body.applicant.reference) } res.sendStatus(200) })