Prerequisites
- A widget application configured in the Developer Portal, with OAuth settings in place. See Configure App Widget.
- The
VERIFY_KYCscope enabled on your application by Fluz. See Required scope. - A registered webhook endpoint. See Verify Customers.
Where verification fits
Verification is a step in the widget’s normal sequence, not a separate integration:1
Your page calls FluzEmbedded.init()
The widget opens in an iframe.
2
The customer signs in or registers
If they do not yet have a Fluz account, the widget creates one.
3
The widget checks verification status
If the customer is already verified, it moves straight on. If not, verification runs here.
4
The customer completes any remaining steps
PIN setup and OAuth scope authorization.
5
The customer completes their transaction
Confirmation, then completion.
What the customer experiences
When an unverified customer reaches the gate, the widget first attempts to verify them silently in the background. Many customers clear the gate at this point without being asked for anything. If that does not resolve, the widget presents a verification form inside the iframe, prefilled with whatever Fluz already holds. The customer reviews it, supplies what is missing, and submits. The widget then shows a waiting state while the result is processed and advances automatically once it resolves. If verification still does not succeed, the widget escalates the customer to document verification — capturing their government-issued ID and a selfie — within the same iframe.All of this happens inside the widget. You do not need to detect which stage a customer is at or trigger the escalation yourself.
Scopes
Widget applications request the scopes they need automatically during the OAuth authorization step, includingVERIFY_KYC. You do not have to add it to the widget’s scope list manually.
You do still need VERIFY_KYC enabled on the application itself by Fluz. If it is not, the widget will fail to load with a missing-permissions error rather than skipping verification.
Knowing the outcome
The widget tells the customer their result directly, but your application should not infer verification state from the widget closing. Rely on webhooks instead. Fluz emitsWIDGET_KYC_INITIATION when a customer begins verification in the widget. This requires the VERIFY_KYC scope.
This event marks the start of verification, not the result. Use
externalReferenceId to map the event to your own customer record, and subscribe to the verification outcome events as well so you know how it resolved. See Webhooks.Combining the widget with the API
The widget and the API share one verification state per customer, so the two approaches compose cleanly:- A customer verified through the API will pass straight through the widget’s gate.
- A customer verified in the widget is verified for your API calls too.
- A customer who has exhausted their attempts in one channel has exhausted them in both.