September 2026
Selfie Liveness Fails Spike 3.4x When Flash Fires Before Countdown
Croatian KYC data shows liveness failures rising 3.4x when flash fires before the countdown ends, revealing a fixable sequencing flaw in mobile onboarding
KYC vendors serving the Croatian market logged a 3.4x increase in liveness-check failures on mobile onboarding flows during Q1 2026 when the camera flash fired before the on-screen countdown completed, compared with sessions where the countdown finished first. The figure comes from a pooled sample of 41,800 Croatian-facing verification attempts across four operators and two identity-verification providers, and it holds after controlling for device tier, ambient light, and connection speed. The effect is not a general "bad photo" problem — it is specifically a sequencing problem, and it is fixable in the client SDK.
Why the flash-timing variable matters more than it should
Liveness detection in iGaming onboarding usually runs a short active challenge: look at the camera, turn your head, blink, read a number, or hold still while a passive model scores the frame. The camera flash is not part of the security model. It exists to help the capture in low light, and on Android it is often triggered by the same "take photo" intent that fires the liveness sequence. On iOS the flash is more commonly tied to a hardware capture call, which is why the sequencing bug shows up asymmetrically across platforms.
The 3.4x figure is a ratio of failure rates, not a count. In the pooled dataset, sessions where flash fired before the countdown completed failed liveness at 18.6% (1,412 failures out of 7,590 attempts). Sessions where the countdown completed before any flash fired failed at 5.5% (1,883 out of 34,210). The gap is 13.1 percentage points. That is large enough that it cannot be explained by user skill or device quality alone, and it is large enough to move a Croatian operator's first-time deposit conversion by a measurable margin.
The mechanism is worth spelling out because it changes what you fix. A liveness model trained on well-lit, front-facing, stable frames sees a flash-preceded frame as an outlier: the face is overexposed in the center, the background is dark, and the pupil response is absent because the flash is too fast to trigger a visible constriction in the captured frame. The model does not fail because the user is not live. It fails because the frame does not look like the distribution it was trained on. That is a data problem, not a fraud problem, and treating it as fraud is expensive.
The Croatian context
Croatia's online gambling market has been regulated since 2015 under the Zakon o igrama na sreću, and remote operator licensing runs through the Ministry of Finance. Since the 2023 amendments tightened advertising and player-protection rules, operators have leaned harder on digital onboarding to keep acquisition costs down. The practical result is that a larger share of Croatian player verification now happens on a phone, often on a mid-range Android device, often indoors, often in the evening. That is exactly the profile where flash-before-countdown is most likely to fire.
Croatian operators also face a specific constraint: the national ID card (osobna iskaznica) and passport are the primary documents, and the e-ID system (e-Osobna) is not universally used for commercial KYC. That means most liveness checks are camera-based, not chip-based, and the camera path is where the 3.4x effect lives.
What the failure looks like in the session log
Pull a sample of failed liveness sessions and the pattern is consistent. The client fires the capture intent, the flash LED turns on, the countdown timer starts or resumes, and the user reacts to the flash — squinting, turning away, or moving the phone — before the challenge completes. The model receives a frame that is either motion-blurred, overexposed, or both.
Three sub-patterns account for most of the failures in the Croatian sample:
- Flash-then-blink. The user blinks in response to the flash, which the model reads as an incomplete or ambiguous blink challenge. This is the largest single category at roughly 41% of flash-preceded failures.
- Flash-then-turn. The user turns the head toward or away from the light source, which the model reads as a spoofing attempt or a failed pose match. About 29% of failures.
- Flash-then-freeze. The user holds still but the overexposure clips facial features the model needs. About 22% of failures.
The remaining 8% are mixed or unclassified. The important point is that none of these are fraud signals. They are capture artifacts, and they inflate the false-rejection rate, which is the number that actually costs money.
Why false rejections are the expensive failure
A false rejection costs more than a false acceptance in most iGaming onboarding funnels, because the user does not know they were rejected for a technical reason. They see "verification failed" and either retry (which may fail again if the bug is deterministic) or abandon. In the Croatian sample, 62% of users who hit a flash-preceded failure abandoned the session entirely rather than retrying. At a typical first-time depositor value, that is a direct revenue leak, and it is invisible in aggregate KYC dashboards that only track pass/fail rates.
How to test for it without a full vendor audit
You do not need a vendor's internal data to see whether this affects your flow. You need three things: a device matrix, a controlled light environment, and a way to tag flash timing in your analytics.
Step 1: Instrument the sequence
Add a client-side event that fires when the flash LED is activated and another when the countdown completes. If your SDK does not expose this, you can approximate it by logging the timestamp of the capture intent and the timestamp of the first frame submitted to the liveness model. The delta is your flash-before-countdown window. Anything under 400ms is suspect; under 150ms is almost certainly a sequencing bug.
Step 2: Run a controlled A/B
Take two groups of test devices — one mid-range Android (the Croatian market skews toward devices in the €150–€250 range), one iPhone — and run the same liveness challenge in three lighting conditions: bright indoor, dim indoor, and near-dark. In half the runs, force the flash to fire immediately; in the other half, delay it until after the countdown. Compare failure rates. If you see a ratio anywhere near 3x, you have the bug.
Step 3: Check the vendor's model version
Liveness models are versioned, and a model update can change how flash-preceded frames are scored. Ask your vendor which model version was active during the period you are measuring, and whether the training set included flash-preceded frames. Many do not, because flash-preceded frames are rare in curated datasets and common in production.
What actually fixes it
The fix is almost always client-side, and it is cheap. The goal is to make the flash a deliberate, sequenced event rather than a side effect of the capture call.
Delay the flash until after the challenge
The simplest fix is to suppress the flash during the liveness challenge and only fire it for the final still capture, if one is needed. This removes the flash from the model's input entirely and eliminates the 3.4x effect at the source. The tradeoff is that low-light captures may be darker, but modern liveness models handle low light better than they handle overexposure.
If the flash must fire, sequence it after the countdown
Some vendors require a flash-assisted capture for document matching. In that case, gate the flash behind the countdown completion event, not the capture intent. This is a one-line change in most SDKs, but it requires the vendor to expose the countdown event, which not all do.
Add a pre-capture light check
A cheap ambient-light sensor read before the challenge starts can tell the client whether the flash is needed at all. If ambient light is above a threshold (say, 50 lux), skip the flash. This reduces flash-preceded frames without changing the security model.
Retrain or fine-tune the model
If you control the model, add flash-preceded frames to the training set with correct labels. This is the most expensive fix and the slowest, but it is the only one that helps if you cannot change the client. It also risks teaching the model that overexposed frames are acceptable, which can weaken spoof detection. Use it as a last resort.
The Croatian regulatory angle
Croatia's player-protection framework does not specifically address liveness capture quality, but it does require operators to verify identity before allowing deposits and to maintain audit trails. A false rejection is not a regulatory failure — it is a commercial one. However, if an operator's KYC process systematically rejects a demographic group (for example, users on older Android devices, who are more likely to trigger the flash bug), that can become a fairness issue under consumer-protection rules. The 3.4x effect is not evenly distributed: it hits mid-range Android users hardest, and that skew is worth monitoring.
There is also a practical reporting point. If your vendor reports a 5.5% baseline liveness failure rate but your production rate is 18.6%, the gap is not user behavior. It is your integration. Croatian operators who reconcile vendor-reported rates against their own funnel data will find this faster than those who trust the vendor dashboard.
What to watch next
The 3.4x figure is a Q1 2026 snapshot, and it will move as vendors ship fixes and as device mix changes. The open question is whether the effect is stable across vendors or specific to certain SDK versions. Early indications from the Croatian sample suggest it is worse on Android 13 and 14 than on Android 12, which points to a platform-level change in how the camera intent handles the flash. If that is confirmed, the fix may need to come from the OS vendor, not the KYC vendor, and operators will be stuck with workarounds in the meantime.
The other question is whether the industry will start reporting liveness failure rates by flash timing at all. Right now most operators do not instrument it, which means the 3.4x effect is invisible until someone looks for it. The operators who look first will have a conversion advantage that has nothing to do with bonuses or odds — and everything to do with whether a user's phone flash fired half a second too early.