Axium SmartPOS
Introduction
The Axium SmartPOS is NMI's Android-based SmartPOS platform. Integrate it with your existing Android application using the NMI Payment Device SDK for Android — the same SDK you already use for other supported PIN pads — and your integration runs on Axium hardware with minimal rework.
Transaction logic lives on the device itself, so integrations keep working when connectivity drops and offline transactions upload automatically when the network returns.
Download the Android SDK
Latest version:
1.📦 Supported Devices
The Payment Device SDK for Android supports the following Axium SmartPOS devices:
- Axium RX5000 — countertop, HDMI + split power/USB cable
- Axium EX6000, EX8000 — handhelds, USB-C charging
- Axium DX4000, DX8000 — handhelds, USB-C charging
2.⚡Unbox & Power On
Each device ships ready to accept payments with all required firmware and applications pre-installed. Power on:
- RX5000 — connect HDMI, plug power pin into the wall.
- EX6000 / EX8000 — press the orange power button on the right.
- DX4000 / DX8000 — press the power button on the left.
See Unboxing your Axium device for charging, restart, and physical setup details for each model.
3.🔗 Connect Your Device
When the Axium is first powered on, the Device Setup app launches automatically and walks the merchant through three steps:
- Wi-Fi setup — required and cannot be skipped (the Axium needs an internet connection to process transactions).
- Bluetooth setup — pair the Axium with the mobile device hosting your application. Matching pairing codes appear on both screens; tap Pair on each.
- Register & install — automatic; no user input required.
Once setup completes, the Axium is ready and the SDK can discover it via getAvailablePinPads(). The device's Bluetooth name is set automatically to AXIUM-{model}-{serial}, e.g. AXIUM-DX6000-235GKD420151.
Need to reconfigure later? You can change Wi-Fi or re-pair Bluetooth at any time from the standard Android Settings → Network and Internet and Settings → Connected Devices flows. If prompted for a password to access network settings, enter
350000.
See Device setup for the full configuration walkthrough.
4.🛠️ Install the SDK
Download the Payment Device SDK for Android ZIP archive. It contains:
ChipDnaMobileJavaDemo/ChipDnaMobileKotlinDemo— example clients with source codedoc/— generated API documentationlibs/lite/andlibs/full/— two SDK flavours
The Lite flavour is recommended for SmartPOS integrations. It targets Android 10+ (API 29) and does not include Tap to Pay. The Full flavour adds Tap to Pay support but requires Android 12+ and additional Cloud Commerce dependencies. Do not include both flavours in the same project.
See Platform-specific requirements for Gradle setup and dependencies.
5.⚙️ Configure Your Account
Create an API Key in Merchant Portal → Settings → Security Keys (API-source only). The API Key is the only credential the Axium SmartPOS integration needs — pass it to the SDK as ParameterKeys.ApiKey during setProperties.
6.🚀 Initialize the SDK
Initialize with the SmartPOS flag set to TRUE:
ParameterKeys.Password— database encryption passwordParameterKeys.IsSmartPosIntegration— set toTRUE
When
IsSmartPosIntegrationis enabled,getAvailablePinPads()returns Axium devices only. Other supported PIN pads will not appear in the response.
Then call setProperties with ApiKey, PinPadName, PinPadConnectionType, and Environment. See Configuration for the full list and behavioural differences from non-SmartPOS integrations.
7.💳 Run Transactions
Required parameters when calling startTransaction():
AmountUserReferencePaymentMethod— must beParameterValues.CardTransactionTypeCurrency— retrievable viagetAvailableCurrencies()
A number of parameters from non-SmartPOS integrations will return an error if used (e.g. DelayOnlineProcessing, on-device tipping, MerchantDefinedField, TransactionPOI = TapToMobile). Several new parameters are available, including TransactionAuthPreference, OfflineTransactionUploadMode, MagstripeDebit, MagstripeSignature, PartialApproval, and TipAmount — see Transaction flow.
The following methods require an active connection to the Axium device:
confirmTransactionvoidTransactionlinkedRefundTransactiongetTransactionInformationgetStatus(for the full parameter set)
8.📡 Handle Events & Errors
A new TransactionUpdate value is emitted when the SDK loses connection to the Axium and is attempting to reconnect:
AttemptingToReconnect
New error codes added for SmartPOS:
TransactionAuthPreferenceInvalidOfflineTransactionUploadModeInvalidTransactionInformationUnavailable
See Configuration and utility events for the full event and error reference.
9.📥 Offline Transaction Queue
Transactions taken while offline are queued on the device and uploaded when connectivity returns. Uploads can run automatically (default) or be triggered manually via processOfflineRequest() by setting OfflineTransactionUploadMode to Manual on the transaction.
Only transactions matching the currently configured environment can be processed — if your integration is configured against Staging, only Staging-credentialed offline transactions upload. See Offline transactions.
10.🔄 OTA Application Updates
Axium devices receive over-the-air application updates via the NMI Device Agent application installed on the device. Updates can be Required (must complete before further transactions) or Deferrable (can be postponed until expiry).
Trigger an update from the Axium device by tapping the update notification, or programmatically via the existing FirmwareUpdate callback in the SDK — the API is unchanged from existing Miura integrations. See OTA updates.
11.🔌 Device Disconnection During a Transaction
Because transaction processing runs on the Axium itself, a Bluetooth or TCP/IP disconnection during a transaction does not automatically terminate it. The SDK attempts to reconnect until either the connection is restored or your application calls terminateTransaction().
If you terminate during a disconnection, you'll get TransactionResult = Unknown, TransactionState = Unknown, and the MerchantTerminatedTransaction + TransactionInformationUnavailable errors. Once the device reconnects, call getTransactionInformation() to see the final outcome. See Device disconnection.
12.📋 Production Checklist
- Confirm
IsSmartPosIntegration = TRUEis set at initialisation. - Choose the Lite flavour unless you specifically need Tap to Pay.
- Verify your environment matches the credentials of any queued offline transactions before going live.
- Confirm OTA updates are reaching devices via the NMI Device Agent application.
- Open firewall access for CardEase XML, CardEase TMS, and the NMI Device Agent update host (port 443).
- Review the Appendix 1 — Supported API methods table to confirm any methods your integration relies on are supported.
✅ You're now ready to integrate the NMI Payment Device SDK with the Ingenico Axium
Download the Android SDK
Latest version:
Navigate through the pages in this section for the full integration reference, including code samples and the SmartPOS API delta from existing PIN pad integrations.
