> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/implement-nfc-wallet/make-payment/implement-contactless-payments/7.-configure-cdcvm-experiences/define-risk-management.md).

# Define risk management

## Overview

To support low-value transactions (LVT) without authentication and transit payments, the **digital wallet application** must define risk management settings.

These settings:

* Apply only to digital cards that support **CDCVM** and allow LVT without authentication.
* Define the thresholds used by the LVT accumulators.

### LVT accumulators

NFC Wallet SDK tracks LVT accumulators, including:

* cumulative transaction amount without authentication
* number of consecutive LVT payments without authentication

When an accumulator reaches its configured limit, NFC Wallet SDK prompts the **end user** to authenticate.

{% hint style="info" %}
After a successful authentication (during an HVT or LVT), NFC Wallet SDK resets the accumulators.
{% endhint %}

## SDK integration

### Risk management parameters

Define risk management using `CustomConfiguration` during NFC Wallet SDK initialization. See [Initialize the NFC Wallet SDK](/nfc-wallet-sdk-android/get-started/configuration/4.-initialize-the-nfc-wallet-sdk.md#configure-payment-behavior).

The following parameters are available:

<table data-full-width="true"><thead><tr><th width="313.800048828125">Configuration parameter</th><th>Description</th></tr></thead><tbody><tr><td><code>maxConsecutivePaymentsForLVT</code></td><td>Set the maximum number of consecutive LVT payments allowed without authentication.<br>When the limit is reached, the next LVT requires authentication.<br>Default: <code>0</code> (require authentication for every LVT).<br>Maximum: <code>50</code>.<br>Note: This counter increments regardless of transaction currency.</td></tr><tr><td><code>singleTransactionAmountLimitForLVT</code></td><td>Set the maximum amount allowed per LVT without authentication.<br>Any LVT above this limit requires authentication.<br>Default: <code>0</code> (require authentication for every LVT).<br>Applies only when the transaction currency code matches <code>domesticCurrencyCode</code>.</td></tr><tr><td><code>maxCumulativeAmountForLVT</code></td><td>Set the maximum cumulative amount of LVT payments allowed without authentication.<br>When the limit is reached, the next LVT requires authentication.<br>Default: <code>0</code> (require authentication for every LVT).<br>Applies only when the transaction currency code matches <code>domesticCurrencyCode</code>.</td></tr><tr><td><code>domesticCurrencyCode</code></td><td>Set the ISO 4217 numeric currency code used for LVT accumulators.<br>Used with:<br><code>singleTransactionAmountLimitForLVT</code><br><code>maxCumulativeAmountForLVT</code><br>Accumulators update only when the transaction currency matches this value.<br>Default: <code>978</code> (Euro).</td></tr><tr><td><code>suppportTransitWithoutCDCVM</code></td><td>Enable transit payments without CDCVM.<br>Transit transactions do not update LVT accumulators (amount or count).<br>When enabled, transit payments do not require authentication.<br>Default: <code>false</code>.</td></tr></tbody></table>

The following examples show how currency minor units affect accumulator thresholds:

```java
// South Korean Won: Currency with 0 decimal
.domesticCurrencyCode(410) //KRW
.maxCumulativeAmountForLVT(10) // 10 KRW
.maxCumulativeAmountForLVT(100) // 100 KRW
.maxCumulativeAmountForLVT(1000) // 1000 KRW
.maxCumulativeAmountForLVT(10000) // 10000 KRW

// Euro: Currency with 2 decimal
.domesticCurrencyCode(978) //EUR
.maxCumulativeAmountForLVT(1) // 0.01 EUR
.maxCumulativeAmountForLVT(10) // 0.10 EUR
.maxCumulativeAmountForLVT(100) // 1.00 EUR
.maxCumulativeAmountForLVT(1000) // 10.00 EUR
.maxCumulativeAmountForLVT(10000) // 100.00 EUR

// Jordanian dinar: Currency with 3 decimal
.domesticCurrencyCode(400) //JOD
.maxCumulativeAmountForLVT(1) // 0.001 JOD
.maxCumulativeAmountForLVT(10) // 0.010 JOD
.maxCumulativeAmountForLVT(100) // 0.100 JOD
.maxCumulativeAmountForLVT(1000) // 1.000 JOD
.maxCumulativeAmountForLVT(10000) // 10.000 JOD
```

### PURE risk management

PURE (Thales white-label EMV payment network) can also provide risk configuration in the digital card profile.

When processing a transaction, NFC Wallet SDK applies PURE risk management in addition to `CustomConfiguration`.

The following table shows how PURE risk parameters interact with the risk management parameters you set in `CustomConfiguration`.

<table data-full-width="true"><thead><tr><th width="289.4444580078125">PURE risk parameter</th><th>SDK behavior</th></tr></thead><tbody><tr><td><code>maxTransactionNoCVM</code></td><td>Compare with <code>maxConsecutivePaymentsForLVT</code> and use the most restrictive (lowest) value.</td></tr><tr><td><code>muta</code></td><td>Reject the transaction when the amount exceeds this value and the transaction currency code equals <code>crmCurrencyCode</code> (from the PURE profile).</td></tr><tr><td><code>issuerCVMLimit</code></td><td><p>If the transaction currency code equals <code>domesticCurrencyCode</code>, compare with <code>singleTransactionAmountLimitForLVT</code> and use the most restrictive (lowest) value.</p><p>Otherwise, use <code>issuerCVMLimit</code>.</p></td></tr><tr><td><code>maxTransactionAmountNoCVM</code></td><td><p>If the transaction currency code equals <code>domesticCurrencyCode</code>, compare with <code>maxCumulativeAmountForLVT</code> and use the most restrictive (lowest) value.</p><p>Otherwise, use <code>maxTransactionAmountNoCVM</code>.</p></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/implement-nfc-wallet/make-payment/implement-contactless-payments/7.-configure-cdcvm-experiences/define-risk-management.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
