Install. Configure. Ship.
The Wallet SDK gives your brand app full NFC credential delivery — wallet keys, digital ID verification, loyalty enrollment, and payment capture — through a modular iOS and Android library.
Same protocols as the native wallet flow. Full Puck feature parity.
Four modules. One integration. Full feature parity.
Integrate the capabilities your app needs — from a lightweight key-only integration to a full branded check-in experience.
Wallet Key Provisioning
Guest taps Puck → SDK handles NFC → room key provisioned to native wallet. Provisioning events reported to your analytics.
Ship in 1–2 weeksIdentity Verification
mDL/EUDI credential read, cryptographic verification, verified identity data returned to your app for reservation matching.
Digital ID acceptanceAnalytics Events
Every interaction generates structured events — tap initiated, key provisioned, identity verified. Events flow to your analytics pipeline.
Connect to your BI stackPre-Built UI
Ready-made check-in screen, tap animation, identity prompt, loyalty card. Customizable or replaceable with your own UI.
Optional — acceleratorMinimum Integration
KeyShareCore + KeyShareWallet — tap-to-collect wallet key delivery. A few days of developer work.
Full Integration
All four modules. Complete branded check-in — identity, payment, key, loyalty — with full analytics. 4–8 weeks.
From install to first key delivery.
Install
Add via CocoaPods, SPM (iOS) or Maven Central (Android).
MinutesConfigure
Initialize the SDK with your API key. Set up NFC entitlements.
HoursBuild
Integrate the modules you need. Use pre-built UI or build your own screens.
Days to WeeksCertify
Submit for KeyShare's certification review. Automated test suite validates NFC protocol compliance.
~1 WeekShip
Push to App Store / Google Play. Ongoing SDK updates and protocol maintenance included.
Your Release CycleSee the SDK in code.
Clean API. Familiar patterns. Full documentation in the developer sandbox.
import KeyShareCore
import KeyShareWallet
// Initialize
let keyshare = KeyShare(apiKey: "ks_live_your_api_key")
// Start an NFC session when the guest taps "Collect Key"
keyshare.startSession { session in
session.provisionKey { result in
switch result {
case .success(let key):
// Key provisioned to Apple Wallet
self.showSuccess(keyDetails: key)
case .failure(let error):
// Handle: .nfcTimeout, .provisioningFailed, .walletDeclined
self.showRetry(error: error)
}
}
} import io.keyshare.core.KeyShare
import io.keyshare.wallet.KeyShareWallet
// Initialize
val keyshare = KeyShare(apiKey = "ks_live_your_api_key")
// Start an NFC session
keyshare.startSession { session ->
session.provisionKey { result ->
result.onSuccess { key ->
// Key provisioned to Google Wallet
showSuccess(keyDetails = key)
}.onFailure { error ->
// Handle: NfcTimeout, ProvisioningFailed, WalletDeclined
showRetry(error = error)
}
}
} The pattern is consistent: initialize → start session → call the method → handle the result. Identity, loyalty, and analytics follow the same callback structure.
Where the SDK fits in the stack.
What the SDK handles
- NFC session management (activate, communicate, terminate)
- Protocol negotiation with the Puck (Apple VAS, Google Smart Tap, ISO 18013-5)
- Credential receipt and wallet provisioning
- Event generation and callback dispatch
- Session encryption and API authentication
What the SDK does NOT handle
- Your app's UI (unless you use the optional pre-built components)
- Reservation lookup or PMS integration (that's GEP's job)
- Lock vendor communication (Puck and GEP handle that)
- Guest data storage — data transits through, nothing persists
NFC-via-Puck architecture: Your app talks to the Puck over NFC. The Puck and GEP handle lock communication downstream. No BLE session management, no lock vendor integrations to maintain. The SDK's surface area is NFC credential exchange — a single, well-defined protocol boundary.
Platform support and requirements.
iOS
Android
Module Reference
Security posture.
The SDK is a conduit, not a store. Data flows through during active interactions and is immediately dispatched.
API Authentication
Dedicated API key scoped to your brand's properties. SDK authenticates with GEP Cloud on initialization.
Session Encryption
HTTPS/TLS 1.3 for SDK↔GEP. NFC interactions use ECDH key exchange, AES-256-GCM session encryption.
Zero Data Residency
No guest data stored in the SDK. Credentials transit through and are provisioned to the native wallet. Nothing persists between sessions.
Payment Isolation
Payment tokens flow through the Puck directly (Puck → GEP → payment gateway). The SDK is never in the payment data path.
OWASP MSTG
Developed following OWASP Mobile Security Testing Guide standards. Third-party security audit reports available under NDA.
Minimal Runtime Impact
No background processes. <100ms initialization. NFC active only during guest-initiated tap interactions. Negligible battery impact.
Long-term support, built in.
Semantic Versioning
Support Policy
One-time certification. Automated ongoing validation.
Submit
Submit your integration code and screenshots for review.
Day 1Technical Review
NFC implementation, error handling, and UI flow reviewed.
5 Business DaysSecurity Scan
Automated security scan of the SDK integration surface.
2 Business DaysCertified
Integration approved. Certification badge issued. Non-SDK app updates don't require recertification.
Upon PassingSandbox Environment
Full GEP sandbox with test properties
Puck Simulator
NFC testing without physical hardware
Sample Apps
iOS & Android complete integration samples
Frequently asked questions.
Start building.
Request SDK access to get your API key, sandbox environment, Puck simulator, sample apps, and integration guide. A dedicated integration engineer is assigned to your first deployment.