Kount Fraud Management

Leading AI-Driven Fraud Prevention for eCommerce and mCommerce

Kount Fraud Management sets the industry standard with its advanced AI-driven solutions designed to prevent fraud in eCommerce, mCommerce, and card-not-present transactions. What sets Kount apart is its use of adaptive AI, combining both supervised and unsupervised machine learning to deliver real-time risk analysis and fraud detection.

Kount effectively identifies and blocks fraudulent transactions by analyzing numerous data points before a transaction is processed. The Kount Data Collector plays a crucial role in this process, and we’ve made it easy to integrate into your checkout pages using our Payment API or Collect.js. Running seamlessly in the background, the Kount Device Data Collector gathers essential data as customers proceed through the checkout process on your eCommerce site, ensuring robust fraud prevention without disrupting the user experience.

Kount Variable

When a customer is on a payment page, the Kount library will provide the following, which you must submit to the payment API in order for Kount to function properly:

VariableDescriptionWhen Received
transaction_session_idA single use session ID used by Kount to link the transaction and Data Collector information together.

This ID should be generated every time a payment form is loaded by the cardholder, and be random/unpredictable (do not use sequential IDs). This ID should not be reused within a 30 day period.
After the Kount data collector has run

Quick Start Guide

2. Initialize Kount

kount = gateway.getKount()

3. Run the Kount Data Collector

Call Kount's createSession() and use then() to retrieve the session ID.

  • If running Kount with Collect.js: Render a Collect.js form to collect the credit card information. Use Collect.js's configure() method to supply a callback. The callback will provide the Collect.js payment token in place of the credit card details.

4. Create a Javascript object with the details of the transaction.

The details should include:

  • cardNumber, cardExpMonth, cardExpYear,
    • If running Kount with Collect.js, paymentToken will replace card details.

  • currency, amount,
  • email
  • city, address1, country, zip,
  • first_name, last_name, and
  • transaction_session_id.
Session IDs need to be provided to the payment API. If you don’t pass a Session ID, Kount will not run correctly.
The Kount data collector should be run immediately on a payment page, and may be run multiple times. Each call to createSession() will return a session ID. When submitting, use the latest value.

5. Submit the transaction data via the Payment API with your private key.

Example

<html>
    <body>
    <script src="https://secure.nmi.com/js/v1/Gateway.js"></script>
    <script>
        // Initialize Gateway.js, use own Public Key
        const gateway = Gateway.create('collect_checkout_0000000000000000000000000');

        // Initialize the Kount service
        const kount = gateway.getKount();

        // Run Kount
        kount.createSession().then((res) => {
            //Store session id
            const transactionSessionId = res;

            //Code goes here...
            console.log(transactionSessionId);

        });

        // Listen for any errors that might occur
        gateway.on('error', function (e) {
            console.error(e);
        });
    </script>
    </body>
</html>
<html>
<body>
    <label>Credit Card Number</label>
    <div id="ccnumber"></div>
    <label>CC EXP</label>
    <div id="ccexp"></div>
    <label>CVV</label>
    <div id="cvv"></div>
    <button id="payButton">Pay Now</button>
    <script src="https://secure.nmi.com/js/v1/Gateway.js"></script>
    <script
       src="https://secure.nmi.com/token/Collect.js"
       data-tokenization-key="000000-111111-222222-333333"
    ></script>
    <script>
        // Initialize Gateway.js, use own Public Key
        const gateway = Gateway.create('collect_checkout_0000000000000000000000000');

        // Initialize the Kount service
        const kount = gateway.getKount();

        // Run Kount
        kount.createSession().then((res) => {

            //Store session id
            const sessionId = res;

            //Run CollectJS Configure
            CollectJS.configure({
                variant: 'inline',
                callback: (e) => {
                    const options = {
                        paymentToken: e.token,
                        currency: 'USD',
                        amount: '1000',
                        email: '[email protected]',
                        phone: '8008675309',
                        city: 'New York',
                        state: 'NY',
                        address1: '123 First St.',
                        country: 'US',
                        firstName: 'John',
                        lastName: 'Doe',
                        postalCode: '60001',
                        transactionSessionId: sessionId
                    };

                    fetch('direct-post-back-end.php', {
                        method: 'POST',
                        body: JSON.stringify({
                            ...options,
                        })
                    });
                }
            });

            gateway.on('error', function (e) {
                console.error(e);
            });
        });
    </script>
</body>
</html>
<?php
$jsonContent = json_decode(file_get_contents('php://input'));

$fields = array(
    'security_key' => '01234567890123456789012345678901',
    'payment_token' => $jsonContent->paymentToken,
    'amount' => '10.00',
    'email' => $jsonContent->email,
    'phone' => $jsonContent->phone,
    'city' => $jsonContent->city,
    'address1' => $jsonContent->address1,
    'country' => $jsonContent->country,
    'first_name' => $jsonContent->firstName,
    'last_name' => $jsonContent->lastName,
    'zip' => $jsonContent->postalCode,
    'transaction_session_id' => $jsonContent->transactionSessionId
);

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://secure.nmi.com/api/transact.php',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $fields
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;