Card-on-file Refund

Overview

A card-on-file refund is the process of reversing an already complete purchase or preauthorization transaction. You are able to card-on-file refund any amount up to the total amount of the transaction.

Card-on-file refunds are also able to be issued with or without the card being present if a card card is used. If a Union Pay or Interac card is used the card will need to be present. If you want to initiate a card-on-file refund you need to orderId and transactionId of the original transaction from the original purchase. In the event that the card-on-file refund cannot be processed due to a communication error or other issues, a card-present refund can be performed by the POS application.

If you want to issue a card-present refund that isn't linked to a specific transaction, you can learn about it HERE.

  1. Card-on-file Refund Command

Request Structure

ElementTypeDescriptionSizeRequired
apiVersion String API version number V20 Required
istConfigCode String Moneris provided integration configuration code V25 Required
dataId String Merchant defined unique identifier for the data object V50 Required
dataTimestamp String Date and time of the request (YYYY-MM-DD HH:MM:SS) F19 Required
data Object Object that contains all transaction requests
request Array Contains data applicable to transaction request
orderId String Order ID from Purchase V50 Required
transactionId String Transaction ID from Purchase response V50 Required
idempotencyKey String Unique transaction identifier to avoid duplicate request V50 Required
linkId String Id used to group related transactions V50 Optional
terminalId String Destination Terminal ID F8 Optional
userName String Unique identifier for clerk / user V30 Optional
customIdData String Custom field V50 Optional
action String "refund" V50 Required
totalAmount String Total transaction amount V9 Required
dynamicDescriptor String Merchant-defined description V20 Optional
progressStatus String If value is set to "True", terminal will return progress to ECR
Note: This feature is only available on Direct Integration
V5 Optional
modifier String Enum which further classifies transaction V24 Optional
language String Valid values "EN" and "FR". If value is not provided, the payment app will use the language from TMS F2 Optional
subtotalAmount String Amount without taxes or fees V9 Optional
taxes Array Maximum of 5 tax objects
taxName String Name to be displayed on receipt (hst, gst etc) V15 Optional
taxAmount String Corresponding amount V9 Conditional

Request example

{
   "apiVersion":"3.0",
   "istConfigCode":"example_istConfigCode",
   "dataId":"example_dataId",
   "dataTimestamp":"1969-12-31 23:59:59",
   "data":{
      "request":[
         {
            "orderId":"example_orderId",
            "transactionId":"example_transactionId",
            "idempotencyKey":"example_idempotencyKey",
            "action":"refund",
            "totalAmount":"example_totalAmount"
         }
      ]
   }
}

Response Structure

ElementTypeDescriptionSizeRequired
apiVersion String API version number V20 Required
statusCode String Status code for the overall transaction request V4 Required
status String Description of the statusCode V4 Required
dataId String Merchant defined unique identifier for the data object V50 Required
dataTimestamp String Date and time of the request (YYYY-MM-DD HH:MM:SS) F19 Required
data Object Object that contains all transaction requests
response Array Contains data applicable to transaction request
orderId String Unique identifier for this request V50 Required
transactionId String Unique identifier for this request V50 Required
idempotencyKey String Unique transaction identifier to avoid duplicate request V50 Required
linkId String Id used to group related transactions V50 Optional
action String "refund" V50 Required
statusCode String Status code for individual request V4 Required
status String Description of the individual statusCode V50 Required
totalAmount String Echo of the Total transaction amount from the request V9 Required
approvedAmount String Payment amount received / approved V9 Conditional
tenderType String Payment Type: Credit, Debit, Gift etc V50 Required
cardType String Card Type: V, M, P, AX etc V2 Conditional
cardName String Card Name: Visa, MasterCard, Interac, Amex etc V25 Conditional
sequenceNum String Sequence Number V18 Conditional
realTimeUniqueId String Real Time Moneris Transaction Unique Identifier F15 Conditional
responseCode String Moneris Host Response Code V3 Conditional
iso String ISO response Code V2 Conditional
authCode String Authorization code returned from the issuing institution V8 Conditional
formFactor String EMV Specific Data F2 Conditional
maskedPan String Masked Primary Account Number (PAN) V21 Conditional
completed String "true" or "false" V5 Required
receipt String Financial receipt data sent using ISO-8895-1 encoding V4000 Conditional
receiptChoice String The 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. V10 Conditional
terminalId String Destination Terminal ID F8 Required
receiptExtension String DCC transaction data for compact format receipts V275 Conditional

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",
            "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":"refund",
            "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.


Did this page help you?