Skip to main content
This guide shows you how to set up the Kount Android SDK and perform your first data collection using complete, working code examples.

Overview

The basic setup involves three main steps:
  1. Configure the SDK with your merchant ID and environment
  2. Request necessary permissions (location)
  3. Trigger data collection with collectForSession()

Complete Implementation

MainActivity.kt
package com.kount.checkoutexample.kotlin

import android.Manifest
import android.app.Activity
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.kount.api.KountSDK

class MainActivity : AppCompatActivity() {
    companion object {
        const val MERCHANT_ID = "999999" // Insert your valid merchant ID
    }

    private val ENVIRONMENT: Int = KountSDK.ENVIRONMENT_TEST
    private lateinit var location: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        location = findViewById(R.id.location)

        // Step 1: Configure the SDK
        KountSDK.setMerchantId(MERCHANT_ID)
        KountSDK.setCollectAnalytics(true)
        KountSDK.setEnvironment(ENVIRONMENT)

        // Step 2: Check permissions and collect data
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestLocationPermission(this)
        } else {
            location.text = "Allowed"
            startDataCollection()
        }
    }

    private fun startDataCollection() {
        // Step 3: Trigger data collection
        KountSDK.collectForSession(
            this,
            { sessionId ->
                Log.d("TAG", "Success! Session ID: $sessionId")
                Log.d("TAG", "Collection status: ${KountSDK.getCollectionStatus()}")
            },
            { sessionId, error ->
                Log.d("TAG", "Failed with error: $error, Session ID: $sessionId")
                Log.d("TAG", "Collection status: ${KountSDK.getCollectionStatus()}")
            }
        )
    }

    private fun requestLocationPermission(activity: Activity) {
        if (ContextCompat.checkSelfPermission(
                activity,
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            ActivityCompat.requestPermissions(
                activity,
                arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
                KountSDK.REQUEST_PERMISSION_LOCATION
            )
        } else {
            location.text = "Allowed"
            startDataCollection()
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        
        if (requestCode == KountSDK.REQUEST_PERMISSION_LOCATION) {
            startDataCollection()
            
            if (grantResults.isNotEmpty() && 
                grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                location.text = "Allowed"
            } else {
                location.text = "Denied"
            }
        }
    }
}

Implementation Steps

1

Configure the SDK

Set your merchant ID, analytics preference, and environment (TEST or PRODUCTION).
KountSDK.setMerchantId("999999")
KountSDK.setCollectAnalytics(true)
KountSDK.setEnvironment(KountSDK.ENVIRONMENT_TEST)
2

Request Location Permission

For Android 6.0 (API 23) and above, request location permission to enable enhanced data collection.
ActivityCompat.requestPermissions(
    activity,
    arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
    KountSDK.REQUEST_PERMISSION_LOCATION
)
Location permission is optional but recommended for better fraud detection accuracy.
3

Start Data Collection

Call collectForSession() with success and failure callbacks:
KountSDK.collectForSession(
    this,
    { sessionId ->
        // Success - collection completed
        Log.d("TAG", "Session ID: $sessionId")
    },
    { sessionId, error ->
        // Failure - handle error
        Log.d("TAG", "Error: $error")
    }
)

Retrieving the Session ID

After successful collection, you can retrieve the session ID to include with your transaction:
val sessionId = KountSDK.getSessionId()
// Send this sessionId with your transaction to Kount
The session ID is automatically generated and managed by the SDK. You should send this ID to your backend along with transaction data for Kount’s fraud analysis.

Next Steps

Completion Handlers

Learn how to use success and failure callbacks effectively

Error Handling

Implement robust error handling for data collection

Build docs developers (and LLMs) love