Step-up, not login — FaceSign is not a login gate. Your user is already authenticated. FaceSign triggers after your system detects a high-risk action like a wire transfer above your threshold.
How it works
- Your transfer service detects a wire above your risk threshold (e.g., $10,000).
- Your backend creates a FaceSign session with liveness detection, a conversation node to confirm transaction details, and an email OTP.
- You embed
clientSecret.urlas aniframesrcinside your authorization page — the verification runs inline on your domain, keeping the user in your app and branding. Redirecting the user to the hosted URL is the fallback when an iframe can’t be used (e.g., strict parent-frame CSP, native mobile wrappers without a webview). - FaceSign’s AI avatar walks the user through verification — confirming the transfer details aloud and checking for signs of coercion.
- Your webhook handler receives the result and authorizes or blocks the transfer.
Build the flow
1
Define the verification flow
Create a session with three verification steps: liveness detection to confirm a real person is present, a conversation node where the avatar reads back the transaction details and asks the user to confirm, and an email OTP as a second factor.
Wire Transfer Flow
Coercion detection — With
videoAIAnalysisEnabled: true, FaceSign’s post-session video analysis checks for signs of duress: unusual eye movement, stressed speech patterns, or off-screen prompting. This is the key differentiator for wire fraud prevention — even if the real user is present, coercion detection catches scenarios where they are being forced to authorize a transfer.2
Create the session from your backend
When your transfer service flags a wire above the threshold, call the FaceSign API to create a session.
- JavaScript
- Python
services/wire-transfer.js
3
Handle the webhook
When the session completes, FaceSign sends a
session.status webhook. Fetch the full session to inspect the results and decide whether to authorize the transfer.- JavaScript
- Python
api/webhooks/facesign.js
4
Implement the transfer decision
Use this decision matrix to map FaceSign outcomes to transfer actions:
Why conversation matters for wire fraud
Traditional step-up verification checks whether the user is present. FaceSign’s conversation node checks what they know about the transaction. The avatar reads the transfer details aloud and asks the user to confirm. This catches two critical scenarios:- Account takeover: An attacker who has stolen credentials cannot confirm transfer details they did not initiate.
- Coercion: A user being forced to authorize a transfer under duress exhibits behavioral signals that FaceSign’s video AI analysis detects — unusual speech patterns, eye movements suggesting off-screen prompting, or visible distress.
Troubleshooting
Next Steps
Step-Up from Anomaly Detection
Trigger FaceSign when your fraud system flags suspicious activity
Payment Authentication
Use FaceSign as a 3D Secure alternative for high-risk payments
Webhooks
Set up webhook handlers for session events