Sale

Cortina Prepaid uses the Salecommand to notify the integrator about the result of a card tap after a product has been selected in order to initiate the authorization process with the Cortina payment provider.

This command is essential for proceeding to transaction confirmation or rejection handling.

Request

Nayax's servers send a POST request to your configured Saleendpoint, which would be of the following format:

(customer's URL)/Cortina/PrePaid/Sale

The payload includes the full result of the card scan operation:

{
"BasicInfo": {
"TransactionId": 2.3658433596983443e+35,
"NayaxTransactionId": 0,
"Amount": 0.1,
"CurrencyCode": "USD",
"CurrencyNumeric": 376,
"SiteId": 12,
"MachineAuTime": "string",
"TimeoutMS": 15000,
"IsProductSelected": true
},
"DeviceInfo": {
"HwSerial": "string",
"FWVersion": "string",
"Type": "ONYX"
},
"MachineInfo": {
"Id": 869761713,
"Name": "TestPayStaticQR V2",
"TerminalId": 987654321,
"DecimalPlace": 2,
"Offset": 2,
"GroupId": "Beverages",
"OperatorId": 12345,
"Region": "string",
"City": "string",
"ZipCode": 10001,
"Type": "Food",
"Country": {
"Name": "United States of America",
"NumericCode": 840,
"Alpha2Code": "US",
"Alpha3Code": "USA"
},
"GeoLocation": {
"State": "string",
"City": "string",
"CountryCode": "string",
"ZipCode": "string",
"Address": "string",
"Longitude": 34.998819,
"Latitude": 32.8198988
}
},
"ActorInfo": {
"Id": 2001102296,
"Name": "Far East Dev Zone",
"OperatorId": 2000305191,
"OperatorName": "TanyaT_OP",
"MerchantId": 10011,
"Country": {
"Name": "string",
"NumericCode": "string",
"Alpha2Code": "string",
"Alpha3Code": "string"
},
"GeoLocation": {
"State": "string",
"City": "string",
"CountryCode": "string",
"ZipCode": "string",
"Address": "string",
"Longitude": 34.998819,
"Latitude": 32.8198988
}
},
"CustomData": {
"DirectActor": 12312312,
"Operator": 123121434134,
"Distributor": "superDistributor",
"Actor": 12312312,
"Machine": 131231348
},
"CardData": {
"CardNumber": "string",
"EntryMode": "string",
"ExpYear": "string",
"ExpMonth": "string",
"EMVData": "string",
"IDNumber": "string",
"RandomNumber": "string",
"BrandInfo": {
"PrimaryId": "string",
"PrimaryDescription": "string",
"SecondaryId": "string",
"SecondaryDescription": "string"
},
"CardHolderName": "Test Card Holder"
},
"PaymentInfo": {
"SrvTranId": 2.3658433596983443e+35,
"AuthCode": 333333,
"AuthAmount": 0.1,
"SettAmount": 0.1,
"RRN": 111111,
"Token": "string",
"AuthDateTime": 230221101008,
"SettDateTime": 230221101009,
"TraceNumber": 4444,
"AuthSource": 555555,
"AdditionalData": "string",
"IsGatewayTimeout": true
},
"Products": [
{
"Code": 11,
"Name": "Stella",
"Price": 0.1,
"UnitOfMeasurement": "USD",
"Measurement": false
},
{
"Code": 12,
"Name": "expensiveSprite",
"Price": 6,
"UnitOfMeasurement": "USD",
"Measurement": false
}
]
}

Request Parameters

The following table describes the parameters included in the request body:

Reference Fields
FieldTypeDescription
Transaction Status & Core Identifiers
VerdictString

The final status of the request. Must be one of the constant string values:

  • Approved
  • Declined
CodeInt(32)

The Decline Code. Conditional—only present if Verdict is 'Declined'. Valid decline codes include:

  • 1: Insufficient funds
  • 5: Suspected Fraud
  • 6: General system failure
  • 997: Missing mandatory parameters
  • 999: General exception
  • See full documentation for complete list of codes.
StatusMessageString(255)

A free text field containing the transaction status message or additional varying data regarding the outcome.

TransactionIdString(36)

The unique identifier for this transaction.

  • Echoes the encrypted ID from /StartSession if used.
  • Otherwise, the Nayax Engine generates the value.
NayaxTransactionIdInt(64)

The Nayax internal unique ID for the transaction, echoed in further requests.

SrvTranIdString

The Integrator's internal transaction ID.

  • Conditional: Only mandatory if /StartSession was not used.
  • If used, it should be empty or echo the Transaction ID.
RRNString

Reference Retrieval Number. External transaction ID for third parties. Highly recommended to be visible to the consumer/card holder.

TokenString(256)

A unique transaction token. For Nayax internal use only.

TraceNumberString

The Trace number. For Nayax internal use only.

AuthSourceString(5)

For Nayax internal use only.

InitiateTranReferenceInt(64)

Conditional: Reflects the original Nayax Transaction ID for prepaid loyalty card re-attempts.

Financial Details, Card Information, & Timestamps
AmountDouble

The payment amount (Decimal with max 3 digits for cents).

  • Example: 1 cent = 0.01.
  • Currencies with no decimal places (e.g., JYN) are still represented as a double (e.g., 234.0).
AuthAmountDouble

The original amount requested in the /SaleRequest. Conditional on /Sale Response.

SettAmountDouble

The original amount requested in the /SaleRequest. Conditional on /Sale Response.

AuthCodeString(40)

External Authorization Code (usually from the Card Issuer's bank).

CurrencyCodeString(3)

Currency code in ISO 4217 Alpha-3 format.

CurrencyNumericString(3)

Currency code in ISO 4217 Numeric-3 format.

AuthDateTimeString

The date and time the /Sale took place. Format:ddMMyyHHmmss. Conditional on /Sale Response.

SettDateTimeDouble

The Settlement Date/Time. Conditional on /Sale Response.

CardNumberString

Card details provided based on transaction type:

  • Full Track 2 for card-present Authorization/Sale.
  • Card PAN only for other transaction types (e.g., Refund, Settlement).
EntryModeString(4)

How the card details were read. Common values:

  • MCR: Magnetic Stripe Read
  • CON: Contact Chip (insert)
  • CLS: Contactless Chip (tap)
  • NFC: Phone/Mobile contactless
  • QR: QR code read
ExpYearString

Card expiration year (YY format). Conditional (only when Interface is 1 or 10).

ExpMonthString

Card expiration month (MM format). Conditional (only when Interface is 1 or 10).

EMVDataString

EMV tags data in TLV (Tag-Length-Value) format.

CVV2String

Card Verification Value 2 (CVV2).

IDNumberString

Cardholder ID Number.

RandomNumberString

Further information is unavailable.

PrimaryIdString

Primary Brand ID.

PrimaryDescriptionString

Primary Brand Description.

SecondaryIdString

Secondary Brand ID.

SecondaryDescriptionString

Secondary Brand Description.

CardHolderNameString

Card Holder Name.

IsDebitCardBool

Indication if card is Debit or Prepaid.

IsGatewayTimeoutBool

Indicates if a gateway timeout occurred (valid in the response).

ProviderExternalDataString

External data from the provider in JSON format string.

IsRevalueCardBool

Indication if card is allowed revalue.

Product & Item Details
CodeInt(16)

Code of the selected item as defined in the Nayax back office or vending machine.

CatalogProductIdString(100)

External unique identifier of the selected item (the product catalog number).

NammeString(255)

Product name as defined in Nayax's back office.

PriceDouble

The original Product Price in the machine's currency. Note: The transaction amount is the billing price after adjustments.

UnitOfMeasurementString(64)

Product's unit of measurement (e.g., 'unit' or 'Liter').

MeasurementDouble

Product's quantity in the unit of measurement.

GroupString(255)

Product's group name as existing in the product map.

ProductGroupIdString(255)

Product's group code as existing in the product map.

PulseLineNumberInt(32)

Used to support multiple machines via pulse for remote vend capability. Must be a positive integer $(\ge 0)$.

Machine & Actor Information
SiteIdInt(16)

Region of the Nayax server.

MachineAuTimeString

Machine Authorization Timestamp.

TimeoutMSInt(32)

Nayax Server Timeout configuration in milliseconds.

IsProductSelectedBool

Indication if the product was pre-selected.

PaymentMethodIDInt(32)

Nayax identifier of the payment provider.

BillingProviderIdInt(32)

Nayax identifier of the billing provider.

AuditNumberInt(64)

For Nayax internal use only.

IsDeferredAuthorizationBool

Further information is unavailable.

AgeLimitationInt(16)

Minimum age required to allow the transaction.

IsSoftDeclineCompletionBool

Further information is unavailable.

TransitTransactionTypeInt(32)

The Transit Transaction Type (Enum values):

  • 1: Prefunded
  • 2: Realtime Authorization
  • 3: Post-Authorization / Aggregated Transaction
  • 7: Debt Recovery
DenyListIndicationInt(32)

Indicates the effect on the consumer's Deny List status (Enum values):

  • 0: Unknown/no effect
  • 1: Decline causes consumer to be added to the deny list.
  • 2: Approval causes consumer to be removed from the deny list.
HwSerialString

Nayax Device Hardware serial number.

FWVersionString

Device Firmware version.

TypeString

Nayax Device Type.

IdInt(64)

Machine entity unique ID.

NameString(255)

Machine Name.

ExternalIdString(200)

Machine External ID (Machine number - operator).

TypeString(50)

Machine Type.

TerminalIdString(255)

Terminal identifier. Contact Nayax TPOC to define.

DecimalPlaceInt(64)

Decimal point location for amounts.

  • Example: 2 means amounts like 123.45.
OffsetString(255)

UTC timezone offset.

GroupIdString

For Nayax internal use only.

OperatorIdString(255)

Merchant ID (String format).

RegionString(255)

Machine Region.

CityString(255)

Machine City.

ZipCodeString(255)

Machine Zip Code.

NameString

Country Full Name (for machine location).

NumericCodeString(3)

ISO-3166-1 Numeric-3 code.

Alpha2CodeString(2)

ISO-3166-1 Alpha-2 code.

Alpha3CodeString(3)

ISO-3166-1 Alpha-3 code.

IntraString

The Intra Region (geographical diversification across countries).

StateString

Actor geo state code.

CityString(255)

Actor geo City.

CountryCodeString

Actor geo Country code (ISO3).

ZipCodeString(255)

Actor geo Zip code.

AddressString(255)

Actor geo Address.

LatitudeString

Machine Location Latitude.

LongitudeString

Machine Location Longitude.

IdInt(64)

Actor ID.

NameString(255)

Direct Merchant name.

OperatorIdInt(64)

Merchant operator ID (Integer format).

OperatorNameString

Merchant operator name.

MerchantIdInt(64)

Merchant ID. Contact Nayax TPOC to define.

DynamicURLString

Actor level URL configuration.

MCCInt(32)

Merchant Category Code (MCC), classifying the business type.

SubMerchantIdString(255)

Sub Merchant identifier. Contact Nayax TPOC to define.

DirectActorString

Direct actor custom data (String in JSON format).

OperatorString

Operator custom data (String in JSON format).

DistributorString

Distributor custom data (String in JSON format).

ActorString

Actor custom data (String in JSON format).

MachineString

Machine custom data (String in JSON format).

SoftDeclineString

Soft Decline custom data (String in JSON format).

Response

The Sale Response that the customer's payment method would send to Nayax's servers.
The payload should look as follows:

{
  "Status": {
    "Verdict": "Approved",
    "Code": 0,
    "StatusMessage": "string"
  },
  "PaymentInfo": {
    "SrvTranId": 2.3658433596983443e+35,
    "AuthCode": 333333,
    "AuthAmount": 0.1,
    "SettAmount": 0.1,
    "RRN": 111111,
    "Token": "string",
    "AuthDateTime": 230221101008,
    "SettDateTime": 230221101009,
    "TraceNumber": 4444,
    "AuthSource": 555555,
    "AdditionalData": "string",
    "IsGatewayTimeout": true
  },
  "Balance": {
    "RegularCreditType": 0,
    "RegularCredit": 0,
    "RevalueCredit": 0
  }
}

Response Parameters

The following table describes the fields returned in the API response:

Reference Fields
FieldTypeDescription
VerdictString

The final status of the request. Must be one of the constant string values:

  • Approved
  • Declined
CodeInt(32)

The Decline Code. Conditional—only present if Verdict is 'Declined'. Common codes include:

  • 1: Insufficient funds
  • 5: Suspected Fraud
  • 6: General system failure
  • 7: Invalid amount
  • 992: Timeout exception
  • 997: Missing mandatory parameters
  • 999: General exception
  • See full list for other status and technical errors.
StatusMessageString(255)

A free text field containing the transaction status message or additional varying data regarding the outcome.

CustomDeclineCodeString

Used for specifying a custom decline code (e.g., related to Soft Decline or Switch Interface). May reflect the acquirer's response code.

SrvTranIdString

The Integrator's internal transaction ID.

  • Conditional: Required if /StartSession was not used.
  • If used, it should be empty or echo the Transaction ID.
AuthCodeString(40)

The External Authorization Code (usually from the Card Issuer's bank).

AuthAmountDouble

The original amount requested in the /Sale Request.

SettAmountDouble

The original amount requested in the /Sale Request.

RRNString

Reference Retrieval Number. External transaction ID for third parties. Highly recommended to be visible to the consumer/card holder.

TokenString(256)

A unique token for the transaction. For Nayax internal use only.

AuthDateTimeString

The date and time the /Authorization took place. Format:ddMMyyHHmmss.

SettDateTimeDouble

The Settlement Date/Time. Irrelevant for the Authorization command.

TraceNumberString

The Trace number. For Nayax internal use only.

AuthSourceString(5)

For Nayax internal use only.

AdditionalDataString

Additional data string in JSON format. Contact Nayax TPOC to define.

IsGatewayTimeoutBool

Indicates if a gateway timeout occurred (valid in the response).

ProviderExternalDataString

External data from the provider in JSON format string.

InitiateTranReferenceInt(64)

Conditional: Reflects the original Nayax Transaction ID for prepaid loyalty card re-attempts.

IsRevalueCardBool

Indication if card is allowed revalue.