Skip to main content
This quickstart guide walks you through integrating the Kount Android SDK into your Android application. You’ll have data collection running in under 10 minutes.

Prerequisites

Before you begin, ensure you have:
  • Android Studio installed
  • A Kount merchant ID (contact Kount if you don’t have one)
  • Target Android API 26 (Oreo) or higher
  • Basic familiarity with Android development

Step 1: Add Dependencies

Add the Kount Data Collector to your app’s build.gradle file:
repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.kount:datacollector:5.0.0'
    implementation 'com.google.android.instantapps:instantapps:1.1.0'
    implementation 'com.android.volley:volley:1.2.1'
    implementation 'com.google.code.gson:gson:2.8.6'
}
Sync your project with Gradle files.

Step 2: Configure SDK

Initialize the SDK in your Activity’s onCreate() method:
MainActivity.kt
import com.kount.api.KountSDK

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // Configure the SDK
        KountSDK.setMerchantId("999999") // Replace with your merchant ID
        KountSDK.setEnvironment(KountSDK.ENVIRONMENT_TEST)
        KountSDK.setCollectAnalytics(true)
    }
}
Replace "999999" with your actual merchant ID provided by Kount. Use ENVIRONMENT_TEST for development and ENVIRONMENT_PRODUCTION for production builds.

Step 3: Request Location Permission

Add location permission to your AndroidManifest.xml:
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Request the permission at runtime for Android M and above:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (ContextCompat.checkSelfPermission(
            this,
            Manifest.permission.ACCESS_FINE_LOCATION
        ) != PackageManager.PERMISSION_GRANTED
    ) {
        ActivityCompat.requestPermissions(
            this,
            arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
            KountSDK.REQUEST_PERMISSION_LOCATION
        )
    }
}
Location permission is optional but recommended for enhanced fraud detection. The SDK will work without it, but with reduced data collection.

Step 4: Collect Device Data

Start data collection when you need to track a user session:
KountSDK.collectForSession(
    this,
    { sessionId ->
        // Success - collection completed
        Log.d("Kount", "Collection completed with session ID: $sessionId")
        
        // Send sessionId to your backend for fraud analysis
        sendSessionIdToBackend(sessionId)
    },
    { sessionId, error ->
        // Failure - collection failed
        Log.e("Kount", "Collection failed: $error")
        
        // Handle the error (retry, log, etc.)
        handleCollectionError(error)
    }
)

Step 5: Retrieve Session ID

You can retrieve the session ID at any time after collection:
val sessionId = KountSDK.getSessionId()
val status = KountSDK.getCollectionStatus()

Log.d("Kount", "Session ID: $sessionId")
Log.d("Kount", "Status: $status")

Complete Example

Here’s a complete working example:
MainActivity.kt
package com.example.app

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

class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // Configure the SDK
        KountSDK.setMerchantId("999999")
        KountSDK.setEnvironment(KountSDK.ENVIRONMENT_TEST)
        KountSDK.setCollectAnalytics(true)
        
        // Request permissions and start collection
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestLocationPermission()
        } else {
            startDataCollection()
        }
    }
    
    private fun requestLocationPermission() {
        if (ContextCompat.checkSelfPermission(
                this,
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            ActivityCompat.requestPermissions(
                this,
                arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
                KountSDK.REQUEST_PERMISSION_LOCATION
            )
        } else {
            startDataCollection()
        }
    }
    
    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == KountSDK.REQUEST_PERMISSION_LOCATION) {
            startDataCollection()
        }
    }
    
    private fun startDataCollection() {
        KountSDK.collectForSession(
            this,
            { sessionId ->
                Log.d("Kount", "Success: $sessionId")
                // Send to backend
            },
            { sessionId, error ->
                Log.e("Kount", "Failed: $error")
                // Handle error
            }
        )
    }
}

Testing Your Integration

Build and run your app:
./gradlew installDebug
Check your logcat for Kount SDK messages:
adb logcat | grep Kount
You should see:
  • “Collection completed with session ID: [session-id]”
  • Status messages showing collection progress

Collection Status Values

The SDK provides three status values:
StatusDescription
COMPLETEDData collection finished successfully
IN_PROGRESSCollection is currently running
FAILEDCollection encountered an error

Next Steps

Integration Guides

Detailed integration guides for Java and Kotlin

Configuration

Learn about all configuration options

Core Concepts

Understand how data collection works

API Reference

Complete API documentation

Troubleshooting

Ensure you’ve configured the merchant ID before calling collectForSession(). The SDK must be initialized with a valid merchant ID.
KountSDK.setMerchantId("your-merchant-id")
Verify that you’ve added the JitPack repository and synced your Gradle files:
repositories {
    maven { url 'https://jitpack.io' }
}
This can happen if there’s a network issue or timeout. Check your device’s internet connection and ensure your app has the INTERNET permission in AndroidManifest.xml.
For more troubleshooting help, see the Troubleshooting Guide.

Build docs developers (and LLMs) love