---
title: "Update Card Limit"
method: PUT
path: "/cards/limits/{cardId}"
tags: ["Cards"]
---

# Update Card Limit

`PUT /cards/limits/{cardId}`

Change the card limit for a given virtual or physical card, as long as the card is not terminated. This is unrelated to the renew frequency of the card.
Meaning you can update the limit of a card with a `TOTAL` renew frequency (equals no limit renewal) as well as a `MONTHLY` renew frequency etc.

**Additional limits:** Use the `additionalLimits` field to create, update, or remove additional limits on the card in the same request.
- Entries **with** an `id` → update the matching existing additional limit.
- Entries **without** an `id` → create a new additional limit.
- Existing additional limits **omitted** from the array → soft-delete (removed).
- Passing `null` or omitting `additionalLimits` → leave existing additional limits unchanged.
- Passing an **empty array `[]`** → remove all additional limits from the card.

**Response:** This endpoint returns `204 No Content`. To read the updated limit state use `GET /api/cards/{cardId}` or subscribe to the `CARD_LIMITS_CHANGED` callback.

## Path parameters

- `cardId` string, uuid, required

## Request body

- object
  - `limit` object, required — The limit of the card. The limit renews according to the `limitRenewFrequency` or never, if `limitRenewFrequency` is set to `TOTAL`.
    - `value` number — The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts.
    - `currency` string — The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)!
  - `limitRenewFrequency` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'ANNUAL' | 'TOTAL' — The frequency of the card limit renewal. * `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month, this is the default setting. * `QUARTERLY` - The card limit is renewed every calendar quarter. * `ANNUAL` - The card limit is renewed every year. * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore.
  - `transactionLimit` object, required — The transaction limit of the card. Meaning the maximum amount of a single transaction. This is always below or equal to the `limit` of the card.
    - `value` number — The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts.
    - `currency` string — The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)!
  - `maxTransactionCount` number — Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires.
  - `monthlyLimit` object
    - `value` number — The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts.
    - `currency` string — The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)!
  - `additionalLimits` object[], nullable — Additional limits to create, update, or remove. See endpoint description for update semantics.
    - `id` string, uuid, nullable — Identifies an existing additional limit to update. Omit or set to null to create a new limit. Only meaningful for `PUT /api/cards/limits/{cardId}` and `POST /api/cards/limits/requests`.
    - `limitRenewFrequency` 'PER_TRANSACTION' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'ANNUAL' | 'TOTAL' — The renewal frequency for this additional limit. `PER_TRANSACTION` is only valid for additional limits, not for the card's primary limit. * `PER_TRANSACTION` - Limit applies to each individual transaction. * `DAILY` - The limit is renewed every day. * `WEEKLY` - The limit is renewed every week. * `MONTHLY` - The limit is renewed every calendar month. * `QUARTERLY` - The limit is renewed every calendar quarter. * `ANNUAL` - The limit is renewed every year. * `TOTAL` - The limit is never renewed. Once spent, no further transactions are allowed under this limit.
    - `limit` object — The monetary cap for this additional limit. For unscoped limits and limits with `categories`, `acceptanceMethods`, or `atmWithdrawal` scope, the currency must match the card account currency. For currency-scoped limits (`scope.currency` is set), the currency must match `scope.currency`.
      - `value` number — The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts.
      - `currency` string — The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar.
    - `maxTransactionCount` number, nullable — Max number of transactions per renewal period (`1..999999999`). Null means no cap.
    - `scope` object, nullable — Restricts when this limit applies. Null for a general (unscoped) limit. At least one of `categories`, `acceptanceMethods`, `atmWithdrawal: true`, or `currency` must be set for a scoped limit.
      - `categories` string[], nullable — Merchant category types this limit applies to.
      - `acceptanceMethods` string[], nullable — The card acceptance methods this limit applies to.
      - `atmWithdrawal` boolean, nullable — When `true`, this additional limit applies to ATM withdrawal transactions.
      - `currency` string, nullable — ISO 4217 currency code this limit applies to, e.g. `PLN` or `USD`. When set, the limit tracks spending in that currency only and is independent of the card's billing currency. Constraints: * Must differ from the card account's billing currency. * The `limit` amount currency must equal this value.

## Response `204`

Ok

## Other responses

- `400` — unresolved $ref
- `401` — unresolved $ref
- `403` — unresolved $ref
- `404` — unresolved $ref
- `429` — unresolved $ref
- `500` — unresolved $ref

---

[API](https://skmtc.dev/getpliant/apis/pliant-customer-api.md) · [All operations](https://skmtc.dev/getpliant/apis/pliant-customer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getpliant/pliant-customer-api/revisions/f3f589cfa718/schema)
