---
title: "Create a transaction rule"
method: POST
path: "/transactionRules"
tags: ["Transaction rules"]
---

# Create a transaction rule

`POST /transactionRules`

Creates a [transaction rule](https://docs.adyen.com/issuing/transaction-rules). When your user makes a transaction with their Adyen-issued card, the transaction is allowed or declined based on the conditions and outcome defined in the transaction rule. You can apply the transaction rule to several cards, such as all the cards in your platform, or to a specific card. For use cases, see [examples](https://docs.adyen.com/issuing/transaction-rules/examples).

## Request body

- TransactionRuleInfo
  - `amount` Amount
    - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the amount.
    - `value` integer, required — The numeric value of the amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
  - `balancePlatformId` string — The unique identifier of the [balance platform](https://docs.adyen.com/api-explorer/#/balanceplatform/v1/get/balancePlatforms/{id}__queryParam_id) to which the rule applies.
  - `countries` string[] — List of countries to which the rule applies. For example: **["NL","US"]**.
  - `description` string, required — Your description for the transaction rule.
  - `endDate` string — The date when the rule will stop being evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**. If not provided, the rule will be evaluated until the rule status is set to **inactive**.
  - `entryModes` string[] — List of point-of-sale entry modes to which the rule applies. Possible values: **manual**, **chip**, **magstripe**, **contactless**, **cof**, **token**, **server**, **barcode**, **ocr**.
  - `interval` TransactionRuleInterval, required
    - `type` 'daily' | 'lifetime' | 'monthly' | 'perTransaction' | 'weekly', required — The [type of interval](https://docs.adyen.com/issuing/transaction-rules#time-intervals) during which the rule conditions and limits apply, and how often counters are reset. Possible values: * **perTransaction**: conditions are evaluated and the counters are reset for every transaction. * **daily**: the counters are reset daily at 00:00:00 UTC. * **weekly**: the counters are reset every Monday at 00:00:00 UTC. * **monthly**: the counters reset every first day of the month at 00:00:00 UTC. * **lifetime**: conditions are applied to the lifetime of the payment instrument.
  - `maxTransactions` integer — The maximum number of transactions that a payment instrument can be used for in the period specified in the `interval.type`.
  - `mccs` string[] — List of Merchant Category Codes (MCCs) to which the rule applies.
  - `paymentInstrumentGroupId` string — The unique identifier of the [payment instrument group](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstrumentGroups__resParam_id) to which the rule applies.
  - `paymentInstrumentId` string — The unique identifier of the [payment instrument](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstruments__resParam_id) to which the rule applies.
  - `processingTypes` string[] — List of processing types to which the rule applies. Possible values: **atmWithdraw**, **pos**, **ecommerce**, **moto**, **recurring**, **balanceInquiry**.
  - `reference` string, required — Your reference for the transaction rule.
  - `startDate` string — The date when the rule will start to be evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**. If not provided when creating a transaction rule, the `startDate` is set to the date when the rule status is set to **active**.
  - `status` 'active' | 'inactive' — The status of the transaction rule. If you provide a `startDate` in the request, the rule is automatically created with an **active** status. Possible values: **active**, **inactive**.
  - `type` 'allowList' | 'blockList' | 'maxUsage' | 'velocity', required — Type of conditions provided in the rule. Possible values: * **allowList**: The rule provides categories (such as country and MCC) where payments must be allowed. * **blockList**: The rule provides categories (such as country and MCC) where payments must be blocked. * **maxUsage**: The rule sets limits for the maximum amount or maximum number of transactions for the lifetime of the payment instrument. * **velocity**: The rule sets limits for the maximum amount or maximum number of transactions for a given time interval.

## Response `200`

OK - the request has succeeded.

- TransactionRule
  - `amount` Amount
    - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the amount.
    - `value` integer, required — The numeric value of the amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
  - `balancePlatformId` string — The unique identifier of the [balance platform](https://docs.adyen.com/api-explorer/#/balanceplatform/v1/get/balancePlatforms/{id}__queryParam_id) to which the rule applies.
  - `countries` string[] — List of countries to which the rule applies. For example: **["NL","US"]**.
  - `description` string, required — Your description for the transaction rule.
  - `endDate` string — The date when the rule will stop being evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**. If not provided, the rule will be evaluated until the rule status is set to **inactive**.
  - `entryModes` string[] — List of point-of-sale entry modes to which the rule applies. Possible values: **manual**, **chip**, **magstripe**, **contactless**, **cof**, **token**, **server**, **barcode**, **ocr**.
  - `id` string — The unique identifier of the transaction rule.
  - `interval` TransactionRuleInterval, required
    - `type` 'daily' | 'lifetime' | 'monthly' | 'perTransaction' | 'weekly', required — The [type of interval](https://docs.adyen.com/issuing/transaction-rules#time-intervals) during which the rule conditions and limits apply, and how often counters are reset. Possible values: * **perTransaction**: conditions are evaluated and the counters are reset for every transaction. * **daily**: the counters are reset daily at 00:00:00 UTC. * **weekly**: the counters are reset every Monday at 00:00:00 UTC. * **monthly**: the counters reset every first day of the month at 00:00:00 UTC. * **lifetime**: conditions are applied to the lifetime of the payment instrument.
  - `maxTransactions` integer — The maximum number of transactions that a payment instrument can be used for in the period specified in the `interval.type`.
  - `mccs` string[] — List of Merchant Category Codes (MCCs) to which the rule applies.
  - `paymentInstrumentGroupId` string — The unique identifier of the [payment instrument group](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstrumentGroups__resParam_id) to which the rule applies.
  - `paymentInstrumentId` string — The unique identifier of the [payment instrument](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstruments__resParam_id) to which the rule applies.
  - `processingTypes` string[] — List of processing types to which the rule applies. Possible values: **atmWithdraw**, **pos**, **ecommerce**, **moto**, **recurring**, **balanceInquiry**.
  - `reference` string, required — Your reference for the transaction rule.
  - `startDate` string — The date when the rule will start to be evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**. If not provided when creating a transaction rule, the `startDate` is set to the date when the rule status is set to **active**.
  - `status` 'active' | 'inactive' — The status of the transaction rule. If you provide a `startDate` in the request, the rule is automatically created with an **active** status. Possible values: **active**, **inactive**.
  - `type` 'allowList' | 'blockList' | 'maxUsage' | 'velocity', required — Type of conditions provided in the rule. Possible values: * **allowList**: The rule provides categories (such as country and MCC) where payments must be allowed. * **blockList**: The rule provides categories (such as country and MCC) where payments must be blocked. * **maxUsage**: The rule sets limits for the maximum amount or maximum number of transactions for the lifetime of the payment instrument. * **velocity**: The rule sets limits for the maximum amount or maximum number of transactions for a given time interval.

## Other responses

- `400` — Bad Request - a problem reading or understanding the request.
- `401` — Unauthorized - authentication required.
- `403` — Forbidden - insufficient permissions to process the request.
- `422` — Unprocessable Entity - a request validation error.
- `500` — Internal Server Error - the server could not process the request.

## Changes

- **2026-07-20** (v1) `c3d956efeb4f` — 10 warning, 1 info
  - removed the optional property `response/paths` from the response with the `400` status
  - removed the optional property `response/paths` from the response with the `401` status
  - removed the optional property `response/paths` from the response with the `403` status
  - removed the optional property `response/paths` from the response with the `422` status
  - …7 more
- **2023-03-02** (v1) `05edbc423e82` — 31 breaking
  - the request's body type changed from no type to `object`
  - the `amount` request property type changed from no type to `object`
  - the `interval` request property type changed from no type to `object`
  - the response's body type changed from no type to `object` for status `200`
  - …27 more
- **2022-09-02** (v1) `e48afdf2a901` — 7 breaking, 7 info
  - removed the enum value `purchaseWithCashback` of the request property `processingTypes/items/`
  - removed the enum value `token` of the request property `entryModes/items/`
  - removed the required property `errorType` from the response with the `400` status
  - removed the required property `errorType` from the response with the `401` status
  - …10 more
- …earlier changes not shown

[Full history](https://skmtc.dev/adyen/apis/balanceplatformservice/changes/transactionRules/post.md)

---

[API](https://skmtc.dev/adyen/apis/balanceplatformservice.md) · [All operations](https://skmtc.dev/adyen/apis/balanceplatformservice/llms.txt) · [OpenAPI document](https://skmtc.dev/adyen/apis/balanceplatformservice/revisions/c3d956efeb4f?raw)
