Merchant Initiated Transaction

Introduction

Merchant-Initiated Transactions (MIT) are payments initiated by the merchant without the interaction of the payer. They are characterized by a lack of involvement of the payer in triggering each individual payment.
Such payments require that:

  1. SCA is applied to the first transaction or action mandating the Merchant to initiate payment(s) and
  2. There is an agreement between the payer and the merchant for the provision of products or services and potential costs associated with these.

Such payments can happen in the following cases:

• Recurring Payments for fixed or variable amounts
• Merchant funded installments
• The final amount is higher than the amount used at authentication time.

This can happen when additional charges are added to the initially agreed amount such as, a minibar in a hotel or fines with a rented car.

In case you would prefer to register your customer and store his credit card credentials on file, you are obliged to obtain cardholder’s consent by using Strong Customer Authentication (SCA) in your transaction request.
In order to achieve that, your cardholders must authenticate themselves during transaction processing, once the cardholder is still in session. PSD2 and scheme rules demand a 3-D Secure challenge flow to be performed in such case.

All mentioned above needs to be indicated to the Gateway, so that proper transaction flagging is applied in the authorization message.

Hosted Payment Page

Initial Merchant Initiated Transaction

The following documents represents examples of a first MIT transaction using minimum set of elements:

<!-- #include file="ipg-util.asp"-->
<html>
<head><title>IPG Connect Sample for ASP</title></head>
<body>
<p><h1>Order Form</h1></p>
<form method="post" action=" https://test.ipg-online.com/connect/gateway/processing ">
    <input type="hidden" name="txntype" value="preauth">
    <input type="hidden" name="checkoutoption" value="combinedpage">
    <input type="hidden" name="timezone" value="Europe/Berlin"/>
    <input type="hidden" name="txndatetime" value="<% getDateTime() %>"/>
    <input type="hidden" name="hash_algorithm" value="HMACSHA256"/>
    <input type="hidden" name="hashExtended" value="<% call createExtendedHash( "10.00","978" ) %>"/>
    <input type="hidden" name="storename" value="1109950006" />
    <input type="hidden" name="mode" value="payonly"/>
    <input type="hidden" name="paymentMethod" value="M"/>
    <input type="text" name="chargetotal" value="10.00" />
    <input type="hidden" name="currency" value="978"/>
    <input type="hidden" name="authenticateTransaction" value="true"/>
    <input type="hidden" name="threeDSRequestorChallengeIndicator" value="4"/>
    <input type="hidden" name="unscheduledCredentialOnFileType" value="FIRST"/>
    <input type="text" name="cardnumber" value="540215******2355">
    <input type="text" name="expmonth" value="12">
    <input type="text" name="expyear" value="24">
    <input type="submit" value="Submit">
</form>
</body>
</html>
{
  "requestType": "PaymentCardSaleTransaction",
  "transactionAmount": {
  	"total": "12.00",
  	"currency": "EUR"
  },
  "paymentMethod": {
  	"paymentCard": {
  		"number": "4265880000000007",
  		"securityCode": "999",
  		"expiryDate": {
  			"month": "12",
            "year": "24"
  		}
  	}
  },
  "authenticationRequest": {
    "authenticationType": "Secure3DAuthenticationRequest",
    "termURL": "https://test.ipg-online.com/webshop/simulator/secure3d/return",
    "methodNotificationURL": "https://test.ipg-online.com/ipgconfirmation/services/secure3ds",
    "challengeIndicator": "04"
  },
   "storedCredentials": {
  	"sequence": "FIRST",
        "scheduled": false,
        "initiator": "MERCHANT"
  }
}

The following parameters must be sent in the Hosted Payment Page transaction request to the Gateway:
unscheduledCredentialOnFileType = FIRST
threeDSRequestorChallengeIndicator= 4 (CHALLENGE REQUESTED MANDATE)

Similar parameters must be submitted if you are using our payment APIs solution as shown in the example above:

sequence = FIRST
challengeIndicator = 04

After your transaction has been successfully authenticated, you will be provided with a schemeTransactionId, what must be submitted in your next scheduled payment request (MIT or RecurringType=REPEAT).

Further details about 3-D Secure processing can be found here: 3-D Secure

🚧

NOTE

Please note, that this solution is available only if you utilize Fiserv as your 3DS service provider and your account is setup with respective services.

Subsequent Merchant Initiated Transaction

After you completed the previous step successfully and you would like to initiate a subsequent MIT transaction without cardholder's participation, you can do that using all Gateway’s integration components, as soon as you include all mandatory parameters.

Field NameDescription
unscheduledCredentialOnFileTypeThis field allows you to flag transactions as unscheduled credential on file type. Value allowed for a subsequent MIT transaction = MERCHANT_INITIATED
referencedSchemeTransactionIdThis field allows you to include the payment scheme's transaction ID that has been returned in the response of the initial transaction (when credentials have been stored) in order to provide a reference to that original transaction

The following document represents an example of a subsequent MIT request using minimum set of elements:

<!-- #include file="ipg-util.asp"-->
<html>
<head><title>IPG Connect Sample for ASP</title></head>
<body>
<p><h1>Order Form</h1></p>
<form method="post" action=" https://test.ipg-online.com/connect/gateway/processing ">
    <input type="hidden" name="txntype" value="sale">
    <input type="hidden" name="checkoutoption" value="combinedpage">
    <input type="hidden" name="timezone" value="Europe/Berlin"/>
    <input type="hidden" name="txndatetime" value="<% getDateTime() %>"/>
    <input type="hidden" name="hash_algorithm" value="HMACSHA256"/>
    <input type="hidden" name="hashExtended" value="<% call createExtendedHash( "10.00","978" ) %>"/>
    <input type="hidden" name="storename" value="1109950006" />
    <input type="hidden" name="mode" value="payonly"/>
    <input type="hidden" name="paymentMethod" value="M"/>
    <input type="text" name="chargetotal" value="10.00" />
    <input type="hidden" name="currency" value="978"/>
    <input type="hidden" name="unscheduledCredentialOnFileType" value="MERCHANT_INITIATED"/>
    <input type="hidden" name="referencedSchemeTransactionId" value="019087868716215"/>
    <input type="text" name="cardnumber" value="540215******2355">
    <input type="text" name="expmonth" value="12">
    <input type="text" name="expyear" value="24">
    <input type="submit" value="Submit">
</form>
</body>
</html>
{
  "requestType": "PaymentCardSaleTransaction",
    "transactionAmount": {
      "total": "11.99",
      "currency": "EUR"
      },
    "paymentMethod": {
      "paymentCard": {
        "number": "520474******2745",
        "securityCode": "999",
        "expiryDate": {
        "month": "12",
        "year": "27"
      }   
    }
  },
  "storedCredentials": {
  	"sequence": "SUBSEQUENT",
        "scheduled": false,
        "referencedSchemeTransactionId": "019087868716215",
        "initiator": "MERCHANT"
  }
}


Want a quick overview?