Configure Axium SmartPOS
Use the SmartPOS SDK mode and platform-specific parameters instead of treating Axium as a generic reader.
Select one Android flavour
Lite uses ChipDnaMobile-lite.jar and Android 10/API29 minimum; Full uses ChipDnaMobile.jar and Android 12/API31. Lite is recommended for SmartPOS when phone Tap to Pay is unnecessary. Do not include both. Use the release-matched SQLCipher dependency and exclude SDK binaries from additional obfuscation.
Initialize in SmartPOS mode
Provide a non-empty database Password and IsSmartPosIntegration TRUE. Only Axium devices are discoverable in that mode; switching to standard readers requires reinitialization. val params = Parameters() params.add(ParameterKeys.Password, databasePassword) params.add(ParameterKeys.IsSmartPosIntegration, ParameterValues.TRUE) val result = ChipDnaMobile.getInstance().initialize(context, params)
Configure the device
Set ApiKey from the merchant API-source key, selected PinPadName/PinPadConnectionType, and the environment. ApplicationIdentifier is accepted but ignored for Axium. BluetoothDeviceId can select an exact device instead of its display name; deserializeAvailablePinPadsWithId supplies those identifiers.
Build the transaction request
Provide Amount in minor units, UserReference, PaymentMethod Card, TransactionType and Currency. The SmartPOS source lists GBP and USD; query getAvailableCurrencies rather than assuming another integration currency is available. Use TipAmount for enabled tipping.
Avoid unsupported parameters
Do not send DelayOnlineProcessing TRUE; use TransactionAuthPreference. On-device tipping prompts, purchase-order/tax parameters, TapToMobile transaction selection, FeatureTokens and credential-on-file parameters are rejected. One-way card tokens are unsupported. These are SmartPOS restrictions, not a restriction on every Betterpay integration.