---
title: Track transactions - iOS
description: Track transactions with the Contentsquare iOS SDK
lastUpdated: 09 October 2025
source_url:
  html: https://docs.contentsquare.com/en/csq-sdk-ios/experience-analytics/track-transactions/
  md: https://docs.contentsquare.com/en/csq-sdk-ios/experience-analytics/track-transactions/index.md
---

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)

- Swift

  ```swift
  import ContentsquareSDK


  let transaction = Transaction(id: "transactionId", value: 100.0, currency: "USD")
  CSQ.trackTransaction(transaction)
  ```

- Objective-C

  ```objective-c
  @import ContentsquareSDK;


  Transaction *transaction = [[Transaction alloc] initWithId:@"transactionId" value:100.0 currency:@"USD"];
  [CSQ trackTransaction:transaction];
  ```

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.
