Transaction flow
This page documents the transaction parameter deltas for SmartPOS / Axium integrations. For the underlying startTransaction() flow, event handling, and result interpretation that applies to all integrations, see the shared Transaction Flow page.
SmartPOS supports a subset of the features available to non-SmartPOS integrations. Several parameters that are valid elsewhere will cause errors when included here, and several new parameters are specific to SmartPOS.
Required Parameters
startTransaction() requires the following parameters for a SmartPOS transaction:
| Parameter | Notes |
|---|---|
ParameterKeys.Amount | Transaction amount in minor units. |
ParameterKeys.UserReference | Caller-supplied reference for the transaction. |
ParameterKeys.PaymentMethod | Must be ParameterValues.Card. |
ParameterKeys.TransactionType | Sale, refund, etc. |
ParameterKeys.Currency | Retrievable via getAvailableCurrencies() — SmartPOS supports GBP and USD. |
Parameters That Will Cause Errors
SmartPOS currently supports a limited subset of features compared to traditional POS devices. Passing any of the following parameters into startTransaction() will return an error:
| Parameter | Reason |
|---|---|
ParameterKeys.DelayOnlineProcessing (with ParameterValues.TRUE) | Use TransactionAuthPreference instead — see below. |
ParameterKeys.TippingType (OnDeviceTipping, BothTipping) | On-device tipping not supported — pass TipAmount instead. |
ParameterKeys.OnDeviceTippingPrompt | On-device tipping not supported. |
ParameterKeys.DynamicTippingAmounts | On-device tipping not supported. |
ParameterKeys.DynamicTippingPercentages | On-device tipping not supported. |
ParameterKeys.DynamicTippingHeader | On-device tipping not supported. |
ParameterKeys.PurchaseOrderNumber | Not supported on SmartPOS. |
ParameterKeys.TaxAmount | Not supported on SmartPOS. |
ParameterKeys.TransactionPOI (with ParameterValues.TapToMobile) | Tap to Mobile is not available on Axium devices. |
ParameterKeys.FeatureTokens | Not supported on SmartPOS. |
ParameterKeys.CredentialOnFileFirstStore | Credential-on-file not supported on SmartPOS. |
ParameterKeys.CredentialOnFileReason | Credential-on-file not supported on SmartPOS. |
New Parameters Available for SmartPOS
The following parameters are available only on SmartPOS transactions. If not passed, the defaults documented below apply.
ParameterKeys.TransactionAuthPreference
Determines how the transaction is initially authorised.
| Value | Behaviour |
|---|---|
ParameterValues.Online (default) | Attempts online authorisation. Declines if online fails. |
ParameterValues.DeferredForced | Processes the transaction offline immediately, skipping online authorisation. |
ParameterValues.OnlinePreferred | Attempts online authorisation. Falls back to offline processing if online fails. |
ParameterKeys.OfflineTransactionUploadMode
Determines how queued offline transactions are uploaded once connectivity returns.
| Value | Behaviour |
|---|---|
ParameterValues.Automatic (default) | A background worker uploads queued offline transactions automatically when the network is available. |
ParameterValues.Manual | Requires an explicit call to processOfflineRequest() with the transaction's UserReference to trigger upload. |
See Offline transactions for the full queue behaviour.
ParameterKeys.MagstripeDebit
Enables debit processing for magstripe SmartPOS transactions.
| Value | Behaviour |
|---|---|
ParameterValues.True (default) | Debit enabled. |
ParameterValues.False | Debit disabled. |
ParameterKeys.MagstripeSignature
Enables signature capture for magstripe SmartPOS transactions.
| Value | Behaviour |
|---|---|
ParameterValues.True (default) | Signature required. |
ParameterValues.False | Signature not required. |
ParameterKeys.PartialApproval
Enables partial-approval handling on SmartPOS transactions.
| Value | Behaviour |
|---|---|
ParameterValues.True | Partial approval enabled — use continuePartialApproval() to complete the flow. |
ParameterValues.False (default) | Partial approval disabled. |
ParameterKeys.TipAmount
Because on-device tipping is not supported on SmartPOS, the tip amount must be passed into the transaction by the integrating application. The value uses the same minor-unit format as ParameterKeys.Amount.
ParameterKeys.SignatureVerification
Controls how signature verification is handled when a transaction requires one. Available from SDK 5.3.1.
| Value | Behaviour |
|---|---|
ParameterValues.SignatureVerificationNone (default) | No signature verification is performed. |
ParameterValues.SignatureVerificationExternal | The Axium captures the signature and pauses the transaction. The integrating application receives the captured signature via the ISignatureVerificationListener.onSignatureVerification(Parameters) callback and must respond by calling ChipDnaMobile.continueSignatureVerification(Parameters) with ParameterKeys.Result set to ParameterValues.TRUE (approved) or ParameterValues.FALSE (declined). |
External signature verification flow
When SignatureVerification = External:
- The Axium captures the signature on-device and transitions the transaction state to
AWAITING_SIGNATURE_VERIFICATION. - The SDK invokes
ISignatureVerificationListener.onSignatureVerification(Parameters). The captured signature data is available in the callback's parameters underParameterKeys.SignatureData. - Your application reviews the signature (typically displays it to the cardholder or operator) and decides whether to approve or decline.
- Your application calls
ChipDnaMobile.continueSignatureVerification(parameters)withParameterKeys.Resultset toParameterValues.TRUE(approved) orParameterValues.FALSE(declined). The transaction then resumes on the Axium with the verification result.
override fun onSignatureVerification(params: Parameters) {
val signatureData = params.getValue(ParameterKeys.SignatureData)
// Show signature to cardholder / operator for review …
val response = Parameters()
response.add(ParameterKeys.Result, ParameterValues.TRUE) // or FALSE
ChipDnaMobile.getInstance().continueSignatureVerification(response)
}Methods Requiring an Active Device Connection
The following SDK methods require an active connection to the Axium device to succeed, even though they're synchronous-looking calls. With a standard PIN pad integration these methods can return cached data; with SmartPOS the device must be reachable because the transaction state lives on the Axium.
confirmTransaction()voidTransaction()linkedRefundTransaction()getTransactionInformation()getStatus()— for the full parameter set (a limited subset is available without a connection)
If the connection drops while one of these calls is in flight, see Device disconnection during a transaction for the behaviour.
