My Profile_


Kount Overview

Kount transactions are available to Canadian integrations only.

Introduction to Kount Inquiries

There are 2 types of transactions associated with Kount:

  • Kount Inquiry
  • Kount Update

A risk inquiry request—can be performed either before or after performing a customer payment transaction. If performed before, the risk score will be less complete as it will not include most customer information.

Kount Update request is to alter or update the Kount Inquiry information, such as order number or payment authorization details.

To use the Kount Inquiry, you must implement the device data collector component. Data collector must have a unique session ID, the same session ID must be sent with the Kount Inquiry or Kount update.

Kount Data Collector

The Data Collector process provides data related to the device initiating the transaction, and is transparent to the customer and sub second. The data collected is used in conjunction with the RIS data.

Data Collector Process Flow - Kount

  • Customer browses to merchant order form page containing Data Collector code
  • Customer browser automatically requests redirect on the Data Collector element
  • Customer browser is redirected to Kount servers
  • Kount collects device attributes
  • Kount directs customer browser to display static image hosted by merchant

Data Collector Process Requirements.

  1. Port 443 must be available to post and receive data from Kount
  2. The following code must be added to your checkout process:
    • HTML iframe: The iframe should be placed on the order form page where the payment method or credit card information is requested, usually near the bottom of the page.
    • Server side code: The server side code consists of a logo.htm and logo.gif server side executable scripts. The path to the server side code must be a fully qualified path.
    • Code to create a unique session identifier: When the form page is accessed, a session identifier must be created and stored to be used as the session identifier in the subsequent RIS post from the merchant to Kount. This identifier must be unique for at least 30 days and must be unique for every transaction submitted by each unique customer. If a single session ID were to be used on multiple transactions, those transactions would link together and erroneously affect the persona information and Kount score.
  3. A static image URL must be supplied to Kount:
    • The static image can be an image that is currently being displayed on the page or Kount can provide an image if desired
    • If the path or image requires change by the merchant subsequent to moving into production, Kount must be notified of the new path or filename to avoid possible failure.

Canada Code Sample

//Code Example for HTML iframe

<iframe width=1 height=1 frameborder=0 scrolling=no src=https://MERCHANT_URL/logo.htm?
	  m=merchantId&s=sessionId>
      <img width=1 height=1 src=https://MERCHANT_URL/logo.gif?m=merchantId&s=sessionId>
      </iframe>

//Code Example for Creating Session ID
<?php
     $sess = session_id();
         if (!$sess) {

// If the session hasn’t already been started, start it now and look up the id session_start();
      $sess = session_id();
        } // The session id is now available for use in the variable
       $sess
// For more details and examples on working with sessions in PHP, see:
// http://us2.php.net/manual/en/book.session.php
// http://us2.php.net/session_start
// http://us2.php.net/session_id
?>
                

Kount Inquiry

A risk inquiry request—can be performed either before or after performing a customer payment transaction. If performed before, the risk score will be less complete as it will not include most customer information.

Canada Code Sample

import java.io.*; 
import java.util.*;
import java.net.*;

import JavaAPI.*;

public class TestKountInquiry
{
  public static void main(String args[]) throws IOException
  {

/********************** Request Variables ****************************/

        String host = "esqa.moneris.com";
        String store_id = "moneris";
        String api_token = "hurgle";
        
        KountInquiry kountInquiry = new KountInquiry();
        
        kountInquiry.setKountMerchantId("760000"); //6 digit - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountInquiry.setKountApiKey("myapi"); //214 character max - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountInquiry.setOrderId("nqa-orderidkount-1"); //64 characters max - This is a UNIQUE local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountInquiry.setCallCenterInd("N"); //Y or N - Risk Inquiry originating from call center environment
		kountInquiry.setCurrency("CAD"); //country of currency submitted on order
		kountInquiry.setDataKey("3B1C19fgfRObNHaQh5qVCpRW2"); //token from moneris vault service to represent pan if previously tokenized
		kountInquiry.setEmail("test@gmail.com"); //email address submitted by the customer
		kountInquiry.setCustomerId("NQA"); //Merchant assigned account number for consumer
		kountInquiry.setAutoNumberId("NQA-X1"); //Automatic Number Identification (ANI) submitted with order
		kountInquiry.setFinancialOrderId("nqa-fin-orderid-1"); //64 characters max - This is a local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountInquiry.setPaymentToken("4242424242424242"); //payment token submitted by merchant (ie: credit card, payer ID)
														   /*	Payment Type Must be one of the following values:
															   APAY-­Apple Pay
															   CARD-­Credit Card
															   PYPL-­PayPal
															   NONE-­None
															   GOOG-­Google Checkout
															   GIFT-­Gift Card
															   INTERAC-­Interac
															   CHEK - Check
															   GDMP - Green Dot Money Pack
															   BLML - Bill Me Later
															   BPAY - BPAY
															   NETELLER - Neteller
															   GIROPAY - GiroPay
															   ELV - ELV
															   MERCADE_PAGO - Mercade Pago
															   SEPA - Single Euro Payments Area
															   CARTE_BLEUE - Carte Bleue
															   POLI - POLi
															   Skrill/Moneybookers - SKRILL
															   SOFORT - Sofort
														   */
		kountInquiry.setPaymentType("CARD"); //payment type submitted by merchant
		kountInquiry.setIpAddress("192.168.2.1"); //Dotted Decimal IPv4 address that the merchant sees coming from the customer
		kountInquiry.setSessionId("xjudq804i1049jkjakdad"); //unique session id.  Must be unique over a 30-day span
		kountInquiry.setWebsiteId("DEFAULT");
		kountInquiry.setAmount("100"); //Transaction amount This must contain at least 3 digits, two of which are penny values
		kountInquiry.setPaymentResponse("A"); //A - Authorized, D - Declined - payment transaction response
		kountInquiry.setAvsResponse("M"); //M - Match, N - No Match - avs verification response returned from payment request. This can be provided should kountInquiry be performed after the transaction is complete
		kountInquiry.setCvdResponse("M"); //M - Match, N - No Match, X - Unsupported/Unavailable - cvd response returned to merchant from processor. This can be provided should kountInquiry be performed after the transaction is complete
		kountInquiry.setBillStreet1("3300 Bloor Street"); //billing street address line 1
		kountInquiry.setBillStreet2("West Tower"); //billing street address line 2
		kountInquiry.setBillCountry("CA"); //2 character - billing country code
		kountInquiry.setBillCity("Toronto"); //billing address city
		kountInquiry.setBillPostalCode("M8X2X2"); //billing address postal code
		kountInquiry.setBillPhone("4167341000"); //billing phone number
		kountInquiry.setBillProvince("ON"); //billing address province
		kountInquiry.setDob("1950-11-12"); //YYYY-MM-DD
		kountInquiry.setEpoc("1491783223"); //timestamp expressed as seconds from epoch
		kountInquiry.setGender("M"); //M - Male or F - Female
		kountInquiry.setLast4("4242"); //last 4 digits of credit card value
		kountInquiry.setCustomerName("Moneris Test"); //customer name submitted with the order
		kountInquiry.setShipStreet1("3200 Bloor Street"); //shipping street address line 1
		kountInquiry.setShipStreet2("East Tower"); //shipping street address line 2
		kountInquiry.setShipCountry("CA"); //2 digit - shipping country code
		kountInquiry.setShipCity("Toronto"); //shipping address city
		kountInquiry.setShipEmail("test@gmail.com"); //email of recipient
		kountInquiry.setShipName("Moneris Test"); //name of recipient
		kountInquiry.setShipPostalCode("M8X2X3"); //shipping address postal code
		kountInquiry.setShipPhone("4167341001"); //ship-to phone number
		kountInquiry.setShipProvince("ON"); //shipping address province
		kountInquiry.setShipType("ST"); //Same Day = SD, Next Day = ND, Second Day = 2D, Standard = ST

		//Product Details - item number, product_type, product_item (SKU), product_description, product quatity, product_price
		//1-25 products can be added - must be in sequence starting with 1
		kountInquiry.setProduct(1, "Phone", "XM9731S", "iPhone 7", "1", "100");
		kountInquiry.setProduct(2, "Phone", "YM9731R", "iPhone 6", "1", "100");

		//Local Attributes - 255 character max each,These attributes can be used to pass custom attribute data. These are used if you wish to correlate some data with the returned response via kount
		//1-25 of these can be submitted in one request - must be in sequence starting with 1
		kountInquiry.setUdfField("LOCAL_ATTRIBUTE_1", "iPhone 7");
		kountInquiry.setUdf();

        //Standard Post Request
        KountHttpsPostRequest mpgReq =
	            new KountHttpsPostRequest(host, store_id, api_token, kountInquiry);
	            		
        //Optionally Post Request via Proxy
        /*String proxyHost = "";
        String proxyPort = "";
        String proxyUser = "";
        String proxyPassword = "";

		KountHttpsPostRequest mpgReq =
        	new KountHttpsPostRequest(host, store_id, api_token, kountInquiry, proxyHost,proxyPort, proxyUser, proxyPassword);*/
        
		try
        {
			KountReceipt[] kountReceipt = mpgReq.getKountReceipts();
			
			for (int i = 0;i<kountReceipt.length;i++)
            {
				System.out.println("ResponseCode = " + kountReceipt[i].getResponseCode());
				System.out.println("ReceiptId = " + kountReceipt[i].getReceiptId());
				System.out.println("Message = " + kountReceipt[i].getMessage());
				System.out.println("KountResult = " + kountReceipt[i].getKountResult());
				System.out.println("KountTransactionId = " + kountReceipt[i].getKountTransactionId());
				System.out.println("KountScore = " + kountReceipt[i].getKountScore());
				System.out.println("KountInfo = " + kountReceipt[i].getKountInfo());
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
  }
} // end TestKountInquiry example

                

Kount Inquiry transaction object definition

KountInquiry kountInquiry = new KountInquiry();

HttpsPostRequest object for Kount Inquiry transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(kountInquiry);

Kount Inquiry object mandatory values

Value Type Limits Set Methods
Order ID String 50-character alphanumeric kountInquiry.setOrderId("nqa-orderidkount-1");
Kount merchant Id String 6-character alphanumeric kount_merchant_id.setKountMerchantId("760000");
Kount merchant ID String Varies kountInquiry.setKountApiKey("mykey");
Payment response String 1-character alphanumeric kountInquiry.setPaymentResponse("A");
Payment token String 32-character alphanumeric kountInquiry.setPaymentToken("4242424242424242");
Payment type String 4-character alphanumeric kountInquiry.setPaymentType("CARD");
Currency String 3-character alphanumeric kountInquiry.setCurrency("CAD");
Call Center indicator String 1-character alphanumeric kountInquiry.setCallCenterInd("N");
Session ID String 32-character alphanumeric kountInquiry.setSessionId("xjudq804i1049jkjakdad");
Website ID String 8-character alphanumeric kountInquiry.setWebsiteId("DEFAULT");
IP address String 16-character alphanumeric kountInquiry.setIpAddress("192.168.2.1");
Amount String 10-character decimal; Up to 7-character numeric + 2-character numeric after the decimal point kountInquiry.setAmount("100");
Email String 32 - alphanumeric64-character alphanumeric kountInquiry.setEmail("test@gmail.com");
Product Array Itemnumber + 5 variables required per Product item, as follows
Maximum 25 product items
kountInquiry.setProduct(itemnumber, prod_type_n, prod_item_n, prod_desc_n, prod_quant_n, prod_price_n);
Shopping cart item typen String 255-character alphanumeric n/a
Shopping cart item SKUn String 255-character alphanumeric n/a
Shopping cart item descriptionn String 255-character alphanumeric n/a
Shopping cart item quantityn String 5-character alphanumeric n/a
Shopping cart item pricen String 9-character decimal; Up to 7-character numeric + 2-character numeric after the decimal point n/a

Kount Inquiry object optional values

Value Type Limits Set Method
Automatic Number Identification (ANI)
Note:Conditional – must only be sent when Call Center indicator = Y
String 32-character alphanumeric kountInquiry.setAutoNumberId("NQA-X1");
AVS response String 1-character alphanumeric kountInquiry.setAvsResponse("M");
CVD response String 2-character alphanumeric kountInquiry.setCvdResponse("M");
Billing street 1 String 255-character alphanumeric kountInquiry.setBillStreet1("3300 Bloor Street");
Billing street 2 String 255-character alphanumeric kountInquiry.setBillStreet2("West Tower");
Billing country String 2-character alphanumeric kountInquiry.setBillCountry("CA");
Billing city String 255-character alphanumeric kountInquiry.setBillCity("Toronto");
Billing state/province String 255-character alphanumeric kountInquiry.setBillProvince("ON");
Billing postal/ZIP code String 20-character alphanumeric kountInquiry.setBillPostalCode("M8X2X2");
Date of birth String YYYY-MM-DD kountInquiry.setDob("1950-11-12");
Timestamp String 10-character alphanumeric kountInquiry.setEpoc("1491783223");
Gender String 1-character alphanumeric
M or F
kountInquiry.setGender("M");
Last 4 digits of CC String 4-character alphanumeric kountInquiry.setLast4("4242");
Customer name String 64-character alphanumeric kountInquiry.setCustomerName("Moneris Test");
Financial order ID String 64-character alphanumeric kountInquiry.setFinancialOrderId("nqa-finorderid-1");
Shipping street 1 String 255-character alphanumeric kountInquiry.setShipStreet1("3200 Bloor Street");
Shipping street 2 String 256-character alphanumeric????????????????? kountInquiry.setShipStreet2("East Tower");
Shipping city String 255-character alphanumeric kountInquiry.setShipCity("Toronto");
Shipping email String 64-character alphanumeric kountInquiry.setShipEmail("test@gmail.com");
Shipping name String 64-character alphanumeric kountInquiry.setShipName("Moneris Test");
Shipping postal/ZIP code String 20-character alphanumeric kountInquiry.setShipPostalCode("M8X2X3");
Shipping province/state String 255-character alphanumeric kountInquiry.setShipProvince("ON");
Shipping type String 2-character alphanumeric kountInquiry.setShipType("ST");
Customer ID String 32-character alphanumeric kountInquiry.setCustomerId("NQA");
Local attribute n (up to 25 attributes allowed) String 255-character alphanumeric kountInquiry.setLocalAttrib(1, "iPhone 7");
Data key String 25-character alphanumeric kountInquiry.setData(data_key);

Kount Update

This transaction is done to request to update the Kount risk inquiry information, such as order number and payment authorization details.

Canada Code Sample

import java.io.*; 
import java.util.*;
import java.net.*;

import JavaAPI.*;

public class TestKountUpdate
{
  public static void main(String args[]) throws IOException
  {

/********************** Request Variables ****************************/

        String host = "esqa.moneris.com";
        String store_id = "moneris";
        String api_token = "hurgle";

        KountUpdate kountUpdate = new KountUpdate ();
        
        kountUpdate.setKountTransactionId("PHJS0J2PK1MB"); //kount transaction ID number that is returned in the response of a kount_inquiry request
		kountUpdate.setKountMerchantId("760000"); //6 digit - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountUpdate.setKountApiKey("mykey"); //214 character max - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountUpdate.setOrderId("nqa-orderidkount-5"); //64 characters max - This is a UNIQUE local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountUpdate.setFinancialOrderId("nqa-fin-orderid-1"); //64 characters max - This is a local identifier used by the merchant to identify the transaction e.g. purchase order number
		kountUpdate.setDataKey("3B1C19fgfRObNHaQh5qVCpRW2"); //token from moneris vault service to represent pan if previously tokenized
		kountUpdate.setPaymentToken("4242424242424242"); //payment token submitted by merchant (ie: credit card, payer ID)
								/*	Payment Type Must be one of the following values:
								APAY-­Apple Pay
								CARD-­Credit Card
								PYPL-­PayPal
								NONE-­None
								GOOG-­Google Checkout
								GIFT-­Gift Card
								INTERAC-­Interac
								CHEK - Check
								GDMP - Green Dot Money Pack
								BLML - Bill Me Later
								BPAY - BPAY
								NETELLER - Neteller
								GIROPAY - GiroPay
								ELV - ELV
								MERCADE_PAGO - Mercade Pago
								SEPA - Single Euro Payments Area
								CARTE_BLEUE - Carte Bleue
								POLI - POLi
								Skrill/Moneybookers - SKRILL
								SOFORT - Sofort
								*/
		kountUpdate.setPaymentType("CARD"); //payment type submitted by merchant
		kountUpdate.setSessionId("xjudq804i1049jkjakdad");  //unique session id.  Must be unique over a 30-day spa
		kountUpdate.setPaymentResponse("A"); //A - Authorized, D - Declined - payment transaction response
		kountUpdate.setAvsResponse("M"); //M - Match, N - No Match - avs verification response returned from payment request. This can be provided should kount_inquiry be performed after the transaction is complete
		kountUpdate.setCvdResponse("N"); //M - Match, N - No Match, X - Unsupported/Unavailable - cvd response returned to merchant from processor. This can be provided should kount_inquiry be performed after the transaction is complete
		kountUpdate.setLast4("4242"); ////last 4 digits of credit card value
		kountUpdate.setEvaluate("Y"); //Y or N - If set to Y, full re-evaluation will be performed with Kount.  If unset, default value is N
		kountUpdate.setRefundStatus("C"); //R = Refund, C = Chargeback		
		
        //Standard Post Request
        KountHttpsPostRequest mpgReq =
	            new KountHttpsPostRequest(host, store_id, api_token, kountUpdate);
        
        /*Optionally Post Request via Proxy
        String proxyHost = "";
        String proxyPort = "";
        String proxyUser = "";
        String proxyPassword = "";

		KountHttpsPostRequest mpgReq =
        	new KountHttpsPostRequest(host, store_id, api_token, kountUpdate, proxyHost,proxyPort, proxyUser, proxyPassword);*/
		
		try
        {
			KountReceipt[] kountReceipt = mpgReq.getKountReceipts();
			
			for (int i = 0;i<kountReceipt.length;i++)
            {
				System.out.println("ResponseCode = " + kountReceipt[i].getResponseCode());
				System.out.println("ReceiptId = " + kountReceipt[i].getReceiptId());
				System.out.println("Message = " + kountReceipt[i].getMessage());
				System.out.println("KountResult = " + kountReceipt[i].getKountResult());
				System.out.println("KountTransactionId = " + kountReceipt[i].getKountTransactionId());
				System.out.println("KountScore = " + kountReceipt[i].getKountScore());
				System.out.println("KountInfo = " + kountReceipt[i].getKountInfo());
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        
  	}
} // end TestKountUpdate example

                

Kount Update transaction object definition

KountUpdate kount_update = new KountUpdate();

HttpsPostRequest object for Kount Update transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(kount_update);

Kount Update object mandatory values

Value Type Limits Set Method
Kount merchant ID String 6-character alphanumeric kount_update.setKountMerchantId("760000");
Kount API key String Varies kount_update.setKountApiKey("mykey");
Session ID String 32-character alphanumeric kount_update.setSessionId("xjudq804i1049jkjakdad");
Kount transaction ID String 32-character alphanumeric kount_update.setKountTransactionId("PHJS0J2PK1MB");

Kount Update transaction optional values

Value Type Limits Set Method
Payment response
Note:Conditional – must only be sent when Call Center indicator = Y
String 1-character alphanumeric kount_update.setPaymentResponse("A");
AVS response String 1-character alphanumeric kount_update.setAvsResponse("M");
CVD response String 2-character alphanumeric kount_update.setCvdResponse("N");
Last 4 digits of CC String 4-character alphanumeric kount_update.setLast4("4242");
Financial order ID String 64-character alphanumeric kount_update.setFinancialOrderId("nqa-finorderid-1");
Payment token String 32-character alphanumeric kount_update.setPaymentToken("4242424242424242");
Payment type String 4-character alphanumeric kount_update.setPaymentType("CARD");
Refund status String 1-character alphanumeric
R or C
kount_update.setRefundStatus("C");
Data key String 25-character alphanumeric kount_update.setData(data_key);

Definition of Request Fields

Definitions of Request Fields - Kount Risk Inquiries API

Variable Name
Size/Type
Description
kount_merchant_id 6-character alphanumeric Merchant ID assigned to merchant by Kount
kount_api_key Varies API key assigned to merchant by Kount
order_id 50-character alphanumeric Unique Moneris Gateway transaction number
call_center_ind 1-character alphanumeric (Y/N) Flag indicating whether risk inquiry request originates from a call center environment

If the customer service agents navigate to a separate order entry page that does not collect iframe data: When sending the kount_inquiry request, set call_center_ind to Y

If the customer service agents navigate to the same order entry page as the customer: When sending the kount_inquiry request, set call_center_ind to N

If RIS call does not originate from a call center environment, set call_center_ind to N
currency 3-character alphanumeric Country of currency submitted on order
email 64-character alphanumeric This is the email address submitted by the customer

NOTE: If a call center is accepting orders on behalf of customers and the customer does not provide an email address OR the customer does not have an email address, noemail@kount.com must be submitted

customer_id 32-character alphanumeric Merchant-assigned account number for the customer
auto_number_id 32-character alphanumeric Automatic Number Identification (ANI) submitted with order

If the ANI cannot be determined, merchant must pass 0123456789 as the ANID

NOTE: This field is only valid for phone-to-web requests where customer service agents navigate to a separate order entry page that does not collect iframe data RIS submissions

financial_order_id 64-character alphanumeric This is a local identifier used by the merchant to identify the transaction, e.g., a purchase order number
payment_response 1-character alphanumeric Authorization Status returned to merchant from processor

A = Authorized

D = Declined

In orders where payment_response = A will aggregate towards order velocity of the persona while orders where payment_response = D will decrement the velocity of the persona
payment_token 32-character alphanumeric Payment token submitted by merchant for order (credit card, payer ID, routing/transit, MICR, and account number)

If payment_type is set to None then the payment_token value should be left empty (NULL)

If the credit card information is not available and a Moneris Vault token is used to process payment set payment_type = CARD and send the token (data key) in the payment_token field.
payment_type 4-character alphanumeric Payment Type submitted by merchant:

APAY - Apple Pay

CARD - Credit Card

PYPL - PayPal

CHEK - Check

NONE - None

GDMP - Green Dot Money Pack

GOOG - Google Checkout

BLML - Bill Me Later

GIFT - Gift Card

BPAY - BPAY

NETELLER - Neteller

GIROPAY - GiroPay

ELV - ELV

MERCADE_PAGO - Mercade Pago

SEPA - Single Euro Payments Area

INTERAC - Interac

CARTE_BLEUE - Carte Bleue

POLI - POLi

Skrill/Moneybookers - SKRILL

SOFORT - Sofort

If the credit card information is not available and a Moneris Vault token is used to process payment set payment_type = CARD and send the token (data key) in the payment_token field
session_id 32-character alphanumeric Unique Session ID; must be unique over a 30-day span
website_id 8-character alphanumeric Website identifier of where order originated
ip_address 16-character alphanumeric Dotted Decimal IPv4 address that the merchant sees coming from the customer

If the Phone to Web exclusion is used, the ip_address field should be hard coded to be 10.0.0.1.

Other than for Phone to Web requests (where the customer service agents navigate to a separate order entry page that does not collect iframe data), the ip_address field should never be an anonymous IP address (e.g., 10.X.X.X or 192.168.X.X)
amount 10-character decimal; Up to 7- character numeric + 2-character numeric after the decimal point

EXAMPLE: 1234567.89

Amount of the transaction

Must contain 3 digits with two penny values

The minimum value passed can be 0.01 and the maximum 9999999.99
kount_transaction_id 32-character alphanumeric Transaction ID required for update calls to Kount; generated by Kount, must match KountTransactionId returned from original RIS Post
evaluate 5-character alphanumeric If set to ‘true’, full re-evaluation will be performed with Kount

If unset, default value is 'false'
avs_response 1-character alphanumeric Address Verification System verification response returned to merchant from processor with payment request
cvd_response 2-character alphanumeric CVD verification response returned to merchant from processor with payment request
bill_street_1 255-character alphanumeric Billing street address - Line 1
bill_street_1 255-character alphanumeric Billing street address - Line 1
bill_street_2 255-character alphanumeric Billing street address - Line 2
bill_country 2-character alphanumeric Billing address - Country
bill_city 255-character alphanumeric Billing address - City
bill_postal_code 20-character alphanumeric Billing address - Postal Code
bill_phone 32-character alphanumeric Bill-to Phone Number
bill_province 255-character alphanumeric Billing address - State/Province
dob YYYY-MM-DD Date of Birth
epoc 10-character alphanumeric This is a timestamp and is expressed as a number; represents the number of seconds elapsed since midnight 01/01/1970

For more information, refer to www.epochconverter.com
gender 1-character alphanumeric M or F
last4 4-character numeric Last 4 digit of the customer's credit card number
customer_name 64-character alphanumeric Name submitted with the order
refund_status 1-character alphanumeric Refund/Chargeback status

R = Refund

C = Chargeback
ship_street_1 255-character alphanumeric Shipping street address - Line 1
ship_street_2 256-character alphanumeric Shipping street address - Line 2
ship_country 2-character alphanumeric Shipping address - Country
ship_city 255-character alphanumeric Shipping address - City
ship_email 64-character alphanumeric Shipping address - Email address of recipient
ship_name 64-character alphanumeric Shipping address - Name of recipient
ship_postal_code 20-character alphanumeric Shipping address - Postal Code
ship_phone 32-character alphanumeric Ship-to Phone Number
ship_province 255-character alphanumeric Shipping address - State/Province
ship_type 2-character alphanumeric Shipping type

The following nomenclature is expected for shipping types to be passed to Kount:

Same Day = SD

Next Day = ND

Second Day = 2D

Standard = ST

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_type_n 255-character alphanumeric Shopping cart data array attribute high level or generalized description of the item added to the shopping cart;

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_item_n 255-character alphanumeric Shopping cart data array attribute typically the SKU for an item

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_desc_n 255-character alphanumeric Shopping cart data array attribute for a specific description of the item being purchased
prod_quant_n 5-character numeric Shopping cart data array attribute signifying the quantity of the item being purchased
prod_price_n 9-character decimal; Up to 7- character numeric + 2-character numeric after the decimal point

EXAMPLE:1234567.89

Shopping cart data array attribute for the price of the single item

Must contain 3 digits with two penny values

The minimum value passed can be 0.01 and the maximum 9999999.99
local_attrib_n 255-character alphanumeric Up to 25 of these can be submitted in one request, where n defines each user defined field.

Value of n can be 1 to 25

Definition of Response Fields

Definitions of Response Fields - Kount Risk Inquiries API

Variable Name
Size/Type
Description
ResponseCode 3-character numeric Three digit number; positive response when it is less than 50
ReceiptId 64-character alphanumeric Echoed order_id in the initial request
Message 255-character alphanumeric Brief description message for this query
KountResult 1-character alphanumeric (Y/N) Auto-decision response code:

A = Approve

D = Decline

R = Review
KountScore 3-character numeric Final risk score returned from Kount system
KountTransactionId 12-character alphanumeric Kount Transaction ID
Browser 64-character alphanumeric Web Browser
CardBrand 4-character alphanumeric Brand of credit card used when payment type is 'credit card'
NumCards numeric Total number of credit cards associated to persona as seen by Kount
Cookies Y/N A flag to indicate if device placing order has cookies enabled or not
CountersTriggered numeric Number of unique counter names triggered during rules evaluation
CounterNameX 64-character alphanumeric Name of counter triggered
CounterValueX numeric Sum of the number of times a counter was triggered
Country 2-character alphanumeric Two-character ISO country code associated with the physical device
DDFS 10-character alphanumeric

(YYYY-MM-DD format)
Date device first seen
DeviceLayers 55-character alphanumeric 5 device layers that comprise the device's fingerprint, representing OS, browser, Javascript, cookies and Flash settings
Devices numeric Total number of unique devices associated to persona as seen by Kount
DSR 10-character alphanumeric Device Screen Resolution
Emails numeric Total number of unique email addresses associated to persona as seen by Kount
ErrorCount numeric Number of errors the Kount request generated
ErrorCode 4-character alphanumeric Error Code displayed in RIS response
Fingerprint 32-character alphanumeric The unique fingerprint of the device placing the order
Flash 1-character alphanumeric

(Y/N )
A flag to indicate if the device placing the order has Flash enabled
Geox 2-character alphanumeric Persona related country with highest probability of fraud
HttpCountry 2-character alphanumeric User home country the device owner has set in the device's control panel
ProxyAddress 16-character alphanumeric IP address of proxy
JavaScript 1-character alphanumeric (Y/N) A flag to indicate if the device placing order has JavaScript enabled
DataCollector 1-character alphanumeric (Y/N) Flag indicating whether or not device data was collected by the Data Collector process
KYCF n/a Know Your Customer Flag
Language 2-character alphanumeric The language the device owner has set in the device control panel
LocalTime 20-character alphanumeric The local time the device owner has set in the device control panel
KountMerchantID numeric Kount Merchant ID
MobileDevice 1-character alphanumeric (Y/N) Flag to indicate if device placing the order is of mobile nature
MobileForwarder 1-character alphanumeric (Y/N) If device is mobile, flag that indicates whether it is using a forwarder to process the carrier's service
MobileType 32-character alphanumeric Type of mobile device, e.g., iPhone, Android, Blackberry, iPad, etc.
Network 1-character alphanumeric Riskiest network type associated with persona within last 14 days:

A = Anonymous

H = High School

L = Library

N = Normal

O = Open Proxy

P = Prison

S = Satellite
Mode 1-character alphanumeric Specifies the RIS post mode type
OS 64-character alphanumeric Operating System of the device
PCRemote 1-character alphanumeric (Y/N) Flag indicating whether the device is enabled to use PC remote software
Proxy 1-character alphanumeric Flag indicating whether or not a proxy server is detected
PiercedAddress 16-character alphanumeric Pierced IP address

PIP_COUNTRY = Country of pierced IP address (2, US)

PIP_LAT = Latitude of pierced IP address (Number, -90.1922)

PIP_LON = Longitude of pierced IP address (Number, 38.6312)

PIP_CITY = City of pierced IP address (255, Houston)

PIP_REGION = State/Region of pierced IP address (255 character limit)

PIP_ORG = Owner of pierced IP address or address block (64, Organization Name)
ReasonCode 16-character alphanumeric Reason code associated with rule action
Region 2-character alphanumeric Region associated to device location
GeoxRegion 2-character alphanumeric Region associated to GEOX Location
RulesTriggered numeric Number of rules triggered by post to Kount
RuleIdX numeric Rule ID associated with merchant-created rules
RuleDescriptionX 255-character alphanumeric Rule descriptions associated with RuleIdX
SessionId 32-character alphanumeric Unique Session ID
Website 8-character alphanumeric Website identifier of where order originated
Timezone 6-character alphanumeric The time zone of the device; value is number of minutes divided by 60 from Greenwich Mean Time
UserAgent 1024-character alphanumeric User agent string
Velocity numeric Quantity of orders seen from persona within last 14 days
MaxVelocity numeric Quantity of orders from persona within the most active 6 hour window in last 14 days; payment_response field must be equal to ‘A’
Version 4-character alphanumeric Specifies version of Kount system being used
VoiceDevice 1-character alphanumeric (Y/N) If it is a mobile device, flag indicating whether the device is voice activated
WarningCount numeric Number of warnings the RIS post generated
WarningCode 4-character alphanumeric Warning code displayed in the RIS response

Error Messages

Error messages that are returned if the gateway is unreachable

Global Error Receipt

You are not connecting to our servers. This can be caused by a firewall or your internet connection.

Response Code = NULL

The response code can be returned as null for a variety of reasons. The majority of the time, the explanation is contained within the Message field.
When a ‘NULL’ response is returned, it can indicate that the issuer, the credit card host, or the gateway is unavailable. This may be because they are offline or because you are unable to connect to the internet.
A ‘NULL’ can also be returned when a transaction message is improperly formatted.

Error messages that are returned in the Message field of the response

XML Parse Error in Request: <System specific detail>

An improper XML document was sent from the API to the servlet.

XML Parse Error in Response: <System specific detail>

An improper XML document was sent back from the servlet.

Transaction Not Completed Timed Out

Transaction timed out before the host responds to the gateway.

Request was not allowed at this time

The host is disconnected.

Could not establish connection with the gateway: <System specific detail>

Gateway is not accepting transactions or server does not have proper access to internet.

Input/Output Error: <System specific detail>

Servlet is not running.

The transaction was not sent to the host because of a duplicate order id

Tried to use an order id which was already in use.

The transaction was not sent to the host because of a duplicate order id

Expiry Date was sent in the wrong format.

Vault error messages

Can not find previous

Data key provided was not found in our records or profile is no longer active.

Invalid Transaction

Transaction cannot be performed because improper data was sent.

or

Mandatory field is missing or an invalid SEC code was sent.

Malformed XML

Parse error.

Incomplete

Timed out.

or

Cannot find expiring cards.

Custom Android Pay In-App SDK Responses
Response Code
Message
Definition
900 Global Error Unable to decrypt payload

Response Codes for Kount

Response Code
Response Message
001 Success
973 Unable to locate merchant kount details
984 Data error
987 Invalid transaction

For Error Codes specific to Kount, see the Kount portal at: Kount Error Codes


Security Requirements

All Merchants and Service Providers that store, process, or transmit cardholder data must comply with PCI DSS and the Card Association Compliance Programs. However, validation requirements vary by business and are contingent upon your "Merchant Level" or "Service Provider Level". Failure to comply with PCI DSS and the Card Association Compliance Programs 3.2 may result in a Merchant being subject to fines, fees or assessments and/or termination of processing services. Non-compliant solutions may prevent merchants boarding with Moneris Solutions.

As a Moneris Solutions client or partner using this method of integration, your solution must demonstrate compliance to the Payment Card Industry Data Security Standard (PCI DSS) and/or the Payment Application Data Security Standard (PA DSS) 3.2. These standards are designed to help the cardholders and merchants in such ways as they ensure credit card numbers are encrypted when transmitted/stored in a database and that merchants have strong access control measures, logging, secure software updates, secure remote access and support.

For further information on PCI DSS and PA DSS requirements, please visit www.pcisecuritystandards.org.

For more information on how to get your application PCI-DSS compliant, please contact our Integration Specialists and visit https://developer.moneris.com to view the PCI-DSS Implementation Guide.