My Profile_

Force Post

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

Retrieves the locked funds and prepares them for settlement into the merchant’s account.

This is used when a merchant obtains the authorization number directly from the issuer by a third-party authorization method (such as by phone).

Note:Please be advised that this transaction is NOT supported for UnionPay.

Canada Code Sample

package Canada;

import JavaAPI.*;

public class TestCanadaForcePost
	public static void main(String[] args)
		java.util.Date createDate = new java.util.Date(); 
		String order_id = "Test"+createDate.getTime();
		String cust_id = "my customer id";
		String store_id = "moneris";
		String api_token = "hurgle";
		String amount = "1.00";
		String pan = "4242424242424242";
		String expdate = "1901"; //YYMM format
		String auth_code = "88864";
		String crypt = "7";
		String dynamic_descriptor = "my descriptor";
		String processing_country_code = "CA";
		boolean status_check = false;

		ForcePost forcepost = new ForcePost();

		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("CorporateCard = " + receipt.getCorporateCard());
			//System.out.println("MessageId = " + receipt.getMessageId());
		catch (Exception e)


ForcePost transaction object definition

ForcePost forcepost = new ForcePost();

HttpsPostRequest object for ForcePost transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();


Force Post transaction object mandatory values

Value Type Limits Set method Description
Order ID String 50-character alphanumeric forcepost.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.
Amount String 10-character decimal forcepost.setAmount(amount); Transaction amount. Used in a number of transactions. Note that this is different from the amount used in a Completion transaction, which is an alphanumeric value.

This must contain at least 3 digits, two of which are penny values.

The minimum allowable value is $0.01, and the maximum allowable value is 9999999.99. Transaction amounts of $0.00 are not allowed.
Credit card number String 20-character alphanumeric forcepost.setPan(pan); Most credit card numbers today are 16 digits, but some 13-digit numbers are still accepted by some issuers. This field has been intentionally expanded to 20 digits in consideration for future expansion and potential support of private label card ranges.
Expiry date String 4-character alphanumeric (YYMM format) forcepost.setExpdate(expdate); Note: This is the reverse of the date displayed on the physical card, which is MMYY.
Authorization code String 8-character alphanumeric forcepost.setAuthCode(auth_code); Authorization code provided in the transaction response from the issuing bank. This is required for Force Post transactions.
E-Commerce indicator String 1-character alphanumeric forcepost.setCryptType(crypt);

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

Force Post transaction object optional values

Value Type Limits Set method Description
Customer ID String 50-character alphanumeric forcepost.setCustId(cust_id); 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 String 20-character alphanumeric forcepost.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 desciptor 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

Status Check Boolean true/false mpgReq.setStatusCheck(status_check); Status Check is a connection object value that allows merchants to verify whether a previously sent transaction was processed successfully.