Skip to main content
The EMV Core SDK provides APIs for managing payment transactions. These APIs let you integrate cashless payment functionality into applications, supporting both open- and closed-loop systems. The SDK handles secure, efficient, and flexible payment processing while offloading complexity to the Nayax backend. The methods available for payment management are: The sections below describe them in more detail.

CancelTransaction

The CancelTransaction method stops the execution of an ongoing PayTransaction or PreAuthorize call. The system blocks further requests until the cancellation is accepted and confirmed. Implementation Notes:
  • Before Card Presentation: If a card has not been presented yet, the Reader poll sequence stops. The display will show “Cancelling”; the host application must then update the UI using the ShowMessage command.
  • During Processing: If the card was already presented but processing is not finished, the system returns CannotCancel. It may take a few seconds to receive the TransactionComplete event while the EMV Core waits for the online result.
  • After Completion: If the transaction is already finished, it returns NoTransaction.
  • Undoing Success: To undo a completed transaction, use VoidTransaction.
  • Declined Transactions: If TransactionComplete returns a Decline status, there is no need to send a VoidTransaction command.
  • Events: In all scenarios, EMV Core will eventually send a TransactionComplete event to finalize the state.
See the API Signature for the CancelTransaction method:
Request:
Response:
If the card has already been presented and processed, the system will return a CannotCancel error.

ConfirmTransaction

A confirmation request is the second stage of the authorization flow. It confirms the pre-authorization so that settlement can take place.

API signature

Response:
JSON
Request:
JSON
Response:
JSON
Parameters:

GetCardToken

The GetCardToken method initiates the card tokenization process, returning a card token without performing a financial transaction. EMV Core waits for a card to be presented, reads the data, and triggers a CardTokenReceived event:
  • Payment Cards: Returns a Base64 string containing the card token.
  • CLP Cards (for example, Mifare): Returns the card UID.

API signature

Request:
Response:
JSON
Parameters:

IncrementalAuthorization

The IncrementalAuthorization method adds an incremental charge to an existing authorized transaction, and delivers the result through the IncrementalAuthorizationResponse callback. It’s reserved for a future multi-step flow and isn’t required today: for the current single-step behavior, see below.

Single-step incremental authorization

For most use cases, you don’t need to call this API directly. Nayax Core handles a single-step incremental authorization automatically whenever you settle a transaction for more than the pre-authorized amount:
  1. Call PreAuthorize (for example, for $10.00) and read the IncrementalMaxDefaultCredit value from the resulting TransactionComplete event (for example, $50.00).
  2. Call ConfirmTransaction, or send an External Settlement request from your server, with an amount up to IncrementalMaxDefaultCredit (for example, $15.03).
  3. Nayax Core automatically sends an incremental authorization request to the processor for the difference (in this example, $5.03).
  4. If the incremental authorization succeeds, Nayax Core settles the transaction for the final amount ($15.03).
  5. If it fails, Nayax Core settles the transaction for the original pre-authorized amount ($10.00).
Nayax doesn’t yet support the multi-step flow server-side. Calling IncrementalAuthorization today has no effect beyond what’s described above.
This method is only available for the Android SDK.
See the IncrementalAuthorization API signature in the code below:
Java
Parameters:

PreAuthorize

Use PreAuthorize to pre-authorize a card with the payment processor. EMV Core waits for a card, reads it, and processes it with the payment service if needed. It then sends a TransactionComplete event.

API signature

Request:
JSON
Response:
JSON
Parameters:
Before SDK v1.5: setting productID to a non-zero value in PreAuthorize marked the pre-authorized amount as final, and it couldn’t be changed in ConfirmTransaction. To indicate a non-final amount, you set productID = 0 in PreAuthorize and provided the actual product ID in ConfirmTransaction.As of SDK v1.5, whether the amount is final is controlled by isFinalAmount in PreAuthorize instead (see the parameter table above). productID is now used only for reporting and can be set independently in either call.
If the transaction is approved (the TransactionComplete event returns with status OK), your application must call ConfirmTransaction or VoidTransaction to complete the flow.

VoidTransaction

This request is used to void a transaction in two specific cases:
  1. Release Funds: The transaction was Pre-Authorized but not Confirmed. Voiding releases the reserved funds when the transaction will no longer occur.
  2. Reversal: The transaction was completed using PayTransaction but needs to be canceled.

API signature

Request:
JSON
Response:
JSON
Parameters: