> 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/transaction-control/implement-transaction-control/implement-domain-controls.md).

# Implement domain controls

## Overview

The Transaction Control service lets you enforce and update domain controls for a card.

Use the **D1 API** or **D1 SDK** to:

* Check a card’s domain controls during authorization.
* Update a card’s domain controls in real time.

### What happens during authorization

During authorization, D1 evaluates the card’s configured domain controls. If any check fails, D1 declines the authorization with `DOMAIN_CONTROL_FAIL`.

* See [Get All Card Authorisation Operations](/transaction-control/integrate-the-d1-api/d1-api-reference/inbound-api-to-d1/card-api.md#get-v2-issuers-issuerid-cards-cardid-authorisations-operations).
* See [Notify Card Authorisation Operations](/transaction-control/integrate-the-d1-api/d1-api-reference/outbound-api-from-d1/card-api.md#post-notifications-d1-v2-issuers-issuerid-authorisations).

To improve the End User experience, configure real-time notifications to the **issuer application** (In-App) and/or the **issuer backend**.

### Supported domain controls <a href="#domain-control-list" id="domain-control-list"></a>

D1 supports the following domain controls for a card:

| Control name             | Description                               | Property type      | Optional |
| ------------------------ | ----------------------------------------- | ------------------ | -------- |
| **Online payment**       | E-commerce payments (card-not-present)    | Boolean            | No       |
| **Magstripe**            | Magstripe transactions                    | Boolean            | Yes      |
| **Withdrawal**           | Cash withdrawals                          | Boolean            | Yes      |
| **Contactless**          | Contactless transactions                  | Boolean            | Yes      |
| **Abroad payment**       | Cross-border payments                     | Boolean            | No       |
| **Geography by country** | Allow payments only in selected countries | List of countries  | No       |
| **Geography by region**  | Allow payments only in selected regions   | List of regions    | No       |
| **Currency**             | Block payments in selected currencies     | List of currencies | No       |
| **Adult merchant**       | Block adult merchant categories           | Boolean            | No       |
| **Gambling merchant**    | Block gambling merchant categories        | Boolean            | No       |
| **Risky merchant**       | Block risky merchant categories           | Boolean            | No       |

### Required vs optional controls

Controls marked **Optional = No** must be defined in the Card Product.

Controls marked **Optional = Yes** are supported, but optional. If you do not define them in the Card Product, you cannot update them later at card level.

### Merchant category groups

D1 provides a default configuration in [Merchant category group - default configuration](https://thales-dis-dbp.stoplight.io/docs/d1-caas/773811d46b2b1-merchant-type-default-configuration).

The issuer can redefine the **Gambling**, **Adult**, and **Risky** groups with the **Thales Delivery Team**.

## User experience

<figure><img src="/files/NneAp1Jyek0cuSByylQu" alt=""><figcaption><p>Example End User experience for domain controls.</p></figcaption></figure>

## Flow

Domain controls are inherited from the Card Product. Retrieve and update them using the **D1 Backend API** or the **D1 SDK**.

You can manage only the domain controls that are enabled in the Card Product.

### Manage controls with the D1 Backend API <a href="#using-d1-backend-api" id="using-d1-backend-api"></a>

Use the D1 API to manage a card’s domain controls from the issuer backend.

#### Retrieve current settings

<figure><img src="/files/jtzrj9eL10ggHG4Fvt0r" alt=""><figcaption><p>Retrieve current domain control settings (issuer backend).</p></figcaption></figure>

Use [Get Card Settings](https://thales-dis-dbp.stoplight.io/docs/d1-caas/906ogh06j4ydz-get-card-settings) to retrieve the current domain control settings.

#### Update settings

<figure><img src="/files/LrAnQcmEDjko1fBujm72" alt=""><figcaption><p>Update domain control settings (issuer backend).</p></figcaption></figure>

Use [Update Card Control Settings](https://thales-dis-dbp.stoplight.io/docs/d1-caas/fo3m7yl48larm-update-card-controls) to update control settings.

### Manage controls with the D1 SDK <a href="#using-d1-sdk" id="using-d1-sdk"></a>

End Users can view and update card controls from the issuer application using the D1 SDK. See [In-App Card Controls](/transaction-control/implement-transaction-control/implement-domain-controls/manage-in-app-card-controls.md).

#### Retrieve current settings

<figure><img src="/files/Qm1PDKBhIOotlc3X3HBQ" alt=""><figcaption><p>Retrieve current domain control settings (issuer application).</p></figcaption></figure>

#### Update settings

<figure><img src="/files/CUDQrHVGOdbRn4NgLjnO" alt=""><figcaption><p>Update domain control settings (issuer application).</p></figcaption></figure>

## Setup

Define default domain controls in the Card Product.

Cards inherit these domain controls when a card is created or registered in D1.

If you do not define an optional control in the Card Product, you cannot update that control later at card level.

#### Geography by region

See [Supported Regions](https://thales-dis-dbp.stoplight.io/docs/d1-caas/ddeec450dd753-geography-by-region-supported-regions) for the supported regions and their associated countries.


---

# 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:

```
GET https://docs.payments.thalescloud.io/transaction-control/implement-transaction-control/implement-domain-controls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
