---
updatedAt: 2026-08-19T20:50:31.000Z
agentTools:
  projectIndex: https://docs.nmi.com/llms.txt
---

# Payment Events

# TransactionUpdate Callback

The Payment Device SDK fires `transactionUpdate` events as the customer progresses through the transaction. Each transaction update event describes the action that triggered the event, including EMV commands and data communication. The POS application can react to each event as needed, such as to update a display.

Methods to add or remove callback delegate in `ChipDnaMobile`:

```Text Android
void addTransactionUpdateListener(  
TmsUpdateListener listener  
)

void removeTransactionUpdateListener(  
TmsUpdateListener listener  
)
```

```Text iOS
void addTransactionUpdateTarget:(id)self  
 action :(SEL)@selector (onTransactionUpdate:)

void removeTransactionUpdateTarget:(id)self
```

# CardDetails Callback

When `startTransaction()` has been successfully called, the Payment Device SDK fires `cardDetails` events when the details are available. When `getCardDetails()` has been successfully called, the SDK fires a `cardDetails` event when the process is finished (instead of a `transactionFinished` event).

Methods to add or remove callback delegate in `ChipDnaMobile`:

```Text Android
void addCardDetailsListener(  
CardDetailsListener listener  
)  
void removeCardDetailsListener(  
CardDetailsListener listener  
)
```

```Text iOS
void addCardDetailsTarget:(id)self  
   action :(SEL)@selector (onCardDetails:)

void removeCardDetailsTarget:(id)self
```

# TransactionFinished Callback

After `startTransaction()` has been successfully called, the Payment Device SDK fires a `transactionFinished` callback when the transaction is finished. If the transaction is finished after the `cardDetails` callback is triggered, the `transcationFinished` parameters contains a parameter which will include the transaction result `Approved` or `Declined` and a receipt can be issued for the completed transaction. If the transaction is finished before the `cardDetails` callback, the parameters contain only the `Errors` parameter indicating the transaction has been terminated.

Methods to add or remove callback delegate in `ChipDnaMobile`:

```Text Android
void addTransactionFinishedListener(  
TransactionFinishedListener listener  
)

void removeTransactionFinishedListener(  
TransactionFinishedListener listener  
)
```

```Text iOS
void addTransactionFinishedTarget:(id)self  
action :(SEL)@selector (onTransactionFinished:)

void removeTransactionFinishedTarget:(id)self
```

<HTMLBlock>{`
<div class="alert alert-red custom-callout">
  <img class="callout-icon" src="https://files.readme.io/32bb99605a69f0276162d762522d60778f2bed89964c330009d0294853f331f3-Non-Compete.png">
  <div class="callout-text">Transactions may be returned with the state Uncommitted, in which case it is the responsibility of the integrating application to call \`confirmTransaction()\`. Approved transactions must be confirmed for settlement in order to obtain the funds. If the funds for an approved transaction are not settled for reasons such as goods issue failure then the transaction should be voided.</div>
</div>
`}</HTMLBlock>

# ProcessReceiptFinished Callback

When `processReceipt()` has been successfully called, the Payment Device SDK fires a `onProcessedReceiptFinished` callback with the result of the request.

Methods to add or remove callback delegate in `ChipDnaMobile`:

```Text Android
void addProcessReceiptFinishedListener(  
ProcessReceiptFinishedListener listener  
)

void removeProcessReceiptFinishedListener(  
ProcessReceiptFinishedListener listener  
)
```

```Text iOS
void addProcessReceiptCompleteTarget:(id)self  
 		action :(SEL)@selector (onProcessReceiptComplete:)

void removeProcessReceiptCompleteTarget:(id)self
```

# SignatureVerification Callback

The Payment Device SDK fires a `signatureVerification` event, during a transaction, when the merchant needs to verify the cardholder signature. Call `continueSignatureVerification()` to set the signature verification result and continue the transaction. If digital signature is captured, the data should be sent to the SDK in a parameter in the `continueSignatureVerification()` method.

Methods to add or remove callback delegate in `ChipDnaMobile`:

```Text Android
void addSignatureVerificationListener(  
SignatureVerificationListener listener  
)

void removeSignatureVerificationListener(  
SignatureVerificationListener listener  
)
```

```Text iOS
void addSignatureVerificationTarget:(id)self  
 	action :(SEL)@selector (onSignatureVerification:)
void removeSignatureVerificationTarget:(id)self
```

# SignatureCapture Callback

The Payment Device SDK fires a `SignatureCapture` event during a transaction when a digital signature is required. Call `continueSignatureCapture()` to pass in digital signature data and continue the transaction.

Methods to add or removed callback delegate in `ChipDnaMobile`:

```Text Android
void addSignatureCaptureListener(  
	SignatureCaptureListener listener  
)  
Void removeSignatureCaptureListener(  
	SignatureCaptureListener listener  
)
```

```Text iOS
void addSignatureCaptureTarget:(id)self  
			action:(SEL)@selector(onSignatureCapture:)  
void removeSignatureCaptureTarget:(id)self
```

# ApplicationSelection Callback

The Payment Device SDK fires an `applicationSelection` event during a transaction when a customer is required to select the card application they wish to use for the transaction. Call `continueApplicationSelection` to pass the customers selection and continue the transaction.

Methods to add or removed callback delegate in `ChipDnaMobile`:

```Text Android
void addApplicationSelectionListener(  
	ApplicationSelectionListener listener  
)  
Void removeApplicationSelectionListener(  
	ApplicationSelectionListener listener  
)
```

```Text iOS
void addApplicationSelectionTarget:(id)self  
			action:(SEL)@selector(onApplicationSelection:)  
void removeApplicationSelectionTarget:(id)self
```

# UserNotification Callback

The Payment Device SDK fires a `userNotification` callback when a prompt is required to be shown to the customer. No integration call to the SDK is required to continue the transaction. The transaction will continue as normal.

Methods to add or removed callback delegate in `ChipDnaMobile`:

```Text Android
void addUserNotificationListener(  
	UserNotificationListener listener  
)  
Void removeUserNotificationListener(  
	UserNotificationListener listener  
)
```

```Text iOS
void addUserNotificationTarget:(id)self  
			action:(SEL)@selector(onUserNotification:)  
void removeUserNotificationTarget:(id)self
```

```Text Android
void addUserNotificationListener(  
	UserNotificationListener listener  
)  
Void removeUserNotificationListener(  
	UserNotificationListener listener  
)
```

```Text iOS
void addUserNotificationTarget:(id)self  
			action:(SEL)@selector(onUserNotification:)  
void removeUserNotificationTarget:(id)self
```