A reference demo application for the Handpoint Android SDK on PAX SmartPOS terminals.
It demonstrates every SDK operation, all five acquirer configurations, automatic transaction recovery, and the Interac VOID flow — with no business logic in the way.
| Feature | Where |
|---|---|
| SDK initialization and connection | HpSdk.kt |
| All financial operations (Sale, Refund, Pre-Auth, MOTO, Tokenize) | HpSdk.kt |
| Per-acquirer capability flags | AcquirerConfig.kt |
| Config-driven button visibility | MainActivity.kt → applyAcquirerConfig() |
| Interac VOID detection and UI | MainActivity.kt → updateInteracButtons() |
| Transaction recovery (SharedPreferences + exponential backoff) | HpSdk.kt |
| Automatic receipt printing | MainActivity.kt → onTransactionResult() |
- A PAX A920 or compatible SmartPOS terminal enrolled in Handpoint TMS
- Your Shared Secret Key (SSK) and Cloud API Key from the Handpoint Portal
- Android Studio Meerkat or later (Kotlin 2.1+)
- SDK 7.1012.3 or later — resolves from the Handpoint Nexus server (see below)
Create local.properties in the project root (it is already gitignored):
sdk.dir=/path/to/android/sdk
# Your Handpoint merchant credentials
HANDPOINT_SHARED_SECRET=your_shared_secret_key
HANDPOINT_CLOUD_API_KEY=your_cloud_api_keyThe credentials are read into BuildConfig at compile time by app/build.gradle.kts — they are never stored in source files.
Open MainActivity.kt and change the config constant at the top of the class:
// Change to match your merchant account
private val config: AcquirerConfig = AcquirerConfigs.EPIAvailable configs: EPI, PAYSAFE_INTERAC, PAYSAFE_US, EMERCHANTPAY, PAYSTRAX.
See AcquirerConfig.kt for the full capability matrix.
./gradlew :app:assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apkOr open the project in Android Studio and run directly on a connected PAX terminal.
The demo targets SDK 7.1012.3. To use a different stable version, update both the buildConfigField and the implementation dependency in app/build.gradle.kts.
For RC/SNAPSHOT builds, contact Handpoint support for Nexus access credentials, then add them to local.properties:
nexusUsername=PROVIDED_BY_HANDPOINT
nexusPassword=PROVIDED_BY_HANDPOINTCopyright © Handpoint. All rights reserved.