Biometric payments on Android POS
WinkPay is an embedded Android SDK that adds face + palm biometric checkout to point-of-sale apps. It wraps the Wink Cloud identity + payment APIs and layers POS-specific UX — customer-display routing, EMV integration, dual-screen support, MFA + consent — so a partner POS shipping the SDK gets a complete tap-pay-look flow with one WinkPayEmbedded.init(…) call.
What is WinkPay
WinkPay isn't a separate Wink — it's a packaging of the Wink biometric identity stack tailored for Android POS hardware. Underneath, every SDK call resolves to one or more Wink Core API calls. On top, the SDK adds:
- Native customer-display UI — face / palm capture views, card-picker, payment confirmation, MFA + consent dialogs.
- Dual-display routing — auto-targets the customer screen on terminals with one.
- Felix EMV integration — chip-and-PIN tap flow optionally combined with biometric check-in.
- Capture tuning — per-device-class face-ratio defaults, palm overrides, rotation knobs for handhelds with offset sensors.
- POS-only ergonomics — age-restriction merchant override, external-token mode for processors that own the charge, lite registration for low-friction onboarding.
Where to next
Pick the closest match to what you're building:
How a checkout flows
End-to-end, a face-checkout transaction on a WinkPay-enabled terminal looks like this:
- POS hands off — your app calls
winkPay.startPayment(request, callback)with the order amount + tender id, then launches the customer-display Activity viacreateNativeIntent(...). - SDK runs capture — customer-display shows the face-capture view, runs liveness, falls back to palm if face fails (1.4.9+). All on-device.
- Wink Cloud identifies — the SDK posts the captured frame to Wink's auth APIs; on success returns a
winkTag+ a list of the customer's saved cards. - Card picker + MFA — if multiple cards, the customer picks one on the display; MFA + consent dialogs fire if the merchant config requires them.
- Charge — either WinkPay charges via its payment rails (default) or returns external tokens for the host to process (
returnExternalTokens = true). - Result callback —
onSuccessfires on the main thread with the transaction id + amount. Your POS prints the receipt.
The SDK Quickstart shows the full 30-line Kotlin integration that wires all of this.
Supported terminals
The SDK targets arm64-v8a Android, minSdk = 24. Reference deployments on:
- Sunmi T3 Pro — dual-display terminal; WinkPay drives the customer screen with face / palm capture while the merchant retains the operator UI.
- PAX A360 — single-display countertop terminal; face-only checkout with EMV combo via Felix.
- Landi — handheld with palm support;
rotationAngle = 90needed for the palm sensor orientation. - Elo — kiosk-class terminal; face capture at customer-stands-back distance (
minFaceRatio ≈ 0.30).
Other arm64-v8a Android terminals work out of the box; see Prerequisites for the constraints.
Latest release
Current SDK: 1.5.0 — public API stabilised, capture tuning knobs, per-modality (face/palm) overrides, lite palm preview path. Direct link: Download & install. Per-version notes live in the SDK Changelog.
Migrating from docs.wink.cloud/docs/winkpay-pos-integration? The reference content has moved to /winkpay/sdk/. The legacy page will redirect here once content checks are complete; the SDK behaviour and code samples on both pages match 1.5.0.