Guides
Log In
Guides

Purchase

Overview

The purchase command allows you to initiate a transaction for an amount equal to the totalAmount specified in the request body.

Additionally you can separate the transaction into several smaller ones which is know as a partial transaction. This can occur when a customer uses a gift card with a remaining balance below the total purchase amount, in which case, subsequent transactions must be initiated until there is no remaining amount in the response. The initial transaction in the partial transaction flow will return a remainingAmount value that will be sent in follow-up transactions to bypass the tip select screen so customers aren't prompted to give a tip for each transaction.

List of coding scenarios that use this endpoint:

  1. Standard Transaction Flow

  2. Partial Approval Transaction Flow

  3. Tax Functionality

  4. Transaction Cancelled Terminal Flow

  5. Idempotency Request


📘

NOTE

Each transaction in the partial transaction flow is considered a separate transaction and will have its receipt.


Request Structure

ElementTypeDescriptionSizeRequired
apiVersionStringAPI version numberV20Required
istConfigCodeStringMoneris provided integration configuration codeV25Required
dataIdStringMerchant defined unique identifier for the data objectV50Required
dataTimestampStringDate and time of the request (YYYY-MM-DD HH:MM:SS)F19Required
dataObjectObject that contains all transaction requests
requestArrayContains data applicable to transaction request
orderIdStringOrder ID from PurchaseV50Optional
idempotencyKeyStringUnique transaction identifier to avoid duplicate requestV50Required
linkIdStringId used to group related transactionsV50Optional
terminalIdStringDestination Terminal IDF8Optional
userNameStringUnique identifier for clerk / userV30Optional
customIdDataStringCustom fieldV50Optional
actionString"purchase"V50Required
totalAmountStringTotal transaction amountV9Required
remainingAmountStringAmount for partial authorization transactionsV9Optional
safAllowedStringToggle for SAFV5Optional
dynamicDescriptorStringMerchant-defined descriptionV20Optional
cashBackStringIf value is "true", terminal will prompt cardholder for cashbackV5Optional
progressStatusStringIf value is set to "True", terminal will return progress to ECR. Note: This feature is only available on Direct Integration.V5Optional
modifierStringEnum which further classifies transactionV24Optional
tipAmountStringTip amount from ECRV9Optional
languageStringValid values "EN" and "FR". If value is not provided, the payment app will use the language from TMS.F2Optional
subtotalAmountStringAmount without taxes or feesV9Optional
taxesArrayMaximum of 5 tax objects
taxNameStringName to be displayed on receipt (hst, gst etc.)V15Optional
taxAmountStringCorresponding amountV9Conditional

Request example

{
  "apiVersion": "3.0",
  "istConfigCode": "example_istConfigCode",
  "dataId": "example_dataId",
  "dataTimestamp": "1969-12-31 23:59:59",
  "data": {
    "request": [
      {
        "idempotencyKey": "example_idempotencyKey",
        "action": "purchase",
        "totalAmount": "example_totalAmount",
        "subtotalAmount": "10000",
        "taxes": [
          {
            "taxAmount": "1300",
            "taxName": "HST"
          },
          {
            "taxAmount": "200",
            "taxName": "Tourist Fee"
          },
          {
            "taxAmount": "100",
            "taxName": "Eco Fee"
          }
        ]
      }
    ]
  }
}

Response Structure

ElementTypeDescriptionSizeRequired
apiVersionStringAPI version numberV20Required
statusCodeStringStatus code for the overall transaction requestV4Required
statusStringDescription of the statusCodeV4Required
dataIdStringMerchant defined unique identifier for the data objectV50Required
dataTimestampStringDate and time of the request (YYYY-MM-DD HH:MM:SS)F19Required
dataObjectObject that contains all transaction requests
responseArrayContains data applicable to transaction request
orderIdStringTerminal will either return the orderId from the request or generate a new unique orderId if no orderId was present in the requestV50Required
transactionIdStringUnique identifier for this requestV50Required
idempotencyKeyStringUnique transaction identifier to avoid duplicate requestV50Required
linkIdStringId used to group related transactionsV50Optional
actionString"purchase"V50Required
statusCodeStringStatus code for individual requestV4Required
statusStringDescription of the individual statusCodeV50Required
safStringIdentifier for SAF TransactionV5Required
safCounterStringNumber of unprocessed SAF transactionsV3Conditional
approvedAmountStringPayment amount received / approvedV9Conditional
totalAmountStringEcho of the Total transaction amount from the requestV9Required
remainingAmountStringRemaining amount that is owedV9Required
tenderTypeStringPayment Type: Credit, Debit, Gift etcV50Required
cardTypeStringCard Type: V, M, P, AX etcV2Conditional
cardNameStringCard Name: Visa, MasterCard, Interac, Amex etcV25Conditional
sequenceNumStringSequence NumberV18Conditional
realTimeUniqueIdStringReal Time Moneris Transaction Unique IdentifierF15Conditional
responseCodeStringMoneris Host Response CodeV3Conditional
isoStringISO response CodeV2Conditional
authCodeStringAuthorization code returned from the issuing institution.V8Conditional
formFactorStringEMV Specific DataF2Conditional
maskedPanStringMasked Primary Account Number (PAN)V21Conditional
tipAmountStringTip amount entered by userV9Conditional
cashBackStringCashback amountV9Conditional
surchargeStringSurcharge amount on transactionV9Conditional
receiptStringFinancial receipt data sent using ISO-8895-1 encodingV4000Conditional
receiptChoiceStringThe choices of how the receipt is being returned to the cardholder at the time of transaction. Valid values include: PRINT (Default Option), EMAIL, SMS, NONE.V10Conditional
completedString"true" or "false"V5Required
terminalIdStringDestination Terminal IDF8Required
dccOptInStringThis field indicates a Dynamic Currency Conversion (DCC) transaction.V5Optional
installmentOptInStringThis field indicates an Installment by Visa transactionV5Optional
receiptExtensionStringDCC transaction data for compact format receiptsV275Conditional

Response example

{
  "apiVersion": "3.0",
  "statusCode": "example_statusCode",
  "status": "example_status",
  "dataId": "example_dataId",
  "dataTimestamp": "1969-12-31 23:59:59",
  "data": {
    "response": [
      {
        "orderId": "example_orderId",
        "transactionId": "example_transactionId",
        "statusCode": "example_statusCode",
        "status": "example_status",
        "idempotencyKey": "example_idempotencyKey",
        "completed": "true",
        "saf": "false",
        "responseCode": "example_responseCode",
        "iso": "example_iso",
        "approvedAmount": "example_approvedAmount",
        "totalAmount": "example_totalAmount",
        "tenderType": "example_tenderType",
        "cardType": "example_cardType",
        "sequenceNum": "example_sequenceNum",
        "realTimeUniqueId": "example_realTimeUniqueId",
        "authCode": "example_authCode",
        "formFactor": "example_formFactor",
        "maskedPan": "example_maskedPan",
        "action": "purchase",
        "receipt": "example_receipt",
        "receiptChoice": "PRINT",
        "terminalId": "example_terminalId"
      }
    ]
  }
}

Errors

If your response contains errors, visit the Errors page for a detailed description of each one.