---
title: Track transactions - Android (classic)
description: Track transactions with the Contentsquare Android SDK
lastUpdated: 11 March 2026
source_url:
  html: https://docs.contentsquare.com/en/android/track-transactions/
  md: https://docs.contentsquare.com/en/android/track-transactions/index.md
---

> Documentation index: https://docs.contentsquare.com/llms.txt
> Use this file to discover all available pages before exploring further.

The latest CSQ SDK is here! Learn how to [upgrade your app](https://docs.contentsquare.com/en/csq-sdk-android/experience-analytics/upgrade-from-cs-sdk/).

To associate a user's session with their potential purchases (and corresponding revenue), you must send the transaction via a dedicated API. For each transaction, we send:

* Price (mandatory)
* Currency (mandatory)
* Transaction ID (optional)

- Java

  ```java
  import com.contentsquare.android.api.Currencies;
  import com.contentsquare.android.api.model.Transaction;


  // Sends Transaction
  float price = 430.00f;
  String id = "id";
  // Currency
  Currencies currency = Currencies.EUR; // or currency = "USD"


  Contentsquare.send(Transaction.builder(price, currency).id(id).build());
  ```

- Kotlin

  ```kotlin
  import com.contentsquare.android.api.Currencies
  import com.contentsquare.android.api.model.Transaction


  // Sends Transaction
  val price = 430.00f
  val id = "id"
  // Currency
  val currency = Currencies.EUR // or currency = "USD"


  Contentsquare.send(Transaction.builder(price, currency).id(id).build())
  ```

Warning

**Each transaction must only be sent once**. A common mistake is to trigger the sending when the confirmation screen is displayed. This leads to triggering the transaction each time the user puts the app in background and then in foreground on the confirmation screen.

## Currency

The currency is conforming to the [ISO 4217 ↗](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) standard. The currency can be passed either as "alphanumeric code" or "numeric code".

If the currency passed doesn't match the supported currencies, the SDK will send a currency value of `-1`. It will be processed as the default currency of the project.

## Float precision

The `Transaction` API uses a `Float` to represent the transaction value, which means very large numbers may be **rounded** when stored or serialized.

For example, `1234567890f` becomes `1234567936f`.

This behavior is normal for floating-point values and does not affect regular currency amounts (`0.99`, `430.00`, `100000.00`).
