---
api: 'Business API'
---

# Update card settings

Update settings for a specific card, based on its ID.

:::note
- This feature is not available in Sandbox.
- To increase your account's card limits, please contact [Revolut API Support](mailto:api-requests@revolut.com).
:::

:::warning
Some spend control parameters can affect one another.
When updating spend controls, review the resulting settings in the response to ensure they reflect the configuration you intended.
:::

For more information, see the guides: [Manage cards](/docs/guides/manage-accounts/cards/manage-cards).

## Endpoint

PATCH `/cards/{card_id}`

## Parameters

### path parameters

- `card_id` (string, required)
  The ID of the card.

## Request body

### Attributes

- `label` (string, optional)
    The label of the card.
- `spending_limits` (object, optional)
    All spending limits set for the card.
    
    You can have at most 1 periodic (day/week/month/quarter/all-time) and 1 non-periodic (single transaction) limit at a time.
    If you try to specify 2 periodic limits at a time, it will result in an error.
    
    Use `null` as the value for a specific limit to erase that limit.
    Use `null` as the value for the `spending_limits` object to erase all limits.
    
    :::note
    Updating a spending limit does not reset the spending counter.
    For more information, see the guides: [Manage cards - Update a card](/docs/guides/manage-accounts/cards/manage-cards#update-a-card).
    :::
  - `spending_limits.single` (object, optional)
      The limit for a single transaction.
    - `spending_limits.single.amount` (number)
        The value of the spending limit.
    - `spending_limits.single.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.day` (object, optional)
      The daily limit for transactions.
    - `spending_limits.day.amount` (number)
        The value of the spending limit.
    - `spending_limits.day.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.week` (object, optional)
      The weekly limit for transactions.
    - `spending_limits.week.amount` (number)
        The value of the spending limit.
    - `spending_limits.week.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.month` (object, optional)
      The monthly limit for transactions.
    - `spending_limits.month.amount` (number)
        The value of the spending limit.
    - `spending_limits.month.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.quarter` (object, optional)
      The quarterly limit for transactions.
    - `spending_limits.quarter.amount` (number)
        The value of the spending limit.
    - `spending_limits.quarter.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.year` (object, optional)
      The yearly limit for transactions.
    - `spending_limits.year.amount` (number)
        The value of the spending limit.
    - `spending_limits.year.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.all_time` (object, optional)
      The all-time limit for transactions.
    - `spending_limits.all_time.amount` (number)
        The value of the spending limit.
    - `spending_limits.all_time.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
- `spending_period` (object, optional)
    The controls for the card's spending period.
    
    They let you set or modify the dates when the card becomes available or unavailable for spending, and define what happens after the end date.
    
    If specified, you must provide at least one of these:
    - `start_date`
    - `end_date` together with `end_date_action`
    
    The spending period dates must be in the future.
    
    The dates are inclusive.
    This means that:
    - If you set the `start_date` to `2025-12-31`, the card will become active on that day.
    - If you set the `end_date` to `2026-06-01`, the card will be active through that day, and will be locked/terminated starting on 2nd June 2026.
    
    :::note []
    If you wish to unlock a card with a spending period starting in the future and make it available for spending right away, you can do it in a few ways, depending on your use case:
    - To remove the start date, but keep the end date settings, provide the current `spending_period` settings without the `start_date`.
    - To remove the start date when no end date is set, provide the `spending_period.start_date` set to `null`.
    - To remove **all** spending period settings, either provide `spending_period` set to `null`, or use the dedicated endpoint to [unlock](/docs/api/business#unlock-card) the card.
    
    If you wish to erase a spending period end date, you can do this in a similar way, applying the steps to `spending_period.end_date` and `spending_period.end_date_action`.
    :::
  - `spending_period.start_date` (string, optional)
      The start date (inclusive) of the spending period, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DD`).
      Uses the [timezone set by the business](https://business.revolut.com/settings/appearance), or defaults to `Europe/London`.
  - `spending_period.end_date` (string, optional)
      The end date (inclusive) of the spending period, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DD`).
      Uses the [timezone set by the business](https://business.revolut.com/settings/appearance), or defaults to `Europe/London`.
  - `spending_period.end_date_action` (enum, optional)
      The action to take after the end date of the spending period.
      Possible enum values:

      - `lock`
      - `terminate`
- `categories` (array of enum, optional)
    The list of merchant categories that will be available for card spending.
    Use `null` to erase the value and reset to empty (all categories will be allowed).
    
    :::note
    The `categories` and `merchant_controls` parameters have the following restrictions:
    - If you set `categories`, you **cannot** set `merchant_controls.control_type` to `allow`.
    - You **can** set `merchant_controls.control_type` to `block`.
    - You may also set **either** `categories` or `merchant_controls` independently, or **set neither**.
    - Both parameters can be used together **only** if `merchant_controls.control_type` is `block`.
    :::
- `merchant_controls` (object, optional)
    The merchant-level controls for card spending.
    
    They let you block or allow the card to only transact with specific merchants:
    - `allow`: permits only the specified merchants (cannot be used if the `categories` parameter is set).
    - `block`: blocks the specified merchants (can be used with or without `categories`).
  - `merchant_controls.control_type` (enum)
      The type of control to apply.
      Possible enum values:

      - `block`
      - `allow`
  - `merchant_controls.merchant_ids` (array of string)
      The list of IDs of merchants to which the control applies.
      
      :::tip
      To find merchant IDs, check transaction details (→ `merchant.id`).
      You can fetch transaction details for a [specific transaction](/docs/api/business#get-transaction#response) or for [all transactions](/docs/api/business#get-transactions#response).
      :::
- `countries` (array of string, optional)
    The list of countries where the card can be used, provided as 2-letter [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) codes.
- `accounts` (array of string, optional)
    The list of accounts to link to the card.
    If not specified, all accounts will be linked.
    To retrieve account IDs, use the [`GET /accounts` operation](/docs/api/business#get-accounts).

## Returns

### 200

Information about the updated card

:::note
If you modify the card's spending period in the request, the card's `state` returned in the response might not yet reflect those changes.
This is because these spending period locks are applied to the card asynchronously, which might result in a slight delay in the card's state update.

To re-check the state, [fetch the card's details](/docs/api/business#get-card).
:::

#### Response attributes

- `id` (string)
    The ID of the card.
- `holder_id` (string, optional)
    The ID of the team member who is the holder of the card.
    If the card belongs to the business, this will be empty.
    
    For more information, see the guides: [Manage Cards - Create a virtual card](/docs/guides/manage-accounts/cards/manage-cards#create-a-virtual-card).
- `contact_ids` (array of string, optional)
    The list of contacts for a [company card](/docs/guides/manage-accounts/cards/manage-cards#different-types-of-cards).
- `created_at` (string)
    The date and time the card was created in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
- `updated_at` (string)
    The date and time the card was last updated in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
- `product` (object, optional)
    The card product offered by the card provider for this card.
    In other words, the program that the card was issued under.
    
    :::note
    This property is only available to travel intermediaries using our travel solution.
    To use it, please contact [Revolut API Support](mailto:api-requests@revolut.com).
    :::
  - `product.code` (string)
      The code of the card product.
- `virtual` (boolean)
    Specifies whether the card is virtual (`true`) or physical (`false`).
- `last_digits` (string)
    The last 4 digits of the card's PAN.
- `expiry` (string)
    The card expiration date.
- `label` (string, optional)
    The label of the card.
- `references` (array of object, optional)
    References for the card.
    Up to 5 name-value pairs assigned to the card for tracking.
    
    :::info
    Each time the card is used, the references are recorded in the [transaction details](/docs/api/business#get-transaction#response) (`card.references`), helping track transactions made with this card.
    :::
    
    The names must be unique.
    The references can be [amended](/docs/api/business#update-card-references) up to 10 times.
    
    References are only supported for cards owned by the business (i.e. [company](/docs/guides/manage-accounts/cards/manage-cards#different-types-of-cards) or [auto-issued cards](/docs/guides/manage-accounts/cards/manage-cards#different-types-of-cards)).
    They are **not** supported for [team member cards](/docs/guides/manage-accounts/cards/manage-cards#different-types-of-cards) (i.e. with `holder_id` present).
    
    :::note
    The references recorded on a transaction are those assigned to the card at the time the transaction took place.
    If the references are amended, they will only be applied to future transactions.
    Existing transaction are not affected.
    :::
  - `references[].name` (string)
      The name of the card reference.
      Must be unique.
  - `references[].value` (string)
      The value for this reference.
- `state` (enum)
    The state that the card is in.
    
    Possible values:
    - `active`: The card is available for spending. 
      Newly created cards typically go into `active` unless subject to certain conditions, for example, spending period starting in the future.
    - `frozen`: The card has been frozen and is temporarily unavailable for spending. 
    - `locked`: The card is locked, typically due to an [admin lock](/docs/api/business#lock-card) or spending period settings, i.e. when its `spending_period.start_date` is in the future or `spending_period.end_date` is in the past.
      A locked card is unavailable for spending until it's [unlocked](/docs/api/business#unlock-card) and active.
      :::tip
      To see if the card can be unlocked, check the `can_be_unlocked` parameter.
      Note that you'll still need the [necessary scope or permission](/docs/guides/manage-accounts/cards/manage-cards#lock-or-unlock-cards) to unlock it.
      :::
    - `created`: The card has been created but is not yet active.
      Used only for a specific type of cards.
    - `pending`: This status is currently not in use.
    Possible enum values:

    - `created`
    - `pending`
    - `active`
    - `frozen`
    - `locked`
- `can_be_unlocked` (boolean, optional)
    Returned for locked cards (`state=locked`).
    Indicates whether the card can be [unlocked](/docs/api/business#unlock-card) manually (via API or in-app).
    If `true`, you'll still need the [necessary scope or permission](/docs/guides/manage-accounts/cards/manage-cards#lock-or-unlock-cards) to unlock the card.
    
    :::info
    Cards can be locked for various reasons.
    For example, a card can be locked by the user, due to spending period settings, or automatically by the system.
    Only certain types of lock can be lifted manually.
    :::
- `spend_program` (object, optional)
    The [spend program](https://help.revolut.com/business/help/making-paymentsbusiness/spend-controls/setting-card-presets-for-my-team-members/) assigned to the card.
    :::note
    To use this property, please contact [Revolut API Support](mailto:api-requests@revolut.com).
    :::
  - `spend_program.label` (string)
      The name of the spend program.
- `spending_limits` (object, optional)
    All spending limits set for the card.
  - `spending_limits.single` (object, optional)
      The limit for a single transaction.
    - `spending_limits.single.amount` (number)
        The value of the spending limit.
    - `spending_limits.single.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.day` (object, optional)
      The daily limit for transactions.
    - `spending_limits.day.amount` (number)
        The value of the spending limit.
    - `spending_limits.day.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.week` (object, optional)
      The weekly limit for transactions.
    - `spending_limits.week.amount` (number)
        The value of the spending limit.
    - `spending_limits.week.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.month` (object, optional)
      The monthly limit for transactions.
    - `spending_limits.month.amount` (number)
        The value of the spending limit.
    - `spending_limits.month.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.quarter` (object, optional)
      The quarterly limit for transactions.
    - `spending_limits.quarter.amount` (number)
        The value of the spending limit.
    - `spending_limits.quarter.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.year` (object, optional)
      The yearly limit for transactions.
    - `spending_limits.year.amount` (number)
        The value of the spending limit.
    - `spending_limits.year.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
  - `spending_limits.all_time` (object, optional)
      The all-time limit for transactions.
    - `spending_limits.all_time.amount` (number)
        The value of the spending limit.
    - `spending_limits.all_time.currency` (string)
        The currency of the spending limit, provided as [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code in upper case.
- `spending_period` (object, optional)
    The controls for the card's spending period.
    
    They specify the dates when the card becomes available or unavailable for spending, and define what happens after the end date.
  - `spending_period.start_date` (string, optional)
      The start date (inclusive) of the spending period, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DD`).
      Uses the [timezone set by the business](https://business.revolut.com/settings/appearance), or defaults to `Europe/London`.
  - `spending_period.end_date` (string, optional)
      The end date (inclusive) of the spending period, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DD`).
      Uses the [timezone set by the business](https://business.revolut.com/settings/appearance), or defaults to `Europe/London`.
  - `spending_period.end_date_action` (enum, optional)
      The action to take after the end date of the spending period.
      Possible enum values:

      - `lock`
      - `terminate`
- `categories` (array of enum, optional)
    The list of merchant categories that are available for card spending. If not specified, categories are not restricted.
- `merchant_controls` (object, optional)
    The merchant-level controls for card spending.
    
    They block or allow the card to only transact with specific merchants: 
    - `allow`: permits only the specified merchants (cannot be used if the `categories` parameter is set)
    - `block`: blocks the specified merchants (can be used with or without `categories`)
  - `merchant_controls.control_type` (enum)
      The type of control to apply.
      Possible enum values:

      - `block`
      - `allow`
  - `merchant_controls.merchant_ids` (array of string)
      The list of IDs of merchants to which the control applies.
      
      :::tip
      To find merchant IDs, check transaction details (→ `merchant.id`).
      You can fetch transaction details for a [specific transaction](/docs/api/business#get-transaction#response) or for [all transactions](/docs/api/business#get-transactions#response).
      :::
- `countries` (array of string, optional)
    The list of countries where the card can be used, specified as 2-letter [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) codes.
- `accounts` (array of string)
    The list of linked accounts.

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Nothing to update or the provided details are unsupported for this operation  If the invalid value is an array item, the error might indicate the array index of this faulty item, counting from `0`.  For example, if you provide the list of countries, such as `"countries": ["GB", "USA", ...]`, the first item (`GB`) has index `0`, the second item (`USA`) has index `1`, and so on. In the example, `USA` is invalid, because it should be a 2-letter code. In such a case, the error will indicate that `countries[1]` is invalid, thus pointing to the second item in the array, i.e. `USA`. |
| 404 | Card doesn't exist  The card for which you wish to update details does not exist. |
| 422 | Unprocessable entity  For example, you try to provide a spending period end date that's in the past. |
