Verify by Widget
Embed the Fluz widget. Verification is handled as a built-in step — Fluz collects everything from the customer, in Fluz-hosted UI. You collect and store nothing.
Verify by API
Submit verifications yourself. You control the experience end to end and choose which method to use for each customer.
Verifying through the widget
If you have already embedded the Fluz widget, you may not need to build a verification flow at all. The widget includes verification as a gate: when a customer who is not yet verified enters it, the widget walks them through verification and then returns them to whatever they were doing. This is the lowest-effort path, and the only one where identity data never touches your systems. See Verify by Widget.Verifying through the API
If you are integrating directly against the API, you submit verifications yourself. There are two methods available today, and they differ in what you collect from the customer.Pass us the SSN information
You collect the customer’s legal name, address, date of birth, and SSN, then submit it with
verifyUserInformation for an immediate decision.Request an IDV URL
You request a verification link with
requestDocumentVerificationLink. Fluz returns a hosted URL; your customer uploads their government ID and a selfie to Fluz directly.KYC Autofill — coming soon
A third method is planned: submit only a customer identifier and Fluz resolves and verifies their identity information for you. Not yet available — reach out to your Fluz contact for status.
Choosing between the API methods
Most integrations use both, escalating only when the lower-friction attempt does not succeed:1
Try SSN verification first
It is a single synchronous call with an immediate decision, and most customers pass. Use it whenever you already hold — or can reasonably ask for — the customer’s identity details.
2
Fall back to an IDV URL
If SSN verification declines, request a verification link and have the customer upload their ID and a selfie. This is the higher-assurance path and resolves asynchronously.
A customer only needs to pass once, and the two methods share a single verification state. Once a customer reaches
APPROVED — by any method, including through the widget — further attempts are rejected with an ERROR status.Recipe: Request a user KYC verification
Recipe: Request a user KYC verification
1
Prepare the verifyUserInformation mutation
Pass the user information to be verified.
2
Prepare the GraphQL client
Authenticate with a user access token generated for the customer being verified.
3
Process the request
The decision comes back in the same response.
Response
Recipe: Request a document verification link
Recipe: Request a document verification link
1
Prepare the requestDocumentVerificationLink mutation
The customer is identified by the access token, so the input only carries consent and prefill flags.
2
Prepare the GraphQL client
Authenticate with a user access token generated for the customer being verified.
3
Process the request
Deliver the returned
verificationUrl to your customer, and store the verificationId to reconcile the webhook that carries the outcome.Response
Required scope
Every verification method requires theVERIFY_KYC scope, which allows your application to request identity verification on a customer’s behalf.
There are two layers of permission, and you need both:
The scope must also be included when you generate the user access token you use for the call. See Application Scopes for the full catalog.
Set up a webhook
Register a webhook endpoint before you send your first verification. Verification is not always resolved inside the API response — document verification in particular completes whenever the customer chooses to finish it, which may be minutes or days after you request the link. Widget verifications complete outside your application entirely. Webhooks are how you learn the outcome. See Webhooks for endpoint requirements, signature verification, retry behavior, and payload formats. In short:- Register an HTTPS endpoint on your application in the Developer Portal.
- Subscribe to the identity verification events.
- Verify the
X-HMAC-Signatureheader against the raw request body on every delivery. - Deduplicate on
X-Event-IDand respond2xxwithin 30 seconds.
VERIFY_KYC to receive verification events.
Verification statuses
Every method resolves to one of the following statuses.DUPLICATE is determined by SSN only, not by address — customers legitimately have multiple addresses over time. Fluz does not disclose which other customer matched.ERROR status is returned when the customer is already verified, when the verification attempt limit has been reached, or when the document verification limit has been reached.
Attempt limits
Verification attempts are capped to prevent customers from guessing their way to an approval.- A customer may attempt SSN verification up to 3 times per user ID through the API.
- Document verification requests are capped separately.
- KYC Autofill runs once per customer, whether it approves or declines.
- Once a customer is
APPROVED, no further attempts are accepted.
Address formatting
Every method that accepts an address expects the customer’s residential address in the structured fields, with a consistent city, state, and postal code. A malformed or mismatched address is a common cause of an otherwise valid customer beingDECLINED.
International addresses are accepted. See Address Formatting Requirements for the full rules.