GenerateQR

Cortina DQR uses the GenerateQRcommand to notify the integrator about the consumer's product selection in order for him to send the QR generation details.
The command includes the transaction Id identification (Generated in /StartSession), required Amount, merchant, and Machine details (and more).
The Cortina payment provider shall validate the information and respond with the Dynamic QR information to be displayed on the Nayax device accordingly.

This command is essential for proceeding to authorization process.

Request

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

(customer's URL)/Cortina/DynamicQR/GenerateQR

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

{
  "ChannelId": 19,
  "BasicInfo": {
    "TransactionId": "236584335969834429321847829253667359,",
    "Amount": 0.1,
    "CurrencyCode": "USD",
    "CurrencyNumeric": 376,
    "SiteId": 12
  },
  "DeviceInfo": null,
  "MachineInfo": {
    "Id": 869761713,
    "Name": "TestPayDynamicQR V2",
    "TerminalId": 987654321,
    "DecimalPlace": 2,
    "Offset": 2,
    "GroupId": "Beverages",
    "OperatorId": 12345,
    "ZipCode": 10001,
    "Country": {
      "Name": "United States of America",
      "NumericCode": 840,
      "Alpha2Code": "US",
      "Alpha3Code": "USA"
    }
  },
  "ActorInfo": {
    "Id": 2001102296,
    "Name": "Far East Dev Zone",
    "OperatorId": 2000305191,
    "OperatorName": "TanyaT_OP",
    "MerchantId": 10011
  },
  "CustomData": {
    "DirectActor": 12312312,
    "Operator": 123121434134,
    "Distributor": "superDistributor",
    "Actor": 12312312,
    "Machine": 131231348
  },
  "Product": [
    {
      "Code": 11,
      "Name": "Stella",
      "Price": 0.1,
      "UnitOfMeasurement": "USD",
      "Measurement": 1
    },
    {
      "Code": 456,
      "Name": "expensiveSprite",
      "Price": 600,
      "UnitOfMeasurement": "USD",
      "Measurement": 0
    }
  ]
}

Request Parameters

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

FieldTypeDescription
Transaction Identifiers & Status
TransactionIdString(36)

The unique identifier for this transaction.

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

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

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.
RRNString

Reference Retrieval Number (RRN). Recommended to be visible to the consumer/card holder for support.

TokenString(256)

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

TraceNumberString

Trace number. For Nayax internal use only.

AuthSourceString(5)

For Nayax internal use only.

Financial & Time Details
AmountDouble

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

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

The original amount requested in the /Authorization request. Conditional on /Authorization response.

SettAmountDouble

The original amount requested in the /Settlement or /Sale process. Irrelevant for Authorization.

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 /Authorization took place. Format:ddMMyyHHmmss.

SettDateTimeDouble

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

Machine & Location Details
SiteIdInt(16)

Region of the Nayax server.

HwSerialString

Nayax Device Hardware serial number.

FWVersionString

Device Firmware version.

TypeString

Nayax Device Type.

IdInt(64)

Machine entity unique ID.

NameString(255)

Machine Name.

TerminalIdString(255)

Terminal identifier. Contact Nayax TPOC to define.

DecimalPlaceInt(64)

Decimal point location for amounts.

OffsetString(255)

UTC timezone offset.

GroupIdString

For Nayax internal use only.

OperatorIdString(255)

Merchant ID (String format).

ZipCodeString(255)

Machine Zip Code.

Country/Region ISO Codes
NameString

Country Full Name.

NumericCodeString(3)

ISO-3166-1 Numeric-3 code.

Alpha2CodeString(2)

ISO-3166-1 Alpha-2 code.

Alpha3CodeString(3)

ISO-3166-1 Alpha-3 code.

Actor (Merchant/Operator) Details
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.

Actor Geo Details
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.

LongitudeString

Machine Location Longitude.

LatitudeString

Machine Location Latitude.

Product/Item Details
CodeInt(16)

Code of the selected item.

CatalogProductIdString(100)

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

NammeString(255)

Product name.

PriceDouble

The original Product Price in the machine's currency.

  • Note: The transaction amount is the billing price after adjustments (e.g., surcharge, loyalty).
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.

ProductGroupIdString(255)

Product's group code.

PulseLineNumberInt(32)

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

Custom Data (JSON Strings)
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).

AdditionalDataString

General custom data string in JSON format.

Response

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

{
  "QRCode": "DynamicQrResponse_QRCode_Test",
  "QRData": {
    "ChannelId": "19",
    "RRN": "111111",
    "SrvTranId": "236584335969834429321847829253667359"
  },
  "Status": {
    "Verdict": "Approved",
    "Code": 0,
    "StatusMessage": "Cortina V2 Stub Tester"
  },
  "additionalProperties": false
}

Response Parameters

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

FieldTypeDescription
Core Identifiers & Status
QRCodeString

The QR URL provided for the device display/interaction.

ChannelIdString

Conditional for multi-channel integrations. An echo of the value provided by Nayax in the request.

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
  • 8 / 998: Format/parsing error or Validation error
  • 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.
RRNString

Reference Retrieval Number (RRN).

  • Used as External Transaction ID for external parties (e.g., Card schemes).
  • Highly recommended to be visible to the consumer/card holder for support.
  • This value must be echoed in the /Inquiry request.
Financial & Time Details
AuthCodeString(40)

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

AuthAmountDouble

The original amount requested in the /Authorization Request.

SettAmountDouble

The original amount requested in the /Settlement or /Sale process. Irrelevant for the Authorization command.

AuthDateTimeString

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

SettDateTimeDouble

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

System & Conditional Flags
TokenString(256)

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

TraceNumberString

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.