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:

  1. Wi-Fi setup — required and cannot be skipped (the Axium needs an internet connection to process transactions).
  2. Bluetooth setup — pair the Axium with the mobile device hosting your application. Matching pairing codes appear on both screens; tap Pair on each.
  3. 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 code
  • doc/ — generated API documentation
  • libs/lite/ and libs/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 password
  • ParameterKeys.IsSmartPosIntegration — set to TRUE
📘

When IsSmartPosIntegration is 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():

  • Amount
  • UserReference
  • PaymentMethod — must be ParameterValues.Card
  • TransactionType
  • Currency — retrievable via getAvailableCurrencies()

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:

  • confirmTransaction
  • voidTransaction
  • linkedRefundTransaction
  • getTransactionInformation
  • getStatus (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:

  • TransactionAuthPreferenceInvalid
  • OfflineTransactionUploadModeInvalid
  • TransactionInformationUnavailable

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 = TRUE is 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.