Nuvei Payment Terminal

On-Premise Integration

  • Device Mode: USB – RS232 – WiFi – Ethernet
  • Host Modes: Direct API Device – App 2 App Inter-Link
API v1.3.34 QA_1.3.34 2026-09-29

REST API specification for integrating a third-party POS system with a payment terminal over a local network. Covers all transaction types, receipt options, async mode, and signature approval flow.

Introduction

Payment gateway integration with a POS system enables customers to make purchases quickly and securely from their POS device to the payment terminal. Integrators are responsible for meeting applicable PCI DSS and PCI Software Security Framework requirements.

The POS Integration API is consumed by a POS or middleware system talking to a payment terminal on a local network. The public contract and examples use JSON. The runtime also accepts legacy XML content types for backward compatibility; XML is outside this public contract.

Technical Requirements
  • SessionId — non-empty string generated by the POS software; maximum 36 characters. UUID/GUID format is recommended but not enforced by the server; use a unique value for each transaction request.
  • Base endpoint — the IP address (local network) of the terminal which runs the Payment app.
  • X-API-KEY — required when the TMS-configured authorization key is set. Missing or wrong key returns an error response. The client may generate the key in any form (maximum 32 characters); the value configured in TMS and the value sent in X-API-KEY must be identical. Sample TMS key: 6B9F2A81D3E47C5A0B1F9E8D7C6B5A43.
Quick Start
  1. Configure the terminal IP address and port on the local network (the base endpoint of the Payment app).
  2. Generate a unique non-empty sessionId (maximum 36 characters) for each transaction request.
  3. (Optional) Add the X-API-KEY header if TMS request authorization is configured.
  4. Construct the request URI and POST or GET to the appropriate endpoint — see API Requests below.

Sync vs Async Mode

Transaction requests support two communication modes. The default is synchronous (AsyncMode disabled). Set AsyncMode enabled to use async mode — the terminal returns an immediate status acknowledgement and the client polls querytransaction for the final result.

Synchronous — default (all endpoints)

The POS sends a request and blocks until the terminal returns the full HTTP response. Single request, single response.

Synchronous mode — all endpoints Synchronous mode — all endpoints POS client Payment terminal POST /v1/sessions/{{sessionId}}/{{endpoint}} (AsyncMode: disabled) terminal processes request... blocking 200 OK — full response body (SessionId + result) Response received SessionId + full result POS blocks until terminal responds — one request, one response

Summary

  • Default mode for all endpoints — transaction and non-transaction.
  • AsyncMode defaults to disabled.
  • POS waits and blocks until the HTTP response arrives.
  • Single request → single response.
Asynchronous — transaction endpoints only

Transactions in async mode allow the merchant to call the API to start the transaction and receive its status immediately, without waiting for the POS terminal to complete the transaction for a final response. The client retrieves the current status by calling querytransaction.

Async mode — transaction endpoints only (AsyncMode: enabled) Async mode — transaction endpoints only (AsyncMode: enabled) POS client Payment terminal POST /v1/sessions/{{sessionId}}/transaction (AsyncMode: enabled) Immediate — ResponseType: "querytransaction" Status: 2 (Initializing transaction) terminal processing card tap, PIN, approval... poll loop GET /v1/sessions/{{sessionId}}/querytransaction Status not 1 — keep polling (see Table ENUM-12) Status not 1 — keep polling (see Table ENUM-12) opt [ signature required ] GET /querytransaction Status: 11 — Waiting For Signature Confirmation From Client POST /approvesignature Approval: approve or reject Success: true — signature recorded continue polling querytransaction... GET /querytransaction Status: 1 — Transaction completed Full result available Transaction object in response sessionId must match: POST /transaction → GET /querytransaction → POST /approvesignature

Summary

  • Only available for transaction endpoints (POST /transaction with AsyncMode enabled).
  • Initial response ResponseType is always "querytransaction".
  • POS must poll GET /querytransaction repeatedly using the same sessionId as the original transaction URL.
  • When Status = 11 (WaitingForSignatureConfirmationFromClient) with DigitalSig present, call POST /approvesignature (same sessionId) then continue polling — see Table ENUM-12.
  • When Status = 1 (TransactionCompleted), the Transaction object contains the full result — see Table ENUM-12.
Table ENUM-12 — Status and StatusText field values

Enum table — colocated with Sync vs Async. Used by Query Transaction and async Status on transaction responses. Also in Table Index.

Here are some values for the Status and StatusText fields returned in async mode responses (ResponseType: "querytransaction").

Value of "Status" fieldValue of "StatusText" fieldDescription
None = 0No active transaction stage.
TransactionCompleted = 1Transaction completedThe transaction has been completely processed. The Transaction object in the response contains the full result when status equals 1.
Initialize = 2Initializing transactionThe transaction is being initialized.
AwaitingUserInteraction = 3Awaiting user interactionWaiting for the user to complete required actions (signature, select account type ...)
WaitingForCard = 4Waiting for cardWaiting for the card to be presented.
CardProcessing = 5Card processingThe card is currently being processed.
TransactionProcessing = 6Transaction ProcessingThe transaction is being processed.
TransactionProcessed = 7Transaction ProcessedThe transaction has been processed.
WaitingForCardRemove = 8Waiting For Card RemoveWaiting for the card to be removed.
WaitingForMerchantCard = 9Waiting For Merchant CardThe transaction requires the user to swipe the merchant card.
WaitingForSignatureConfirmation = 10Waiting For Signature ConfirmationThe payment app is auto-approving the signature without POS app interaction.
WaitingForSignatureConfirmationFromClient = 11Waiting For Signature Confirmation From ClientWaiting for the POS app to approve or reject the captured signature. Call Approve Signature (POST /approvesignature) with the required Approval value, then continue polling.
GettingSignatureFromCustomer = 12Getting Signature From CustomerThe system is prompting the customer to provide a signature.
DCCSelecting = 13DCC SelectingThe system is presenting DCC (Dynamic Currency Conversion) options to the user.
SelectAccountType = 14Select Account TypeWaiting for the cardholder to select an account type.
EnterPin = 15Enter PINWaiting for the cardholder to enter a PIN.
WaitingForProductData = 16Waiting For Product DataWaiting for product/SKU data from the POS.

API Requests

Request URI

The request URI is made up of three parts: the base URL, a sessionId, and the type of request to make.

  • The base endpoint is the IP address (local network) of the terminal which runs the Payment app.
  • A sessionId is a non-empty string that identifies the current third-party software request. The maximum is 36 characters; UUID/GUID format is recommended but not enforced by the server.
  • The request type portion of the path is the endpoint suffix for the function being called (see Request Types below).
  • An API Request object should be constructed and posted to the appropriate API endpoint.
URL Pattern
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/{{endpoint}}
Example URIs
URI
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/transaction
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/querytransaction
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/merchantlist
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/settlement
https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/approvesignature
Request Authorization

This feature is disabled by default, so resellers need to set the key in TMS to restrict client requests. After configuring this authorization value, clients need to add it as a header item to authorize requests (X-API-KEY). The Authorization Key set in TMS allows a maximum of 32 characters.

There is no required generation algorithm. The client may create the key in any format they choose (letters, digits, hex string, etc.), as long as the same value is configured on TMS and sent in the X-API-KEY request header.

Sample Authorization Key used as a TMS template default:

Sample TMS Authorization Key
6B9F2A81D3E47C5A0B1F9E8D7C6B5A43

If the header is missing or contains an incorrect key, the terminal returns an error response.

POS Integration Options screen showing Authorization Key field configured in TMS
POS Integration Options — the Authorization Key is configured on the terminal via TMS (maximum 32 characters). Clients must send the same value in the X-API-KEY request header when authorization is enabled. Sample key: 6B9F2A81D3E47C5A0B1F9E8D7C6B5A43.
Request Headers (all endpoints)

These headers apply to every API call in this document. They are not repeated in each endpoint example.

HeaderValueRequiredDescription
Content-Typeapplication/jsonO/MRequired for POST requests when a JSON body is sent. GET requests may omit it; the runtime defaults to JSON when the header is absent.
X-API-KEYstring(32)OAuthorization key configured in TMS (maximum 32 characters). Any client-generated format is accepted if it matches the TMS value. Sample: 6B9F2A81D3E47C5A0B1F9E8D7C6B5A43. Required only when TMS authorization is enabled.
Request Types

Here are the transaction types for each function type used in the URL request path:

Function TypeHTTP MethodTransaction Type
Get Merchant ListGET / POSTmerchantlist
Get Allowed TransactionsPOSTgetAllowedTransactions
PurchasePOSTtransaction
Purchase CashPOSTtransaction
Cash OnlyPOSTtransaction
Refund AmountPOSTtransaction
MOTO PurchasePOSTtransaction
MOTO RefundPOSTtransaction
Pre-authPOSTtransaction
Pre-auth CompletePOSTtransaction
Pre-auth Cancel (unattended only)POSTtransaction
Pre-auth IncrementPOSTtransaction
Pre-auth DelayedPOSTtransaction
ReprintPOSTreprint
Card VerificationPOSTquerycard
Card EnquiryPOSTcardenquiry
Scan CodePOSTscancode
Settlement EnquiryPOSTsettlement
Settlement CutoverPOSTsettlement
Manual Host LogonPOSTlogon
Pre-auth InquiryPOSTtransactionsearch
Pre-auth Completion InquiryPOSTtransactionsearch
Search TransactionPOSTtransactionsearch
Cancel TransactionGET / POSTcanceltransaction
Health CheckGEThealthcheck
Bring App to ForegroundPOSTbringapptoforeground
Query TransactionGETquerytransaction
Query Stored TransactionPOSTquerystoredtransaction
Approve SignaturePOSTapprovesignature
Extended Pre-authPOSTtransaction
Pre-auth ReversalPOSTtransaction
Shift TotalsPOSTshiftTotals
Voucher EntryPOSTvoucherEntry

The routes above are the public endpoints documented by this page. Their behavior follows the terminal configuration and current operating state.

API Responses

Most endpoints return a JSON body with the same top-level shape. HTTP status and business outcome are separate: a 200 OK can still contain a declined transaction, and most non-2xx responses use the same envelope with error fields in Response. Health Check is the exception: it returns HTTP 200 with text/plain and a one-space body. Early transport validation errors (for example invalid SessionId length or unsupported Content-Type) may instead be returned as raw text/plain. This section describes the shared wrapper and the three response types the API returns.

Common response envelope

Most responses use this wrapper. The QA server serializes JSON responses with Content-Type: text/plain; clients should parse the body as JSON according to the endpoint contract. Endpoint-specific fields live inside Response.

PropertyTypeM/ODescription
SessionIdstring(36)MEcho of the sessionId from the request URI.
ResponseTypestringMIdentifies the operation that produced this response (e.g. "transaction", "logon", "merchantlist"). Matches the endpoint function — see API Requests → Request Types.
ResponseobjectM/OPayload object. Normally present; the terminal may omit it for getAllowedTransactions when no merchant is supplied. Shape depends on ResponseType and outcome — see sections below and each endpoint page.

Boolean encoding rules are documented in Boolean Type. Use that setting when interpreting Success values in this section.

Choosing the response path

After parsing the envelope, use the fields inside Response to decide which path applies:

  • Response.ErrMessage is present → API error / exception (HTTP is non-2xx). Read ErrMessage and StatusCode, plus Suggestion when supplied. There is no Success field on this path.
  • Response.Success or Response.Transaction.Success is present → business outcome (HTTP is 200). Approved/completed vs declined/failed depends on the terminal's boolean encoding ("1"/"0" or true/false); read the endpoint's ResponseText or Response.Transaction.ResponseText on failure/decline.
  • Neither applies (e.g. merchantlist) → data payload only; HTTP 200 means the call succeeded.
HTTP status codes

The terminal sets the HTTP status on the wire. Response.StatusCode in the JSON body is the same value as a string (e.g. HTTP 403 → "StatusCode": "403").

HTTPWhenJSON Response shape
200Request accepted; operation finished or data returnedBusiness fields — Success, ResponseText, Transaction, etc.
400Invalid request data, bad TxnType, amount validation, malformed bodyUsually ErrMessage, StatusCode: "400"; early transport validation may be raw text/plain
401X-API-KEY missing or incorrect (when TMS authorization is enabled)ErrMessage, StatusCode: "401"
403Merchant validation failure or terminal busyErrMessage, StatusCode: "403"; Suggestion when supplied
500Internal server errorMay have no JSON body; some async operations defer the response until processing completes
How to read a response

HTTP status

  • 200 — operation completed or data returned; check Success for approval vs decline.
  • 400 / 401 / 403 — request rejected before processing; read Response.ErrMessage and Suggestion when supplied.
  • No response — connection failure or timeout; terminal app may be unreachable.

Business fields (HTTP 200)

  • Response.Success — true = success, false = failure (encoding per Boolean Type); read ResponseText on failure.
  • Response.Transaction.Success — same rule on transaction endpoints.
  • Async mode — poll Status / StatusText; see Sync vs Async.
  • Sync mode — the HTTP connection stays open until the terminal finishes and returns the full body.
Response types

1. Success (HTTP 200)

The operation completed. Where Success is present and true, result fields are populated. ResponseType matches the endpoint called (e.g. "transaction").

Example — approved transaction
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "transaction",
  "Response": {
    "Transaction": {
      "TxnType": "P",
      "Success": "1",
      "lAmount": 100,
      "lszApprovalCode": "327710",
      "szAuthorizationResponseCode": "00"
    }
  }
}

2. Business failure (HTTP 200)

The terminal processed the request but the operation did not succeed (declined card, user cancel, host decline, etc.). HTTP status is still 200 — this is not an API error. Check Success is false and read ResponseText (or Transaction.ResponseText). Do not use ErrMessage on this path.

Example — declined transaction
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "transaction",
  "Response": {
    "Transaction": {
      "TxnType": "P",
      "Success": "0",
      "ResponseText": "Transaction Declined"
    }
  }
}

3. Error / exception (HTTP 400 / 401 / 403)

The request was rejected before normal processing — invalid data, bad API key, invalid merchant, or terminal busy. The envelope is unchanged; ResponseType matches the endpoint called (e.g. "transaction" for POST .../transaction). Response contains ErrMessage, StatusCode, and optionally Suggestion — never Success or ResponseText.

Error response fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request transaction.
ResponseTypestring(23)MEndpoint that was called (e.g. "transaction", "settlement", "logon").
Response.ErrMessagestringOError message — display to the operator.
Response.SuggestionstringOOptional recommended next action when supplied by the runtime.
Response.StatusCodestringOSame value as the HTTP status, as a string (e.g. "403").

Common error cases (HTTP status as noted):

  • Payment-layer readiness failure (200) — POS Integration forwards a transaction for every valid merchant without a POS-side online/offline pre-check. If the Payment layer requires host logon, the Payment layer attempts automatic logon before continuing the original transaction. If logon succeeds, the original transaction continues; if it fails, read the normal business failure result (Response.Transaction for a completed synchronous transaction, or the async status/result when using AsyncMode).
  • Merchant validation failure (403) — the request cannot be resolved to a configured merchant (for example, an invalid merchant ID, or an omitted merchant when automatic selection is not possible).
  • Terminal busy (403) — another operation is in progress.
  • Invalid API key (401) — X-API-KEY header missing or wrong when TMS authorization is enabled.
  • Invalid request (400) — malformed JSON, invalid TxnType, or failed field validation.

Quick reference

CaseHTTPCheck
Approved transaction200Response.Transaction.Success = true
Declined transaction200Response.Transaction.Success = false; read Response.Transaction.ResponseText when present
Operation succeeded200Response.Success = true
Operation failed200Response.Success = false; read ResponseText
Payment-layer offline / host readiness failure200Read the normal transaction result or async status/result; do not treat it as an API error envelope
Merchant validation failure403ErrMessage, StatusCode: "403"; Suggestion when supplied
Terminal busy403ErrMessage, StatusCode: "403"
Invalid API key401ErrMessage, StatusCode: "401"
Invalid request400ErrMessage, StatusCode: "400"
Terminal unreachable—No HTTP response; use Health Check

Boolean Type

Boolean-like values are controlled by a TMS configuration.

The terminal uses one of two encodings for request and response bodies:

  • String mode — "1" / "0" (yes/no, enabled/disabled, approved/declined)
  • JSON boolean mode — true / false

Integrators must use the encoding that matches the terminal's TMS setting. Do not mix formats in a single request. Applies to Success, AsyncMode, WithReceiptImageData, and DisablePrinting (transaction, Card Verification, settlement), transaction flag fields (fAuthorized, fOffline, etc.), and other boolean switches documented on each endpoint.

POS Integration Options screen showing Boolean data format type configured in TMS
POS Integration Options — the Boolean data format type is configured on the terminal via TMS. Choose String 1/0 for "1"/"0" encoding or Boolean for true/false encoding in request and response bodies.

JSON examples in this document may show one encoding (string or boolean) for illustration; always match the terminal TMS setting in live integrations.

Build a Server Validation Handler

When the terminal's HTTP server uses TLS, the POS client connects over https:// instead of http://. A custom server validation handler and ca.pem CA certificate are required only when HTTP Server SSL Enabled is set to Yes in TMS (POS Integration Options). If SSL is disabled (No), use plain HTTP to the configured port — no CA file or TLS handler is needed.

HTTP Server SSL (TMS)
POS Integration Options screen showing HTTP Server SSL Enabled set to Yes in TMS
POS Integration Options — HTTP Server SSL Enabled controls whether the payment app serves the POS Integration API over HTTPS, while Enable SSL Certificate Verification controls whether the POS client validates the server certificate. Set both to Yes for HTTPS with certificate validation. When HTTP Server SSL Enabled is No, connections use HTTP only and certificate verification is not applicable.

When SSL is enabled, building a server validation handler ensures the client trusts the payment terminal by validating its certificate against a specific CA (Certificate Authority). This is typically required when:

  • A private CA signs the server's certificate.
  • Custom validation rules are required beyond default system certificate validation.
  • The handler replaces or supplements the system's default trusted Certificate Authorities with your custom CA.
Prerequisites

Apply the following only when HTTP Server SSL Enabled = Yes:

  • Store the provided ca.pem file in a secure and accessible location for the client.
  • Confirm the client can read and use the ca.pem file for validation.
Steps to implement the handler

When SSL is enabled on the terminal, follow these steps on the POS client:

Step 1 — Store the CA certificate
Save the ca.pem file in a secure location accessible by the client.

Step 2 — Implement the custom handler
Create a function or method that:

  • Reads the ca.pem file to load the CA certificate.
  • Configures a validation callback that reads the server's certificate chain during a TLS handshake.
  • Validates the server certificate against the loaded CA (ensure ca.pem matches the CA used to sign the server certificate).
  • Returns an object or structure for secure connections (e.g. HTTP clients).

Step 3 — Use the handler in connections
Use the custom handler when establishing HTTPS connections to the terminal so the server certificate is validated against your CA.

Get Merchant List

Retrieves the list of configured merchants from the terminal. This request has no request body — all parameters are passed via headers only.

Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request transaction.
ResponseTypestringMAlways "merchantlist".
MerchantsarrayMArray of merchant objects, each containing Id, Name, and Mode.
Idstring(2)MMerchant identifier.
NamestringMMerchant display name.
ModestringMMerchant mode. Some possible values are mentioned in Table ENUM-10.
Table ENUM-10 — Mode field values

Enum table — colocated with Get Merchant List. Also in Table Index.

Here are some values for the Mode field.

Value of "Mode" field
None
LogOff
EOV
Online
RKIFail
Endpoint
GET/POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/merchantlist
No request body required
Response Example
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "merchantlist",
  "Response": {
    "Merchants": [
      {
        "Id": "1",
        "Name": "Main Merchant",
        "Mode": "Online"
      },
      {
        "Id": "2",
        "Name": "Second Merchant",
        "Mode": "LogOff"
      }
    ]
  }
}

Get Allowed Transactions

Returns the transaction types enabled for a merchant on this terminal (purchase, refund, pre-auth, etc.). Use this to build dynamic menus or validate TxnType before calling transaction.

Request Body Fields
Field NameType (Max Length)M/ODescription
Merchantstring(2)OMerchant to query. Send it explicitly when the function list is required. When omitted, the terminal may return HTTP 200 with only SessionId and ResponseType and no Response payload.
Response Fields
Field NameType (Max Length)M/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "getAllowedTransactions".
Merchantstring(2)OEcho of the resolved merchant when one is supplied or selected.
FunctionItemsarrayOList of allowed function entries for the resolved merchant. Omitted when no merchant is supplied and the terminal returns an empty envelope.
IdintMFunction identifier (on each FunctionItems element).
ParentIdintMParent function identifier (on each FunctionItems element).
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/getAllowedTransactions
Request Example
{
  "Merchant": "01"
}
Response Example
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "getAllowedTransactions",
  "Response": {
    "Merchant": "01",
    "FunctionItems": [
      { "Id": 1, "ParentId": 0 },
      { "Id": 42, "ParentId": 1 }
    ]
  }
}

Health Check

Verifies that the terminal's payment app server is alive and reachable. The POS can send this request in parallel with active transactions without interference.

A successful response returns HTTP 200 with Content-Type: text/plain, Content-Length: 1, and a single-space body. No response (connection refused/timeout) indicates the server is down.

Endpoint
GET https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/healthcheck
No request body required
Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 1

(one space — server is alive)

Bring App to Foreground

This function moves the payment app to the foreground if it is running in the background.

The request to bring the application to the foreground uses the POST method and does not require a request body to perform this function.

Response Fields

Below is a list of fields that will appear in the 'Bring Application to Foreground' response. Fields labeled with 'M' (Mandatory) appear whether the request succeeds or fails.

Field NameType (Max Length)M/ODescription
SessionIdstring(36)MSessionId of the request transaction.
ResponseTypestring(23)MResponseType is the TransactionType of the requested transaction ("bringapptoforeground").
SuccessboolMWhether the operation succeeded (true) or failed (false).
ResponseTextstringOText of Response. Commonly occurs when a transaction is declined.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/bringapptoforeground
No request body required
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "bringapptoforeground",
  "Response": {
    "Success": "1",
    "ResponseText": "Application brought to the foreground"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "bringapptoforeground",
  "Response": {
    "Success": "0",
    "ResponseText": "Application is not allowed to bring itself to the foreground"
  }
}

Transaction

All financial transaction types use POST /v1/sessions/{{sessionId}}/transaction with the same request and response structure. Set TxnType to identify the operation — see subsections below (Purchase, Refund, Pre-auth, etc.).

Fields marked with M (Mandatory) must be assigned values. The Amount must be greater than 0 where applicable. Numbered lookup tables are grouped under Request field logic, Response field logic, and Field Enums — or use the Table Index.

Common Request Fields

Field NameType (Max Length)M/ODescription
Merchantstring(2)OSpecify the merchant to execute the transaction. See Table REQ-01.
TxnTypestring(3)MType of transaction — value depends on operation (see subsections).
AmountlongOTransaction amount in cents. Required and greater than 0 for amount-based transaction types; optional for Extended Pre-auth (PE).
TxnRefstring(64)OReference number attached to the transaction. Appears on the receipt.
OrderIDstring(51)OClient-supplied order identifier for later lookup via Query Stored Transaction. The current native buffer reserves 52 bytes including the terminator, so 51 data characters are the safe maximum. The terminal echoes it in Response.Transaction.OrderID when present and does not generate one when omitted.
EnableTipboolOWhether tip entry is offered. Default disabled.
AmtTiplongOTip amount of the sale in cents.
AsyncModeboolODefault disabled. Set enabled for async mode — see Sync vs Async.
WithReceiptImageDataboolORequests supplementary receipt image/signature data. ReceiptData is controlled by ReceiptType; receipt fields are optional and returned only when generated.
DisablePrintingboolOIf enabled, disable receipt printing for this transaction. Exception: when the transaction requires a paper signature, the merchant signature copy is still printed so the cardholder can sign. All other receipts stay unprinted, and the receipt data returned to the POS is unchanged.
ReceiptTypeintODefines the receipt format. See Table REQ-02.
PlainTextCharPerLineintOPlain-text receipt width when ReceiptType is plain text.
CustomerReceiptPrintOptionintODefines the customer receipt printing option. See Table REQ-03.
MerchantReceiptPrintOptionintODefines the merchant receipt printing option. See Table REQ-03.

EnableTip behavior

  • If AmtTip > 0, the request is sent with the Tip value regardless of EnableTip.
  • If AmtTip is 0 and EnableTip is true and the payment app allows tip, a popup prompts the user to enter a Tip value.
  • If the payment app is not set up to allow tip, the request proceeds without a Tip value.

Disabled functions and manual card entry

  • If the requested transaction type is disabled for the merchant in TMS, the terminal rejects the request without contacting the host. The response is HTTP 200 with the requested TxnType, Success "0" and ResponseText "This Feature Is Not Available".
  • If MOTO is disabled for the merchant, a transaction request that asks for manual card entry (for example with Pan) is rejected with the same response.
  • If the MOTO password is enabled for the merchant, pressing Manual Entry on the terminal card screen asks for the MOTO password before the card details are entered. This applies to Purchase, Pre-auth, Pre-auth Complete and Card Verification. Refund does not ask for it, and MOTO Purchase asks for it only once, as before.
  • Back on the MOTO password prompt returns to the card screen. Cancel, closing the prompt, or reaching the maximum number of wrong attempts cancels the transaction with Success "0" and ResponseText "Transaction Cancelled". An idle timeout on the prompt ends the transaction with Success "0" and ResponseText "Dialog Timed Out".

Reference — Request field logic

Lookup tables for common request fields — each table is linked from the matching row in Common Request Fields. See also Table Index.

Table REQ-01 — Merchant field logic
Merchant Field ValueSingle MerchantMulti Merchant
Not set or invalid (null, "0", "abc", etc.)Automatically select the default merchantReturn error – Merchant Id not found
Valid value (parsable to int)Use the selected merchantUse the selected merchant
Table REQ-02 — ReceiptType field logic (request)
ReceiptType ValueDescription
Not setUses TMS default.
0Do not return receipt data.
1Return receipt in HTML format.
2Return receipt in plain text format.
OthersTreated as 'Not Set' value.
Table REQ-03 — Print Option (CustomerReceiptPrintOption / MerchantReceiptPrintOption)

Defines the receipt printing behavior for customer and merchant during a transaction.

Print OptionDescription
Not setFollows the terminal receipt configuration.
0No Printing
1AutoPrinting
2Prompt Printing

Transaction Response

The outer response contains SessionId, ResponseType, and Response. For a financial transaction, transaction fields are nested under Response.Transaction. Fields labeled M appear when the native transaction model supplies them; optional fields may be omitted by transaction type or outcome. Search results use a separate Response.Transactions[] item model described below.

In the table below, SessionId and ResponseType are outer-envelope fields; Success and every transaction detail field are under Response.Transaction.

Field NameType (Max Length)M/ODescription
SessionIdstring(36)MSessionId of the request transaction.
ResponseTypestring(23)MOperation response type. For financial transactions this is "transaction"; the transaction subtype is returned in TxnType.
SuccessboolMWhether the transaction is approved (true) or declined (false).
ResponseTextstringOText of Response. Commonly occurs when a transaction is declined.
PrinterStatusstringOPrinter state text returned by the terminal when available.
ReceiptTypeintMIndicates the receipt format returned. See Table RES-01.
Merchantstring(2)OMerchant that executed the transaction.
TxnTypestring(9)MType of transaction (matches request TxnType).
OrderIDstring(51)OOrder identifier echoed from the original request. The current native buffer reserves 52 bytes including the terminator, so 51 data characters are the safe maximum. Present only when the original request supplied OrderID.
IdShiftuintMShift identifier.
IdShiftNameuintMShift name identifier.
lAmountlongMThe approved amount.
lTipAmountlongMThe approved tip amount.
lCashOutlongMThe approved cash amount.
lCashOutFeelongMThe cash-out transaction fee.
lSurChargeTaxlongMThe tax surcharge.
lDiscountlongMDiscount amount of the transaction.
lDiscountPercentlongMDiscount percentage of the transaction.
iRewarduintMThe transaction reward.
lAuthorizedTotallongMThe total approved amount: lAmount + lTipAmount + lCashOut + fees/surcharges - discounts, where applicable.
lDonationAmountlongMThe total approved donation amount.
iEntryModeuintMEntry mode. See Table ENUM-04.
iCardTypeuintMType of card. See Table ENUM-03.
iCurrencyCodeuintMThe currency code.
fsModifyuintMThe current status of the payment record. See Table ENUM-01.
iPaymentTypeuintMThe payment type. See Table ENUM-05.
iCustomerLanguageuintMThe customer language. See Table ENUM-06.
fClosedshortMWhether the transaction has been completed.
fBatchErrorshortMWhether the batch is in an error state.
fVoidedshortMWhether the transaction has been voided.
fRefundedboolMWhether the transaction has been refunded.
fAuthorizedboolMWhether the payment record has been processed by the host.
fSignatureboolMWhether the transaction is a signature transaction.
fCardHolderStatesCVVnotOnCardboolMWhether the CVV is absent because the cardholder states there is no CVV on the card ("No CVV On Card").
fCardNotPresentboolMWhether the CVV is absent because it is not present ("CVV Not Present").
fCardNotPresentMailboolMWhether the transaction is a card-not-present mail order.
fCardNotPresentPhoneboolMWhether the transaction is a card-not-present telephone order.
fCanAdjustboolMWhether the transaction can be adjusted.
fCanVoidboolMWhether the transaction can be voided.
fCanPreAuthTopUpboolMWhether a pre-auth increment can be performed on the transaction.
fCanPreAuthCompleteboolMWhether the pre-auth can be completed.
fCanVoidPreAuthCompleteboolMWhether the pre-auth completion can be voided.
fCanGoOfflineboolMWhether the transaction can be processed offline using store-and-forward.
fOfflineboolMIndicates whether the transaction is from an EOV (or OFFLINE) case or an ONLINE case. If fOffline is true, the transaction is from an EOV (or OFFLINE) case; otherwise, the transaction is ONLINE.
lszCustomerReferencestringOCustomer reference number from the payment record.
szReferenceNumberstringORetrieval Reference Number (RRN) assigned to the transaction. This is different from lszCustomerReference, which contains the POS/customer transaction reference (TxnRef).
lszReferenceNumberKeystringOReference number search key.
lszApprovalCodeKeystringOApproval code search key.
lszSequenceNumberstringOSequence number from the payment record.
Datestring(8)ODate used for searching, formatted as YYYYMMDD.
Timestring(10)OTime used for searching, formatted as hh:mm:ss.
AuthorizationExpiryDatestring(8)OAuthorization expiry date. Formatted as YYYYMMDD.
szAuthorizationResponseCodestringMThe approval response code of the transaction.
lszApprovalCodestringOThe approval code of the transaction.
lszSTANstringOThe System Trace Audit Number of the transaction.
TRVstring(15)OTransaction reference value.
IssuerRRNstring(15)OIssuer retrieval reference number.
szIssuerIdstringOIssuer identifier.
szCardHolderNamestringOCardholder name.
szStreetstringOCardholder street address (MOTO).
szApartmentstringOCardholder apartment (MOTO).
szZipCodestringOCardholder postal code (MOTO).
iReversalReasonuintMThe reason for reversal. See Table ENUM-07.
szProcessedLaterNumberstringOProcessed-later reference number when applicable.
lszCardLogostringMCard logo.
szQRCodestringOURL of the stored transaction receipt.
byPinTypebyteMPIN type. See Table ENUM-08.
byPinStatusbyteMPIN status. See Table ENUM-09.
iNoCVVOptionuintMThe reason no CVV was provided.
byCDCVMbyteMThe CDCVM (Consumer Device Cardholder Verification Method) value of the card.
iAccountTypeuintMThe account type of transaction. See Table ENUM-02.
lszEndCardNumberstringOThe last four digits of the card number used to perform this transaction.
szMaskedCardNumberstringOMasked card number returned when available.
cardHashstringOHash of the card details when returned by the terminal.
szCardTypestring(34)OCard type description string from the presented card (e.g. "Mastercard").
lServiceFeeslongOThe surcharge fee for the transaction. Only shown when it has a value.
lFeelongOThe fee for the transaction. Only shown when it has a value.
PIDuintOID of payment.
ReceiptDatastringOContains the receipt data of the transaction.
ReceiptLogostringOContains the logo to be printed on the receipt.
DigitalSigstringOContains the digital signature data to be printed on the receipt.

Reference — Response field logic

Lookup tables for response fields — linked from Transaction Response and reused by Search and Card Verification responses.

Table RES-01 — ReceiptType field logic (response)
ReceiptType ValueDescription
0Do not return receipt data.
1Return receipt in HTML format.
2Return receipt in plain text format.

Reference — Field Enums

Enum value tables for transaction response fields. Each table is linked from the matching row in Transaction Response. Jump: ENUM-01 · ENUM-02 · ENUM-03 · ENUM-04 · ENUM-05 · ENUM-06 · ENUM-07 · ENUM-08 · ENUM-09

Table ENUM-01 — fsModify field values
Value of "fsModify" field
PAYMENT_MODIFY_ADJUST = 0x00000001
PAYMENT_MODIFY_VOID = 0x00000002
PAYMENT_MODIFY_PARTIALVOID = 0x00000004
PAYMENT_MODIFY_REVERSED = 0x00000008
PAYMENT_MODIFY_STOREFORWARD = 0x00000010
PAYMENT_MODIFY_PENDING = 0x00000020
PAYMENT_MODIFY_OFFLINE = 0x00000100
PAYMENT_MODIFY_PARTIALPREAUTHCOMPLETE = 0x00000200
PAYMENT_MODIFY_PREAUTHCOMPLETE = 0x00000400
PAYMENT_MODIFY_DELAYEDPREAUTHCOMPLETE = 0x00000800
PAYMENT_MODIFY_EOV = 0x00001000
PAYMENT_MODIFY_PENDING_CANCELFAIL = 0x00002000
PAYMENT_MODIFY_EMV_ERROR = 0x40000000
PAYMENT_MODIFY_CANCELLED = 0x80000000
Table ENUM-02 — iAccountType field values
Value of "AccountType" field
ACCOUNT_TYPE_SAVINGS = "0"
ACCOUNT_TYPE_CHEQUE = "1"
ACCOUNT_TYPE_CREDIT = "2"
Table ENUM-03 — iCardType field values

Here are some values for the iCardType field.

CardTypeCardType
CARD_NONE = 0CARD_UNIONPAY = 75
CARD_DEBIT = 1CARD_TROY = 76
CARD_VISADEBIT = 2CARD_SPARE1 = 77
CARD_DEBITMASTER = 3CARD_SPARE2 = 78
CARD_AMEXDEBIT = 4CARD_SPARE3 = 79
CARD_JCBDEBIT = 5CARD_SPARE4 = 80
CARD_DISCOVERDEBIT = 6CARD_SPARE5 = 81
CARD_UNIONPAYDEBIT = 7CARD_SPARE6 = 82
CARD_INTERACTDEBIT = 8CARD_SPARE7 = 83
CARD_MAESTRODEBIT = 9CARD_SPARE8 = 84
CARD_TROYDEBIT = 10CARD_SPARE9 = 85
CARD_SPAREDEBIT1 = 11CARD_SPARE10 = 86
CARD_SPAREDEBIT2 = 12CARD_SPARE11 = 87
CARD_SPAREDEBIT3 = 13CARD_SPARE12 = 88
CARD_SPAREDEBIT4 = 14CARD_SPARE13 = 89
CARD_SPAREDEBIT5 = 15CARD_SPARE14 = 90
CARD_SPAREDEBIT6 = 16CARD_SPARE15 = 91
CARD_SPAREDEBIT7 = 17CARD_SPARE16 = 92
CARD_SPAREDEBIT8 = 18CARD_SPARE17 = 93
CARD_SPAREDEBIT9 = 19CARD_SPARE18 = 94
CARD_SPAREDEBIT10 = 20CARD_SPARE19 = 95
CARD_ALLIEDPDEBIT = 21CARD_SPARE20 = 96
CARD_ARBUCKLEDEBIT = 22CARD_ALLIEDP = 97
CARD_ASBPRVLBDEBIT = 23CARD_ARBUCKLE = 98
CARD_ATSDEBIT = 24CARD_ASBPRVLB = 99
CARD_BABYCITYDEBIT = 25CARD_ATS = 100
CARD_BARTRCRDDEBIT = 26CARD_BABYCITY = 101
CARD_CASHRWDSDEBIT = 27CARD_BARTRCRD = 102
CARD_CRTDEBIT = 28CARD_CASHRWDS = 103
CARD_CSLDEBIT = 29CARD_CRT = 104
CARD_DRIVEDEBIT = 30CARD_CSL = 105
CARD_EAZYCDDEBIT = 31CARD_DRIVE = 106
CARD_ECARDDEBIT = 32CARD_EAZYCD = 107
CARD_ECARDZGDEBIT = 33CARD_ECARD = 108
CARD_ECARDZLDEBIT = 34CARD_ECARDZG = 109
CARD_ECOM1DEBIT = 35CARD_ECARDZL = 110
CARD_EFTPOSDEBIT = 36CARD_ECOM1 = 111
CARD_ELOYALTYDEBIT = 37CARD_EFTPOS = 112
CARD_EZIPAYDEBIT = 38CARD_ELOYALTY = 113
CARD_FFCARDDEBIT = 39CARD_EZIPAY = 114
CARD_FLEETDEBIT = 40CARD_FFCARD = 115
CARD_FLYBUYDEBIT = 41CARD_FLEET = 116
CARD_FPFGIFTDEBIT = 42CARD_FLYBUY = 117
CARD_GENIEDEBIT = 43CARD_FPFGIFT = 118
CARD_GIFTSTNDEBIT = 44CARD_GENIE = 119
CARD_INDUEDEBIT = 45CARD_GIFTSTN = 120
CARD_INSIGHTDEBIT = 46CARD_INDUE = 121
CARD_LOYALTYDEBIT = 47CARD_INSIGHT = 122
CARD_MOBILDEBIT = 48CARD_MOBIL = 123
CARD_MTAGIFTDEBIT = 49CARD_MTAGIFT = 124
CARD_NPDDEBIT = 50CARD_NPD = 125
CARD_ONECARDDEBIT = 51CARD_ONECARD = 126
CARD_POSTIEDEBIT = 52CARD_POSTIE = 127
CARD_QCARDDEBIT = 53CARD_QCARD = 128
CARD_RD1DEBIT = 54CARD_RD1 = 129
CARD_ROCKGASDEBIT = 55CARD_ROCKGAS = 130
CARD_STARCARDDEBIT = 56CARD_STARCARD = 131
CARD_SWIPEGFTDEBIT = 57CARD_SWIPEGFT = 132
CARD_SWIPELOYDEBIT = 58CARD_SWIPELOY = 133
CARD_TRUREWRDDEBIT = 59CARD_TRUREWRD = 134
CARD_TTCRDSDEBIT = 60CARD_TTCRDS = 135
CARD_TTLSTOREDEBIT = 61CARD_TTLSTORE = 136
CARD_VIIDEBIT = 62CARD_VII = 137
CARD_WAPDEBIT = 63CARD_WAP = 138
CARD_WESTFLDDEBIT = 64CARD_WESTFLD = 139
CARD_WPGDEBIT = 65CARD_WPG = 140
CARD_ZBIZDEBIT = 66CARD_ZBIZ = 141
CARD_ZCARDDEBIT = 67CARD_ZCARD = 142
CARD_CREDIT = 68CARD_GIFT = 143
CARD_VISA = 69CARD_LOYALTY = 144
CARD_MASTER = 70CARD_CASH = 145
CARD_AMEX = 71CARD_CHEQUE = 146
CARD_JCB = 72CARD_EBTASSIST = 147
CARD_DINERS = 73CARD_EBTSNAP = 148
CARD_DISCOVER = 74AllCards = 149
CARD_UNKNOWN = 150CARD_ZBIZTESTDEBIT = 151
CARD_ZBIZTEST = 152
Table ENUM-04 — EntryMode / iEntryMode field values

Used in Transaction Response (iEntryMode) and Card Verification response (EntryMode).

ValueName
0EM_NONE
1EM_POS
2EM_IMPRINT
3EM_MOTO
4EM_SWIPED
5EM_MANUAL
6EM_RFID
7EM_CONTACTLESS_ISO
8EM_CONTACTLESS_MAGSTRIPE
9EM_CONTACTLESS_DOMESTIC
10EM_CONTACTLESS_NFC
11EM_CONTACTLESS_VAS
12EM_SMC
13EM_ALIPAY
14EM_WECHAT
15EM_END
16EM_ECOMMERCE
17EM_CENTRAPAY
18EM_GIFT_REDEEM
19EM_DIRECTPAY
Table ENUM-05 — iPaymentType field values
Payment TypePayment Type
PAYMENT_TYPE_SALE = 0PAYMENT_TYPE_PREAUTHTOPUP = 12
PAYMENT_TYPE_REFUND = 1PAYMENT_TYPE_PREAUTHDELAY = 13
PAYMENT_TYPE_CASHADVANCE = 2PAYMENT_TYPE_PREAUTHPARTIAL = 14
PAYMENT_TYPE_PREAUTH = 3PAYMENT_TYPE_PREAUTHCANCEL = 15
PAYMENT_TYPE_PREAUTHCOMPLETE = 4PAYMENT_TYPE_IMPRINTER = 20
PAYMENT_TYPE_BALANCEINQUIRY = 5PAYMENT_TYPE_AUTHONLY = 60
PAYMENT_TYPE_DEPOSIT = 6PAYMENT_TYPE_REGISTER = 100
PAYMENT_TYPE_SETTLE = 7PAYMENT_TYPE_ACTIVATE = 101
PAYMENT_TYPE_INSTALLMENTSALE = 10PAYMENT_TYPE_DEACTIVATE = 102
PAYMENT_TYPE_LATEINTERESTINSTALLMENTSALE = 11PAYMENT_TYPE_RELOAD = 103
PAYMENT_TYPE_REDEEMED = 104
Table ENUM-06 — iCustomerLanguage field values

Locale code → language name → numeric value (payment app locale catalog; default supported locale is en_US = 1).

LocaleLanguageValue
en_USEnglish (US)1
de_DEGerman (Germany)2
zh_CNChinese (PRC)3
zh_TWChinese (Taiwan)4
cs_CZCzech (Czech Republic)5
nl_BEDutch (Belgium)6
en_AUEnglish (Australia)7
en_GBEnglish (Britain)8
en_CAEnglish (Canada)9
en_NZEnglish (New Zealand)10
en_SGEnglish (Singapore)11
fr_BEFrench (Belgium)12
fr_CAFrench (Canada)13
fr_FRFrench (France)14
fr_CHFrench (Switzerland)15
de_ATGerman (Austria)16
de_LIGerman (Liechtenstein)17
de_CHGerman (Switzerland)18
it_ITItalian (Italy)19
it_CHItalian (Switzerland)20
ja_JPJapanese (Japan)21
ko_KRKorean (Korea)22
pl_PLPolish (Poland)23
ru_RURussian (Russia)24
es_ESSpanish (Spain)25
ar_EGArabic (Egypt)26
ar_ILArabic (Israel)27
bg_BGBulgarian (Bulgaria)28
ca_ESCatalan (Spain)29
hr_HRCroatian (Croatia)30
da_DKDanish (Denmark)31
en_INEnglish (India)32
fi_FIFinnish (Finland)33
en_IEEnglish (Ireland)34
en_ZAEnglish (South Africa)35
el_GRGreek (Greece)36
iw_ILHebrew (Israel)37
hi_INHindi (India)38
hu_HUHungarian (Hungary)39
in_IDIndonesian (Indonesia)40
lt_LTLithuanian (Lithuania)41
lv_LVLatvian (Latvia)42
nb_NONorwegian Bokmål (Norway)43
pt_BRPortuguese (Brazil)44
sr_RSSerbian (Cyrillic, Serbia)45
sk_SKSlovak (Slovakia)46
sl_SISlovenian (Slovenia)47
es_USSpanish (US)48
Table ENUM-07 — iReversalReason field values
Value
AUTO_REVERSAL_POWERFAILURE = 1
AUTO_REVERSAL_SIGNATURE = 2
AUTO_REVERSAL_NETWORK = 3
AUTO_REVERSAL_MACVALIDATION = 4
AUTO_REVERSAL_MESSAGEVALIDATION = 5
AUTO_REVERSAL_INVALIDRESPONSECODE = 6
AUTO_REVERSAL_POWERLINKFAILURE = 7
AUTO_REVERSAL_TRANSACTIONVOID = 8
AUTO_REVERSAL_INTERNALDEVICEFAILURE = 9
AUTO_REVERSAL_CARDREMOVED = 10
AUTO_REVERSAL_CARDDECLINED = 11
Table ENUM-08 — byPinType field values
Value
PIN_TYPE_NO_PIN = 0
PIN_TYPE_ONLINE = 1
PIN_TYPE_OFFLINE_PLAINTEXT = 2
PIN_TYPE_OFFLINE_ENCRYPTED = 3
Table ENUM-09 — byPinStatus field values
Value
PIN_NOT_PROMPTED = 0
PIN_PROMPTED_AND_CANCELLED = 1
PIN_PROMPTED_AND_TIMEDOUT = 2
PIN_PROMPTED_AND_ENTERED = 3
PIN_PROMPTED_AND_BYPASSED = 4
Endpoint (all transaction types)
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/transaction
Generic Request Example (Purchase)
{
  "Merchant": "01",
  "TxnType": "P",
  "EnableTip": 1,
  "AmtTip": 100,
  "Amount": 200,
  "TxnRef": "12345567890",
  "OrderID": "order-20260905-001",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}
Approved
Declined
{
  "SessionId": "12345678901",
  "ResponseType": "transaction",
  "Response": {
    "Transaction": {
      "ReceiptType": 1,
      "ReceiptData": "...",
      "PID": 6,
      "OrderID": "order-20260905-001",
      "Merchant": "1",
      "TxnType": "P",
      "Success": "1",
      "IdShift": 1,
      "IdShiftName": 0,
      "lAmount": 200,
      "lTipAmount": 100,
      "lCashOut": 0,
      "lCashOutFee": 0,
      "lSurChargeTax": 0,
      "lDiscount": 0,
      "lDiscountPercent": 0,
      "iReward": 0,
      "lAuthorizedTotal": 300,
      "lDonationAmount": 0,
      "iEntryMode": 7,
      "iCardType": 69,
      "iAccountType": 2,
      "iCurrencyCode": 36,
      "fsModify": 0,
      "iPaymentType": 0,
      "iCustomerLanguage": 1,
      "fClosed": 0,
      "fBatchError": 0,
      "fVoided": 0,
      "fRefunded": "0",
      "fAuthorized": "0",
      "fSignature": "0",
      "iCVVStatus": 0,
      "iMotoOrderType": 0,
      "fCanAdjust": "1",
      "fCanVoid": "1",
      "fCanPreAuthTopUp": "0",
      "fCanPreAuthComplete": "1",
      "fCanVoidPreAuthComplete": "0",
      "fCanGoOffline": "0",
      "lszCustomerReference": "12345567890",
      "Date": "20260905",
      "Time": "18:16:26",
      "szAuthorizationResponseCode": "00",
      "lszApprovalCode": "68550A",
      "szReferenceNumber": "000001007664",
      "lszSTAN": "007664",
      "lszEndCardNumber": "8770",
      "iReversalReason": 0,
      "szQRCode": "https://receipt.project-jump-start.com/PX60082420260509181626WIJLpzy.html",
      "byPinType": 1,
      "byPinStatus": 3,
      "iNoCVVOption": 0,
      "byCDCVM": 0,
      "szMaskedCardNumber": "472674******8770",
      "cardHash": "a101cd4d84c5eca7ed4b1c9617d5d0ffda37049e7b6211d7e58b146cdac7e1b4"
    }
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "transaction",
  "Response": {
    "Transaction": {
      "TxnType": "P",
      "Success": "0",
      "ResponseText": "Transaction Declined",
      "lAmount": 0,
      "lAuthorizedTotal": 0,
      "ReceiptType": 1
    }
  }
}

Response examples apply to all transaction types. Only TxnType and populated fields differ.

Transaction Types

Purchase TxnType: P

The purchase transaction type allows the merchant to perform a sale. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "P" (Purchase).
AmountlongMAmount of sale in cents. Must be greater than 0.
EnableTipboolOWhether tip entry is offered. Default disabled. See EnableTip notes.
AmtTiplongOTip amount of the sale in cents.
Request Example — Purchase
{
  "Merchant": "01",
  "TxnType": "P",
  "EnableTip": 1,
  "AmtTip": 100,
  "Amount": 200,
  "TxnRef": "12345567890",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Refund Amount TxnType: R

The refund transaction type allows the merchant to refund a sale. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "R" (Refund Amount).
AmountlongMRefund amount in cents. Must be greater than 0.
Request Example — Refund Amount
{
  "Merchant": "01",
  "TxnType": "R",
  "Amount": 1000,
  "TxnRef": "{{txnRef}}",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Cash Only TxnType: C

The cash-out transaction type allows the merchant to perform a cash-out transaction. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "C" (Cash Only).
AmountlongMCash amount in cents. Must be greater than 0.
Request Example — Cash Only
{
  "Merchant": "01",
  "TxnType": "C",
  "Amount": 10000,
  "TxnRef": "{{txnRef}}",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Purchase Cash TxnType: PC

The purchase cash transaction type allows the merchant to perform a sale and also withdraw cash. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PC" (Purchase Cash).
AmountlongMPurchase amount in cents. Must be greater than 0.
AmtCashlongMCash-out amount in cents. Must be greater than 0.
Request Example — Purchase Cash
{
  "Merchant": "01",
  "TxnType": "PC",
  "Amount": 1000,
  "AmtCash": 2000,
  "TxnRef": "{{txnRef}}",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

MOTO Purchase TxnType: MP

The MOTO Purchase transaction type allows the merchant to perform a sale with a manually entered transaction that has been generated from a mail order or a telephone order. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "MP" (MOTO Purchase).
AmountlongMAmount in cents. Must be greater than 0.
EnableTipboolOWhether tip entry is offered. Default disabled.
AmtTiplongOTip amount of the sale in cents.
Panstring(20)OCard number. If omitted, operator enters on terminal.
DateExpirystring(4)OCard expiry in MMYY format.
CVVstring(3)OCard CVV/CVC.
CardNamestring(26)OCardholder name.
Request Example — MOTO Purchase
{
  "Merchant": "01",
  "TxnType": "MP",
  "TxnRef": "{{txnRef}}",
  "EnableTip": 1,
  "AmtTip": 200,
  "Amount": 2000,
  "Pan": "6367172100001111",
  "DateExpiry": "1249",
  "CVV": "120",
  "CardName": "Paymark Test",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

MOTO Refund TxnType: MR

The MOTO Refund transaction type allows the merchant to refund a sale with a manually entered transaction. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "MR" (MOTO Refund).
AmountlongMRefund amount in cents. Must be greater than 0.
Panstring(20)OCard number.
DateExpirystring(4)OCard expiry in MMYY.
CardNamestring(26)OCardholder name.
CVVstring(3)OCard CVV.
Request Example — MOTO Refund
{
  "Merchant": "01",
  "TxnType": "MR",
  "Amount": 100,
  "TxnRef": "{{txnRef}}",
  "Pan": "6367172100001111",
  "DateExpiry": "1249",
  "CardName": "Paymark Test",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}
Pre-auth Family

Pre-auth Family — Developer Guide

Pre-auth reserves funds on the card without capturing the final amount. Most follow-up operations reference the original authorization using lszApprovalCode, RRN, and lszSTAN; unattended-only PAC uses lszApprovalCode and RRN without lszSTAN. Provide the original RRN and set lszSTAN to its last six characters when required. All pre-auth transactions use the same transaction request format and share the transaction response structure.

Typical flow
StepTxnTypeWhat it doesSource record
1PAAuthorize — reserve funds on the card.—
2aACComplete — capture the final amount.Original PA (FuncType: PreAuthInquiry)
2bPACCancel the open pre-auth — unattended mode only.Original PA (FuncType: PreAuthInquiry)
2cPTIncrement — increase the reserved amount.Original PA (FuncType: PreAuthInquiry)
2dPRReversal — reverse the open pre-auth.Original PA (FuncType: PreAuthInquiry)
2ePEExtended — extend the legacy pre-auth record.Original PA (FuncType: PreAuthInquiry)
3PDDelayed — optional adjustment after completion when extra goods/services are delivered.Original AC (FuncType: PreAuthCompleteInquiry)

Linking follow-up requests

AC, PT, PD, PE, and PR require lszApprovalCode, the original RRN, and lszSTAN set to the last six characters of the original RRN. PAC is unattended-only and requires the original RRN and lszApprovalCode; Amount and lszSTAN are not required by the current runtime.

  • Option 1 — Search Transaction: Use the original RRN and approval code as AuthId with the correct FuncType, then select the matching record from Response.Transactions[].
  • Option 2 — POS-managed: Store lszApprovalCode and szReferenceNumber (RRN) for PAC; store lszApprovalCode, lszSTAN, and szReferenceNumber for the other follow-up requests, then pass the required fields in the follow-up request.

Search Transaction ↔ Pre-auth

Use Search Transaction to list matching records on the terminal before performing a follow-up:

  • FuncType: "PreAuthInquiry" — look up an original pre-auth for Complete, Cancel, Increment, Extended, or Reversal.
  • FuncType: "PreAuthCompleteInquiry" — look up a completed pre-auth for Delayed.

FuncType is mandatory. For either pre-auth inquiry type, both RRN and AuthId are mandatory; AuthId must equal the original transaction's lszApprovalCode. Stan is optional; when supplied, use the last six characters of RRN.

Pre-auth TxnType: PA

The pre-auth transaction type allows the merchant to pre-authorize a sale. It uses the transaction request format.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PA" (Pre-auth).
AmountlongMPre-auth amount in cents. Must be greater than 0.
IsMaxAmountboolOWhen enabled, use the maximum amount configured in MaxStore for the unattended pre-auth.
MaxStore maximum amount configuration for IsMaxAmount
MaxStore maximum amount configuration — the Unattended Max Amount setting used when IsMaxAmount is enabled.

After approval

Save lszApprovalCode, lszSTAN, and szReferenceNumber (RRN) from Response.Transaction. Set lszSTAN to the last six characters of szReferenceNumber. Store these identifiers in your POS; Search Transaction uses the saved RRN and approval code (AuthId) to locate and confirm the matching record. Use PreAuthInquiry for Complete, Cancel, Increment, Extended, or Reversal, and PreAuthCompleteInquiry for Delayed. See Pre-auth Guide.

Request Example — Pre-auth
{
  "Merchant": "01",
  "TxnType": "PA",
  "Amount": 1500,
  "TxnRef": "123415890",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Pre-auth Complete TxnType: AC

The pre-auth complete transaction type allows the merchant to complete a pre-auth sale.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "AC" (Pre-auth Complete).
AmountlongMFinal charge amount in cents. Must be greater than 0.
RRNstring(12)MOriginal pre-auth retrieval reference. The last six characters are used as lszSTAN.
lszApprovalCodestringMApproval code from the original Pre-auth. Obtain via Search Transaction (FuncType: "PreAuthInquiry" with RRN and AuthId) or from the stored PA response.
lszSTANstringMLast six characters of the original RRN.

Linking to the original pre-auth

  • Option 1: Search with FuncType: "PreAuthInquiry", RRN, and AuthId; select the returned record and use its szReferenceNumber (RRN), lszApprovalCode, and lszSTAN.
  • Option 2: Pass RRN, lszApprovalCode, and lszSTAN saved from the original PA response.
Request Example — Pre-auth Complete
{
  "Merchant": "01",
  "TxnType": "AC",
  "Amount": 100,
  "RRN": "123456789012",
  "lszApprovalCode": "328958",
  "lszSTAN": "000030",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Pre-auth Cancel TxnType: PAC

Cancels an open pre-auth. This transaction type is supported through the unattended POS Integration path only.

Also uses the common transaction response structure.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PAC" (Pre-auth Cancel). Unattended mode only.
RRNstring(12)MRetrieval reference number from the original pre-auth.
lszApprovalCodestringMApproval code from the original pre-auth.
AmountlongONot required by the current runtime for PAC.
lszSTANstringONot required by the current runtime for PAC.

Linking to the original pre-auth

Obtain RRN and lszApprovalCode from the original PA response or from Search Transaction using FuncType: "PreAuthInquiry".

Request Example — Pre-auth Cancel
{
  "Merchant": "01",
  "TxnType": "PAC",
  "RRN": "123456789012",
  "lszApprovalCode": "328958"
}

Pre-auth Increment TxnType: PT

The pre-auth increment transaction type enables the merchant to increase the amount of a pre-auth sale by adding a new amount to the previous pre-auth.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PT" (Pre-auth Increment).
AmountlongMAdditional amount in cents. Must be greater than 0.
RRNstring(12)MOriginal pre-auth retrieval reference. The last six characters are used as lszSTAN.
lszApprovalCodestringMApproval code from the original Pre-auth.
lszSTANstringMLast six characters of the original RRN.

Linking to the original pre-auth

  • Option 1: Search with FuncType: "PreAuthInquiry", RRN, and AuthId; select the returned record and use its szReferenceNumber (RRN), lszApprovalCode, and lszSTAN.
  • Option 2: Pass RRN, lszApprovalCode, and lszSTAN saved from the original PA response.
Request Example — Pre-auth Increment
{
  "Merchant": "01",
  "TxnType": "PT",
  "Amount": 100,
  "RRN": "123456789012",
  "lszApprovalCode": "328958",
  "lszSTAN": "000030",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Pre-auth Delayed TxnType: PD

The pre-auth delayed transaction type is an optional message that may be sent when additional goods or services have been delivered after the final completion has been processed.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PD" (Pre-auth Delayed).
AmountlongMAmount in cents. Must be greater than 0.
RRNstring(12)MOriginal pre-auth retrieval reference. The last six characters are used as lszSTAN.
lszApprovalCodestringMApproval code from the original Pre-auth Complete (AC).
lszSTANstringMLast six characters of the original RRN.

Linking to the original pre-auth complete

  • Option 1: Search with FuncType: "PreAuthCompleteInquiry", RRN, and AuthId; select the returned completed pre-auth and use its szReferenceNumber (RRN), lszApprovalCode, and lszSTAN.
  • Option 2: Pass RRN, lszApprovalCode, and lszSTAN saved from the original AC response.

Unlike other follow-ups, Delayed references a completed pre-auth (AC), not the original authorization (PA).

Request Example — Pre-auth Delayed
{
  "Merchant": "01",
  "TxnType": "PD",
  "Amount": 100,
  "RRN": "123456789012",
  "lszApprovalCode": "328958",
  "lszSTAN": "000030",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Extended Pre-auth TxnType: PE

Extended Pre-auth extends a legacy pre-auth record. An amount is not required for PE. The original record is identified by lszApprovalCode and RRN.

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameTypeM/ODescription
TxnTypestring(3)MMust be "PE".
lszApprovalCodestringMApproval code from the original pre-auth.
RRNstring(12)MRetrieval reference number from the original pre-auth.
lszSTANstringMLast six characters of the original RRN.

Linking to the original pre-auth

  • Option 1: Search with FuncType: "PreAuthInquiry", RRN, and AuthId; select the returned record and use its szReferenceNumber (RRN), lszApprovalCode, and lszSTAN.
  • Option 2: Pass RRN, lszApprovalCode, and lszSTAN saved from the original PA response.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/transaction
Request Example — Extended Pre-auth
{
  "Merchant": "01",
  "TxnType": "PE",
  "lszApprovalCode": "328958",
  "RRN": "123456789012",
  "lszSTAN": "789012",
  "AsyncMode": "0",
  "WithReceiptImageData": "1",
  "ReceiptType": 1
}

Pre-auth Reversal TxnType: PR

Pre-auth Reversal reverses an open pre-auth. Uses POST .../transaction with TxnType: "PR".

Also uses all common request fields. Response structure is defined in Transaction Response.

Type-Specific Request Fields
Field NameType (Max Length)M/ODescription
TxnTypestring(3)MMust be "PR" (Pre-auth Reversal).
AmountlongMReversal amount in cents. Pass the amount for the reversal transaction.
RRNstring(12)MRetrieval reference number from the original Pre-auth.
lszApprovalCodestringMApproval code from the original Pre-auth (PA).
lszSTANstringMLast six characters of the original RRN.

Linking to the original pre-auth

  • Option 1: Search with FuncType: "PreAuthInquiry", RRN, and AuthId; select the returned record and use its lszApprovalCode and szReferenceNumber (RRN).
  • Option 2: Pass values saved from the original PA response.
Request Example — Pre-auth Reversal
{
  "Merchant": "01",
  "TxnType": "PR",
  "Amount": 1500,
  "lszApprovalCode": "328958",
  "RRN": "123456789012",
  "lszSTAN": "789012",
  "AsyncMode": "0"
}

Search Transaction

Search Transaction has two inquiry modes and one local-search mode. PreAuthInquiry and PreAuthCompleteInquiry send the supplied identifiers to the payment gateway to find the source pre-auth record; Reprint searches matching print jobs stored on the terminal. See Pre-auth Guide for how search fits into the pre-auth flow.

FuncType is mandatory for every search. RRN and AuthId are mandatory only for PreAuthInquiry and PreAuthCompleteInquiry; they are optional or not used for Reprint as shown below.

Request Body Fields
Field NameType (Max Length)M/ODescription
Merchantstring(2)OSpecify the merchant to execute the transaction. See Table REQ-01.
FuncTypestring(22)MType of stored records to retrieve. Controls which follow-up operations the results support — see Table ENUM-11.
TxnRefstringOOptional transaction reference filter.
RRNstring(12)M*Required as the full retrieval reference for PreAuthInquiry and PreAuthCompleteInquiry; for Reprint, use the last six characters of the stored RRN as the optional local suffix filter.
TRVstring(15)OOptional gateway filter for PreAuthInquiry and PreAuthCompleteInquiry; not used for Reprint.
AuthIdstring(6)M*Original transaction's lszApprovalCode. Required for PreAuthInquiry and PreAuthCompleteInquiry; omit for Reprint.
Stanstring(6)OOptional. Passed to the gateway for either pre-auth inquiry type; used as a database filter for Reprint.
Last4Digitsstring(4)OOptional last-four-card-digits database filter for Reprint; not used for either pre-auth inquiry type.
AuthCodestringOOptional authorization-code filter.
DatestringOAccepted in the request model but not applied by the current POS Integration runtime; it does not filter search results.
TimestringOAccepted in the request model but not applied by the current POS Integration runtime; it does not filter search results.
AmountlongOOptional amount database filter in cents for Reprint; not used for either pre-auth inquiry type.
ExAmountboolOAmount matching mode for the Reprint Amount filter; not used for either pre-auth inquiry type.
SearchAmountlongOOptional amount passed to the inquiry gateway, in cents; not used for Reprint.
IssuerRRNstring(15)OOptional issuer retrieval-reference gateway filter for either pre-auth inquiry type; not used for Reprint.
Field requirement by FuncType
FieldPreAuthInquiryPreAuthCompleteInquiryReprint
FuncTypeMMM
RRNMMO
AuthIdMMNot used
StanOOO
TRVOONot used
IssuerRRNOONot used
SearchAmountOONot used
AmountNot usedNot usedO
ExAmountNot usedNot usedO
Last4DigitsNot usedNot usedO
Table ENUM-11 — FuncType field values

Enum table — colocated with Search Transaction. Also in Table Index.

Use FuncType to select the search purpose. For example, to find the original pre-auth before a Pre-auth Complete, set FuncType to "PreAuthInquiry" and send both RRN and AuthId. For Reprint, use the last six characters of the stored RRN. Date and Time are accepted request fields but are not applied by the current POS Integration runtime.

FuncTypePurpose
PreAuthInquiryFind the original Pre-auth (PA) for Complete (AC), Cancel (PAC), Increment (PT), Reversal (PR), or Extended (PE).
PreAuthCompleteInquiryFind the completed Pre-auth (AC) for Delayed (PD).
ReprintSearch matching print jobs stored on the terminal.

* Conditional mandatory field: both RRN and AuthId are M for PreAuthInquiry and PreAuthCompleteInquiry; for Reprint, RRN is O and AuthId is not used. Date and Time are accepted request fields but are not applied by the current POS Integration runtime.

Transaction Search Response

Search uses a separate transaction-detail item model. It is not the same required-field schema as Response.Transaction: fields may be omitted depending on the search mode and stored record. A normal transaction returns one object; search returns zero or more matching records in Response.Transactions[].

Single transaction vs search

OperationResponseTypePayload shape
Purchase, Pre-auth, etc."transaction"Response.Transaction — one transaction object
Search Transaction"transactionsearch"Response.Transactions — array of transaction-detail items

Each element in Transactions[] is a matching stored transaction record. The transaction RRN is returned in szReferenceNumber when available. For a pre-auth follow-up, copy szReferenceNumber (RRN) and lszApprovalCode when present, then send lszSTAN as the last six characters of that RRN. See the search item fields and Transaction Response enum references.

Search-specific response envelope
Field NameType (Max Length)M/ODescription
SessionIdstring(36)MSessionId of the search request.
ResponseTypestring(23)MAlways "transactionsearch" (not "transaction").
TransactionsarrayMArray of transaction-detail items. May contain 0, 1, or many records. Items use the fields returned for the selected search mode; absent fields must be treated as optional.

Do not require fields such as Merchant, TxnType, OrderID, or ResponseText on every search item. Enum values shared with transaction responses are in Transaction Response → Reference — Field Enums.

Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/transactionsearch
Request Example — look up a pre-auth for Complete, Cancel, Increment, Extended, or Reversal
{
  "Merchant": "01",
  "FuncType": "PreAuthInquiry",
  "RRN": "000001013731",
  "AuthId": "328408",
  "Stan": "013731",
  "SearchAmount": 1500,
  "IssuerRRN": ""
}
Response Example — matching pre-auth
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "transactionsearch",
  "Response": {
    "Transactions": [
      {
        "Merchant": "1",
        "TxnType": "PA",
        "Success": "1",
        "lAmount": 1500,
        "lAuthorizedTotal": 1500,
        "Date": "20240405",
        "Time": "22:19:22",
        "szReferenceNumber": "000001013731",
        "lszApprovalCode": "328408",
        "lszSTAN": "013731",
        "lszEndCardNumber": "2955",
        "PID": 8
      }
    ]
  }
}

Each object in Transactions[] uses the search transaction-detail model; fields may be omitted depending on the search mode and stored record. Use szReferenceNumber (RRN), lszApprovalCode, and lszSTAN when present in the follow-up request.

Reprint Receipt

Reprints the receipt of any approved transaction.

Uses the POST .../reprint endpoint. Use FuncType: "Reprint" in Search Transaction, then submit the last six characters of the selected transaction's szReferenceNumber as the reprint request RRN.

Reprint request fields
Field NameType (Max Length)M/ODescription
Merchantstring(2)OMerchant to execute the reprint. See Table REQ-01.
RRNstring(12)MLast six characters of the stored retrieval reference number (RRN suffix), matched against the end of the stored RRN. Values shorter than six characters are rejected; the full RRN is also accepted. Native validation rejects an empty value.
WithReceiptImageDataboolORequests supplementary receipt image/signature data when generated. Receipt content is controlled by ReceiptType.
ReceiptTypeintOReceipt format. See Table REQ-02.
PlainTextCharPerLineintOPlain-text receipt width.
DisablePrintingboolOIf enabled, disable physical receipt printing.
RunInBackgroundboolOIf enabled, run the reprint without displaying the transaction flow.

Reprint request note

The public contract uses RRN and the fields listed above. For this endpoint, the supported RRN input is the last six characters of the stored RRN; the suffix identifies the stored print job, and the most recent matching print job is used. The runtime may also accept legacy compatibility fields such as PID, Application, ReceiptAutoPrint, CutReceipt, ReprintType, OriginalTxnRef, Type, lszApprovalCode, and lszSTAN; these are not required by this contract.

Reprint response fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "reprint".
ResponseCodestringONative response/result code when supplied by the print-job record.
MerchantnumberMMerchant identifier.
SuccessboolMWhether the operation succeeded.
ResponseTextstringOTransaction result text returned by the original host when supplied. It describes the original transaction, not the reprint operation (for example "APPROVED"; code 08 may produce "HONOUR WITH IDENTIFICATION").
ReceiptDatastringOReceipt content when returned.
ReceiptLogostringOBase64-encoded receipt logo when returned.
DigitalSigstringODigital signature data when returned.
ReceiptTypeintMReceipt format returned.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/reprint
Request Example
{
  "Merchant": "01",
  "RRN": "789012",
  "ReceiptType": 1,
  "WithReceiptImageData": true
}
Response Example (Success)
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "reprint",
  "Response": { "Merchant": 1, "Success": true, "ResponseText": "APPROVED", "ReceiptData": "...", "ReceiptType": 1 }
}

ResponseText is the original transaction result; it is not a reprint-status message.

Card Verification

Verifies the validity of a card without performing a financial transaction. The cardholder presents or inserts/taps their card; the terminal returns card details and authorization status.

Request Body Fields
PropertyTypeM/ODescription
Merchantstring(2)OSpecify the merchant to execute the transaction. See Table REQ-01.
ReceiptTypeintOReceipt format. See Table REQ-02.
WithReceiptImageDataboolORequests supplementary receipt image/signature data when generated. Receipt content is controlled by ReceiptType.
DisablePrintingboolOIf enabled, disable receipt printing.
Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "querycard".
SuccessboolMWhether the transaction is approved (true) or declined (false).
ResponseTextstringMResponse description.
CardTypeuintOCard type code.
CardNamestringOCardholder name.
AccountTypestring(2)OAccount type.
Panstring(32)OMasked card number.
AuthCodestring(6)OAuthorization code.
EntryModeuintOEntry mode. See Table ENUM-04.
ReceiptDatastringOContains the receipt data of the transaction.
ReceiptLogostringOContains the logo to be printed on the receipt.
ReceiptTypeintMReceipt format returned. See Table RES-01.
cardHashstringOHash of the presented card number when the card is read successfully.

EntryMode values — see Table ENUM-04 under Transaction → Field Enums.

Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/querycard
Request Example
{
  "Merchant": "01",
  "ReceiptType": 1
}
Approved
Declined
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "querycard",
  "Response": {
    "ReceiptType": 1,
    "ReceiptData": "...",
    "Success": "1",
    "ResponseText": "APPROVED",
    "AccountType": "2",
    "Pan": "472674******8770",
    "CardType": 69,
    "EntryMode": 12,
    "AuthCode": "69074A",
    "cardHash": "a101cd4d84c5eca7ed4b1c9617d5d0ffda37049e7b6211d7e58b146cdac7e1b4"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "querycard",
  "Response": {
    "Success": "0",
    "ResponseText": "Declined",
    "ReceiptType": 1
  }
}

Card Enquiry

Reads the presented card and returns a card hash without performing a financial transaction. This operation is available through both the POS interface and unattended mode.

Request Body Fields
PropertyTypeM/ODescription
Merchantstring(2)OSpecify the merchant for the card enquiry. See Table REQ-01.
Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "cardenquiry".
ResponseTextstringMResponse description.
SuccessboolMWhether the card enquiry succeeded.
cardHashstringOHash of the presented card number when the card is read successfully.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/cardenquiry
Request Example
{
  "Merchant": "01"
}
Response Example
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "cardenquiry",
  "Response": {
    "Success": true,
    "ResponseText": "APPROVED",
    "cardHash": "..."
  }
}

Scan Code

Scans a QR code or barcode using the terminal scanner. This operation is available through both the POS interface and unattended mode.

Request Body Fields
PropertyTypeM/ODescription
CodeTypestringORequested code format: QrCode, Barcode, or AutoDetect (case-insensitive). Omit or send empty for AutoDetect.
TimeoutintOScanner timeout in seconds. Omit or send 0 to use the default of 60 seconds. Negative values are rejected as invalid request data.
FlashOnboolOWhether to enable the scanner light.
Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "scancode".
SuccessboolMWhether a code was scanned successfully.
ResponseTextstringOResponse description when supplied.
CodeTypestringMDetected code format; defaults to AutoDetect when no type is returned by the scanner.
CodeValuestringOScanned code value when successful.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/scancode
Request Example
{
  "CodeType": "QrCode",
  "Timeout": 30,
  "FlashOn": true
}
Response Example
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "scancode",
  "Response": {
    "Success": true,
    "ResponseText": "Scan successful",
    "CodeType": "QrCode",
    "CodeValue": "..."
  }
}

Settlement Enquiry

Settlement Enquiry retrieves current settlement subtotals without performing a settlement cutover.

Settlement Enquiry and Settlement Cutover share the same POST .../settlement endpoint, request body, and response model. The operation is selected by SettlementType.

Enquiry vs Cutover

OperationSettlementTypeRequest / response
Current settlement enquiry"E"Current settlement totals
Last-settlement enquiry"R"Last-settlement totals
Settlement Cutover"C"Batch cutover
Settlement request fields (shared)
PropertyTypeM/ODescription
Merchantstring(2)OSpecify the merchant to execute the transaction. See Table REQ-01.
SettlementTypestring(1)MEnquiry: "E" = current enquiry, "R" = last-settlement enquiry. Cutover: "C".
Applicationstring(2)OApplication identifier.
ReceiptAutoPrintstring(1)OReceipt auto-print control.
CutReceiptstring(1)OReceipt cut control.
ResetTotalsstring(1)OReset totals control.
AccessCodestring(8)O/MAccess code when settlement access-code management is enabled.
ReceiptTypeintOReceipt format. See Table REQ-02.
WithReceiptImageDataboolORequests supplementary receipt image/signature data when generated. Receipt content is controlled by ReceiptType.
PlainTextCharPerLineintOPlain-text receipt width.
DisablePrintingboolODisable receipt printing.

SettlementType selects the current enquiry ("E"), last-settlement enquiry ("R"), or cutover ("C"). Nuvei does not support settlement enquiry by date.

Settlement response fields (shared)

Identical response structure for Enquiry and Cutover — ResponseType is always "settlement".

PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "settlement".
ResponseCodestringONative response/result code when supplied by the settlement record.
SuccessboolMWhether the transaction is approved (true) or declined (false).
ResponseTextstringOText of response. Commonly occurs when a transaction is declined.
MerchantnumberMMerchant identifier.
ReceiptTypeintOReturned receipt format.
ReceiptDatastringOSettlement receipt data.
ReceiptLogostringOReceipt logo.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/settlement
Request Example
{
  "Merchant": "01",
  "SettlementType": "E",
  "ReceiptType": 1,
  "WithReceiptImageData": true,
  "DisablePrinting": false
}
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "settlement",
  "Response": {
    "Merchant": 1,
     "Success": true,
     "ReceiptType": 1,
     "ReceiptData": "..."
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "settlement",
  "Response": {
    "Merchant": 1,
     "Success": false,
     "ResponseText": "Transaction Cancelled",
     "ReceiptType": 1
  }
}

Settlement Cutover

Performs the end-of-day settlement cutover, closing the current batch and reconciling totals with the host.

Uses the same POST .../settlement endpoint and models as Settlement Enquiry. Set SettlementType to "C".

Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/settlement
Request Example
{
  "Merchant": "01",
  "SettlementType": "C",
  "ReceiptType": 1,
  "WithReceiptImageData": true,
  "DisablePrinting": false
}
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "settlement",
  "Response": {
    "Merchant": 1,
    "Success": true,
    "ReceiptData": "...",
    "ReceiptType": 1
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "settlement",
  "Response": {
    "Merchant": 1,
    "Success": false,
    "ResponseText": "Cannot Complete",
    "ReceiptType": 1
  }
}

Manual Host Logon

Initiates a manual host logon. It can be used at the start of the business day or after a network issue. Transaction flows normally attempt host logon automatically when required; this endpoint remains available for an operator-initiated logon.

Request Body Fields
PropertyTypeM/ODescription
Merchantstring(2)OMerchant identifier.
Applicationstring(2)OApplication identifier.
ReceiptAutoPrintstring(1)OReceipt auto-print control.
CutReceiptstring(1)OReceipt cut control.
LogonTypestring(2)OLogon operation type.
PurchaseAnalysisDatastringOPurchase analysis data for the logon request.
Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "logon".
SuccessboolMWhether the operation succeeded (true) or failed (false).
ResponseTextstringOError description on failure.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/logon
Request Example
{
  "Merchant": "01"
}
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "logon",
  "Response": {
    "Success": "1"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "logon",
  "Response": {
    "Success": "0",
    "ResponseText": "LOGON FAILED\nTRANSMISSION ERROR"
  }
}

Cancel Transaction

Requests cancellation of a transaction that is currently in progress on the terminal. The sessionId in the URL must match the sessionId of the transaction you want to cancel.

If the transaction has already passed the point of no return (e.g. processing at the host), the cancellation will be declined. If no active transaction is associated with the session, the terminal may still return HTTP 200 with Success: false, for example ResponseText: "Invalid Session ID".

Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the transaction being canceled.
ResponseTypestringMAlways "canceltransaction".
SuccessboolMTrue = cancellation request accepted; false = cancellation declined.
ResponseTextstringMResponse description.
Endpoint
GET/POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/canceltransaction
No request body required
Cancellation accepted
Declined
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "canceltransaction",
  "Response": {
    "Success": "1",
    "ResponseText": "The transaction is being canceled"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "canceltransaction",
  "Response": {
    "Success": "0",
    "ResponseText": "Invalid Session ID"
  }
}

Query Transaction

Polls the current status of a transaction initiated in async mode. The sessionId in the URL must match the original transaction's sessionId.

When Status = 11 (WaitingForSignatureConfirmationFromClient) and DigitalSig is present in the response, call Approve Signature with the same sessionId — see Table ENUM-12.

If there is no transaction associated with the supplied session, the terminal can return HTTP 403 with an error envelope, such as ErrMessage: "no transactions found" or "Not allowed".

Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the transaction.
ResponseTypestringMAlways "querytransaction".
StatusintMTransaction status code. Possible values are listed in Table ENUM-12.
StatusTextstringOText of status of transaction when supplied. See Table ENUM-12.
TerminalIDstringOIdentifier of the payment terminal that is processing the transaction. Returned at the top level of Response when available.
IsCancelableboolOWhether the current async flow can be canceled at this stage. Serialized as "1"/"0" or true/false according to TMS Boolean Type.
PrinterStatusstringOPrinter state text returned by the terminal when available (for example out-of-paper / ready).
TransactionobjectOReturned as an object when the status equals 1 (TransactionCompleted); read the gateway RRN from Transaction.szReferenceNumber. It can be null while the transaction is pending — see Table ENUM-12.
Endpoint
GET https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/querytransaction
No request body required
Completed
In Progress
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "querytransaction",
  "Response": {
    "Status": 1,
    "StatusText": "Transaction completed",
    "IsCancelable": "0",
    "TerminalID": "PX600821",
    "PrinterStatus": "Printer Ready",
    "Transaction": {
      "ReceiptType": 0,
      "PID": 5,
      "OrderID": "order-20260905-001",
      "Merchant": "1",
      "TxnType": "P",
      "Success": "1",
      "IdShift": 1,
      "IdShiftName": 0,
      "lAmount": 1000,
      "lTipAmount": 0,
      "lCashOut": 0,
      "lCashOutFee": 0,
      "lSurChargeTax": 0,
      "lDiscount": 0,
      "lDiscountPercent": 0,
      "iReward": 0,
      "lAuthorizedTotal": 1000,
      "lDonationAmount": 0,
      "iEntryMode": 7,
      "iCardType": 69,
      "iAccountType": 2,
      "iCurrencyCode": 36,
      "fsModify": 0,
      "iPaymentType": 0,
      "iCustomerLanguage": 1,
      "fClosed": 0,
      "fBatchError": 0,
      "fVoided": 0,
      "fRefunded": "0",
      "fAuthorized": "0",
      "fSignature": "0",
      "iCVVStatus": 0,
      "iMotoOrderType": 0,
      "fCanAdjust": "1",
      "fCanVoid": "1",
      "fCanPreAuthTopUp": "0",
      "fCanPreAuthComplete": "1",
      "fCanVoidPreAuthComplete": "0",
      "fCanGoOffline": "0",
      "lszCustomerReference": "1234567890",
      "Date": "20260905",
      "Time": "18:04:22",
      "szAuthorizationResponseCode": "00",
      "lszApprovalCode": "68549A",
      "szReferenceNumber": "000001007663",
      "lszSTAN": "007663",
      "lszEndCardNumber": "8770",
      "iReversalReason": 0,
      "szQRCode": "https://receipt.project-jump-start.com/example.html",
      "byPinType": 1,
      "byPinStatus": 3,
      "iNoCVVOption": 0,
      "byCDCVM": 0,
      "szMaskedCardNumber": "472674******8770",
      "cardHash": "a101cd4d84c5eca7ed4b1c9617d5d0ffda37049e7b6211d7e58b146cdac7e1b4"
    }
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "querytransaction",
  "Response": {
    "Status": 12,
    "StatusText": "Getting signature from customer",
    "IsCancelable": false,
    "TerminalID": "PX600821"
  }
}

Query Stored Transaction

Retrieves a previously stored transaction result from the terminal database. Optionally use OrderID in the request body to select an exact stored record. Use the same OrderID on the original request and the lookup request when an exact stored record is required.

On success, the response contains a full Transaction object — same field model as Transaction Response.

Request Body Fields
Field NameType (Max Length)M/ODescription
OrderIDstring(51)OOptional order identifier. The current native buffer reserves 52 bytes including the terminator, so 51 data characters are the safe maximum. When supplied, it identifies the stored transaction and should match the original transaction request. When omitted, the terminal may still return a stored transaction and the response may omit OrderID.
ReceiptTypeintOReceipt format for returned receipt data. See Table REQ-02.
PlainTextCharPerLineintOPlain-text receipt width when plain-text receipt output is requested.
Response

Same envelope as a financial transaction — Response.Transaction uses the field model in Transaction Response. The response type is "querytransaction". If no matching record exists, the terminal returns HTTP 400 with ErrMessage: "Transaction Not Found".

Not-found response
{"SessionId":"2174267867","ResponseType":"querytransaction","Response":{"ErrMessage":"Transaction Not Found","Suggestion":"","StatusCode":"400"}}
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/querystoredtransaction
Request Example
{
  "OrderID": "order-20260908-001",
  "ReceiptType": 1,
  "PlainTextCharPerLine": 32
}
Request Example — without OrderID
{
  "ReceiptType": 1,
  "PlainTextCharPerLine": 32
}

When OrderID is omitted, the terminal may still return a stored transaction and the response may omit OrderID. Include OrderID when an exact stored-record identifier is available.

Response Example — OrderID supplied
{
  "SessionId": "2174267867",
  "ResponseType": "querytransaction",
  "Response": {
    "Transaction": {
      "ReceiptType": 0,
      "PID": 3,
      "OrderID": "order-20260908-001",
      "Merchant": "1",
      "TxnType": "P",
      "Success": true,
      "IdShift": 1,
      "IdShiftName": 0,
      "lAmount": 21000,
      "lTipAmount": 0,
      "lCashOut": 0,
      "lCashOutFee": 0,
      "lSurChargeTax": 0,
      "lDiscount": 0,
      "lDiscountPercent": 0,
      "iReward": 0,
      "lAuthorizedTotal": 21000,
      "lDonationAmount": 0,
      "iEntryMode": 10,
      "iCardType": 70,
      "iAccountType": 2,
      "iCurrencyCode": 36,
      "fsModify": 0,
      "iPaymentType": 0,
      "iCustomerLanguage": 1,
      "fClosed": false,
      "fBatchError": false,
      "fVoided": false,
      "fRefunded": false,
      "fAuthorized": false,
      "fSignature": false,
      "iCVVStatus": 0,
      "iMotoOrderType": 0,
      "fCanAdjust": true,
      "fCanVoid": true,
      "fCanPreAuthTopUp": false,
      "fCanPreAuthComplete": true,
      "fCanVoidPreAuthComplete": false,
      "fCanGoOffline": false,
      "lszCustomerReference": "1234567890",
      "Date": "20260908",
      "Time": "13:09:58",
      "szAuthorizationResponseCode": "00",
      "lszApprovalCode": "656838",
      "szReferenceNumber": "000001014766",
      "lszSTAN": "014766",
      "lszEndCardNumber": "0708",
      "iReversalReason": 0,
      "szQRCode": "https://receipt.project-jump-start.com/PX60081220260809130958BwB9vgX.html",
      "byPinType": 1,
      "byPinStatus": 3,
      "iNoCVVOption": 0,
      "byCDCVM": 1,
      "szMaskedCardNumber": "550024******0708",
      "cardHash": "9b6d06dde0a15bf572587dccaed54f0b6023827a8a6b3410d7096f42af52a71f"
    }
  }
}

The successful stored-transaction example above uses JSON boolean mode (true). The completed Query Transaction example uses string mode ("1"); these examples are shown with different TMS Boolean Type representations. This is not an endpoint-specific difference: Success and other boolean fields follow the terminal's configured encoding across both endpoints. Clients must use and parse the encoding configured in TMS.

Approve Signature

This function lets the POS client submit the merchant's approve/reject decision for a signature-required transaction, provided that AsyncMode is enabled. Call this endpoint when querytransaction returns Status = 11 (WaitingForSignatureConfirmationFromClient) with a DigitalSig field — see Table ENUM-12.

Flow: POS submits transaction (AsyncMode enabled) → polls querytransaction → when Status=11 and DigitalSig present, call approvesignature (same sessionId) with Approval approve/reject → continue polling until Status=1.

Request Body Fields
PropertyTypeM/ODescription
ApprovalboolMTrue = approve the signature; false = reject the signature.
Response Fields
PropertyTypeM/ODescription
SessionIdstring(36)MSessionId of the request.
ResponseTypestringMAlways "approvesignature".
SuccessboolMTrue = updated; false = failed.
ResponseTextstring(30)OResponse description when supplied.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/approvesignature
Request Example
{
  "Approval": "1"
}
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "approvesignature",
  "Response": {
    "Success": "1",
    "ResponseText": "Update Successfully"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "approvesignature",
  "Response": {
    "Success": "0",
    "ResponseText": "Update Failed"
  }
}

Shift Totals

Returns the shift-total result.

FieldTypeM/ODescription
Merchantstring(2)OMerchant identifier.
IsStartNewShiftboolOWhether to start a new shift.
SuccessboolMWhether the operation succeeded.
ResponseTextstringMOperation result text.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/shiftTotals
Request Example — print current shift
{
  "Merchant": "01",
  "IsStartNewShift": false
}

Set IsStartNewShift to true to start a new shift.

Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "shiftTotals",
  "Response": {
    "Success": true,
    "ResponseText": "Transaction Successful"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "shiftTotals",
  "Response": {
    "Success": false,
    "ResponseText": "Transaction Cancelled"
  }
}

Voucher Entry

Starts the voucher-entry operation.

FieldTypeM/ODescription
Merchantstring(2)OMerchant identifier.
ReceiptTypeintOReceipt output mode. The POS client defaults to 2 (plain text).
PlainTextCharPerLineintONumber of characters per line when plain-text receipt output is requested. The POS client default is 30.
DisablePrintingboolOWhether receipt printing is disabled.
SuccessboolMWhether the operation succeeded.
ResponseTextstringMOperation result text.
TransmissionDatestringOTransmission date when returned.
TransmissionTimestringOTransmission time when returned.
ReceiptDatastringOReceipt data when returned.
ReceiptLogostringOReceipt logo when returned.
DigitalSigstringODigital signature when returned.
Endpoint
POST https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/voucherEntry
Request Example
{
  "Merchant": "01",
  "ReceiptType": 2,
  "PlainTextCharPerLine": 30,
  "DisablePrinting": false
}
Success
Failed
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "voucherEntry",
  "Response": {
    "Success": "1",
    "ResponseText": "No Offline Trans To Upload",
    "TransmissionDate": "20260907",
    "TransmissionTime": "18:06:51"
  }
}
{
  "SessionId": "{{sessionId}}",
  "ResponseType": "voucherEntry",
  "Response": {
    "Success": false,
    "ResponseText": "Upload Failed",
    "TransmissionDate": "20240806",
    "TransmissionTime": "09:30:00"
  }
}

Device mode

Device-mode indicates whether the client and payment app run on the same device.

ValueDescription
onSame device
offSeparate devices

The device-mode query parameter is optional and applies to all API endpoints that end with /transaction. If you don't include it in the request URL, the system assumes device-mode=off by default, meaning the client and the payment app run on separate devices.

Device-mode API request

A device-mode request looks like this.

https://{{pos-server}}:{{pos-port}}/v1/sessions/{{sessionId}}/transaction?device-mode=on

Reference Table Index

All lookup tables use a consistent ID format — not the legacy Word section numbers. Prefix indicates the table group; the number is sequential within that group.

Placement rule: REQ / RES tables and the main ENUM set live under Transaction. ENUM tables for a single endpoint may sit next to that endpoint — the ENUM prefix still applies because the content is a value list.

Transaction — request field logic
TableTitleUsed by
REQ-01Merchant field logicMerchant on transaction and other requests
REQ-02ReceiptType field logic (request)ReceiptType request field
REQ-03Print OptionCustomerReceiptPrintOption, MerchantReceiptPrintOption
Transaction — response field logic
TableTitleUsed by
RES-01ReceiptType field logic (response)ReceiptType in transaction/search responses
Transaction — field enums
TableTitleField
ENUM-01fsModify field valuesfsModify
ENUM-02iAccountType field valuesiAccountType
ENUM-03iCardType field valuesiCardType
ENUM-04EntryMode / iEntryMode field valuesiEntryMode, Card Verification EntryMode
ENUM-05iPaymentType field valuesiPaymentType
ENUM-06iCustomerLanguage field valuesiCustomerLanguage
ENUM-07iReversalReason field valuesiReversalReason
ENUM-08byPinType field valuesbyPinType
ENUM-09byPinStatus field valuesbyPinStatus
ENUM-10Mode field valuesGet Merchant List → Mode
ENUM-11FuncType field valuesSearch Transaction → FuncType
ENUM-12Status and StatusText field valuesSync vs Async, Query Transaction

Changelog

Version history for the POS Integration API specification.

QA_1.3.342026/10/27by Huy Nguyen
CHANGEDPrint the merchant signature copy when a paper signature is required, even if DisablePrinting is enabled.CHANGEDAsk for the MOTO password before manual card entry on the terminal when the MOTO password is enabled.CHANGEDReject a transaction type disabled for the merchant, and manual card entry when MOTO is disabled, with "This Feature Is Not Available".CHANGEDAn omitted CustomerReceiptPrintOption or MerchantReceiptPrintOption follows the terminal receipt configuration.
QA_1.3.302026/09/29by Huy Nguyen
CHANGEDAdd optional TerminalID to querytransaction responses, including completed and pending signature-status responses.
QA_1.3.292026/09/08by Lien Le
CHANGEDUpdate the specification to QA_1.3.29 and align transaction RRN, response, search, and reprint guidance.
QA_1.3.262026/08/22by Lien Le
NEWAdd Card Enquiry (cardenquiry) and Scan Code (scancode) endpoints for POS interface and unattended mode, with their request and response fields.NEWAdd unattended-only Pre-auth Cancel (PAC) with original RRN and approval-code linking.CHANGEDAdd IsMaxAmount to Pre-auth; the flag uses the maximum amount configured in MaxStore for unattended mode.CHANGEDAdd RunInBackground to Reprint.
QA_1.3.252026/08/07by Lien Le
CHANGEDAlign the API reference with the request/response fields, receipt controls, and logon request.CHANGEDAlign user-facing function names, including Pre-auth Increment, Refund Amount, Cash Only, Card Verification, and Query Stored Transaction.REMOVEDRemove the pre-auth-specific reprint entry; retain Reprint Receipt only.CHANGEDDocument native Search Transaction filters: TxnRef, AuthCode, Date, and Time.
QA_1.3.242026/07/23by Lien Le
NEWPort the legacy POS Integration endpoint and field reference.