My Profile_

MCP Pre-Authorization Completion

NEW!   We now have our Interactive tool for this section.

Retrieves funds that have been locked by an MCP Pre-Authorization transaction, and prepares them for settlement into the merchant’s account.

This transaction request is the multi-currency pricing (MCP) enabled version of the equivalent financial transaction.

MCP Pre-Authorization Completion transaction object definition

MCPCompletion mcpCompletion = new MCPCompletion();

HttpsPostRequest object for MCP Pre-Authorization Completion transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();


Canada Code Sample

package Canada;

import JavaAPI.*;

public class TestCanadaMCPCompletion
	public static void main(String[] args)
		String store_id = "store5";
		String api_token = "yesguy";
		String order_id = "Test1538681966167";
		String txn_number = "696294-0_11";
		String crypt = "7";
		String cust_id = "my customer id";
		String dynamic_descriptor = "my descriptor";
		String ship_indicator = "F" ;
		String processing_country_code = "CA";
		boolean status_check = false;

		MCPCompletion mcpCompletion = new MCPCompletion();
		//mcpCompletion.setShipIndicator(ship_indicator); //optional

		//MCP Fields
		//mcpCompletion.setMCPRateToken("P1538681661706745"); //optional
		HttpsPostRequest mpgReq = new HttpsPostRequest();
		mpgReq.setTestMode(true); //false or comment out this line for production transactions

			Receipt receipt = mpgReq.getReceipt();

			System.out.println("CardType = " + receipt.getCardType());
			System.out.println("TransAmount = " + receipt.getTransAmount());
			System.out.println("TxnNumber = " + receipt.getTxnNumber());
			System.out.println("ReceiptId = " + receipt.getReceiptId());
			System.out.println("TransType = " + receipt.getTransType());
			System.out.println("ReferenceNum = " + receipt.getReferenceNum());
			System.out.println("ResponseCode = " + receipt.getResponseCode());
			System.out.println("ISO = " + receipt.getISO());
			System.out.println("BankTotals = " + receipt.getBankTotals());
			System.out.println("Message = " + receipt.getMessage());
			System.out.println("AuthCode = " + receipt.getAuthCode());
			System.out.println("Complete = " + receipt.getComplete());
			System.out.println("TransDate = " + receipt.getTransDate());
			System.out.println("TransTime = " + receipt.getTransTime());
			System.out.println("Ticket = " + receipt.getTicket());
			System.out.println("TimedOut = " + receipt.getTimedOut());
			System.out.println("IsVisaDebit = " + receipt.getIsVisaDebit());			
			System.out.println("MerchantSettlementAmount = " + receipt.getMerchantSettlementAmount());
			System.out.println("CardholderAmount = " + receipt.getCardholderAmount());
			System.out.println("CardholderCurrencyCode = " + receipt.getCardholderCurrencyCode());
			System.out.println("MCPRate = " + receipt.getMCPRate());
			System.out.println("MCPErrorStatusCode = " + receipt.getMCPErrorStatusCode());
			System.out.println("MCPErrorMessage = " + receipt.getMCPErrorMessage());
			System.out.println("HostId = " + receipt.getHostId());
		catch (Exception e)

Core connection object fields (all API transactions)

Variable Name Type and Limits Set Method Description
store ID



mpgReq.setStoreId(store_id); Unique identifier provided by Moneris upon merchant account set up.
API token




Unique alphanumeric string assigned upon merchant account activation

To find your API token, refer to your test or production store’s Admin settings in the Merchant Resource Center, at the following URLs:

MCP Pre-Authorization Completion transaction request fields – Required

Variable Name Type and Limits Set Method Description
order ID


50-character alphanumeric a-Z A-Z 0-9 _ - : . @ spaces

mcpCompletion.setOrderId(order_id); Merchant-defined transaction identifier that must be unique for every Purchase, Pre-Authorization and Independent Refund transaction. No two transactions of these types may have the same order ID.

For Refund, Completion and Purchase Correction transactions, the order ID must be the same as that of the original transaction.

The last 10 characters of the order ID are displayed in the “Invoice Number” field on the Merchant Direct Reports. However only letters, numbers and spaces are sent to Merchant Direct.

A minimum of 3 and a maximum of 10 valid characters are sent to Merchant Direct. Only the last characters beginning after any invalid characters are sent. For example, if the order ID is 1234-567890, only 567890 is sent to Merchant Direct.

If the order ID has fewer than 3 characters, it may display a blank or 0000000000 in the Invoice Number field.
transaction number


255-character, alphanumeric,hyphens or underscores

variable length


Used when performing follow-on transactions. (That is, Completion, Purchase Correction or Refund.) This must be the value that was returned as the transaction number in the response of the original transaction.

When performing a Completion, this value must reference the Pre-Authorization. When performing a Refund or a Purchase Correction, this value must reference the Completion or the Purchase.

electronic commerce indicator


1-character alphanumeric


Describes the category of e-commerce transaction being processed. Allowable values are:

  • 1 - Mail Order / Telephone Order—Single
  • 2 - Mail Order / Telephone Order—Recurring
  • 3 - Mail Order / Telephone Order—Instalment
  • 4 - Mail Order / Telephone Order—Unknown classification
  • 5 - Authenticated e-commerce transaction (VBV)
  • 6 - Non-authenticated e-commerce transaction (VBV)
  • 7 - SSL-enabled merchant

In Credential on File transactions where the request field e-commerce indicator is also being sent: the allowable values for e-commerce indicator are dependent on the value sent for payment indicator, as follows:

if payment indicator = R, then allowable values for e-commerce indicator: 2, 5 or 6
if payment indicator = C, then allowable values for e-commerce indicator: 1, 5, 6 or 7
if payment indicator = U, then allowable values for e-commerce indicator: 1 or 7
if payment indicator = Z, then allowable values for e-commerce indicator: 1, 5, 6 or 7

MCP-specific request fields – Required

Variable Name Type and Limits Set Method Description
MCP version number


current version is 1.0

mcpCompletion.setMCPVersion("MCP_VERSION_NUM"); Release version number for MCP
cardholder amount


12-character numeric

smallest discrete unit of foreign currency

mcpCompletion.setCardholderAmount("CARDHOLDER_AMOUNT"); Amount, in units of foreign currency, the cardholder will be charged on the transaction
cardholder currency code


3-character numeric

mcpCompletion.setCardholderCurrencyCode("CARDHOLDER_CURRENCY_CODE"); ISO code representing the foreign currency of the cardholder

MCP Pre-Authorization Completion transaction request fields – Optional

Variable Name Type and Limits Set Method Description
customer ID


30-character alphanumeric


This can be used for policy number, membership number, student ID, invoice number and so on.

This field is searchable from the Moneris Merchant Resource Centre

dynamic descriptor


max 20-character alphanumeric

total of 22 characters including your merchant name and separator

mcpCompletion.setDynamicDescriptor(dynamic_descriptor); Merchant defined description sent on a per-transaction basis that will appear on the credit card statement. Dependent on the card Issuer, the statement will typically show the dynamic descriptor appended to the merchant's existing business name separated by the "/" character. Please note that the combined length of the merchant's business name, forward slash "/" character, and the dynamic descriptor may not exceed 22 characters.
Existing Business Name: ABC Painting
Dynamic Descriptor: Booking 12345
Cardholder Statement Displays: ABC Painting/Booking 1

For Pre-Authorization transactions: the value in the dynamic descriptor field will only be carried over to a Pre-Authorization Completion when executing the latter via the Merchant Resource Center; otherwise, the value for dynamic descriptor must be sent again in the Pre-Authorization Completion.

MCP-specific request fields – Optional

Variable Name Type and Limits Set Method Description
MCP rate token



mcpCompletion.setMCPRateToken("MCP_RATE_TOKEN"); Token representing a temporarily locked-in foreign exchange rate, obtained in the response of the MCP Get Rate transaction and used in subsequent MCP financial transaction requests in order to redeem that rate