---
title: "POST /card-group"
method: POST
path: "/card-group"
---

# POST /card-group

`POST /card-group`

Create a card group.

## Request body

- object
  - `name` string, required
  - `virtualAccountId` string — The ID of the virtual account to associate with the card group. If not provided, the primary virtual account will be used.
  - `spendingConstraint` SpendingConstraint — A constraint that can be applied to a CardGroupSpendingRule
    - `merchantCategoryRule` object, nullable
      - `merchantCategories` string[], required
      - `restriction` 'allowlist' | 'blacklist', required
    - `merchantRule` object, nullable
      - `merchants` string[], required
      - `restriction` 'allowlist' | 'blacklist', required
    - `spendingRule` object, nullable
      - `utilizationLimit` object
        - `timezone` string — IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
        - `limitAmount` Money, required — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `preset` 'daily' | 'weekly' | 'monthly' | 'yearly' | 'collective', required
        - `startDate` string — Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start limit.
      - `utilizationLimitV2` object[]
        - `timezone` string — IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
        - `limitAmount` Money, required — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `preset` 'daily' | 'weekly' | 'monthly' | 'yearly' | 'collective', required
        - `startDate` string — Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start limit.
      - `transactionSizeLimit` object
        - `minimum` Money — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `maximum` Money — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
    - `countryRule` object, nullable
      - `countries` string[], required — A 2 digit country code
      - `restriction` 'allowlist' | 'blacklist', required
    - `merchantCategoryCodeRule` object, nullable
      - `merchantCategoryCodes` string[], required
      - `restriction` 'allowlist' | 'blacklist', required

## Response `200`

OK

- CardGroup
  - `id` string, required
  - `name` string, required
  - `virtualAccountId` string — The ID of the virtual account that the card group is associated with
  - `spendingConstraint` SpendingConstraint — A constraint that can be applied to a CardGroupSpendingRule
    - `merchantCategoryRule` object, nullable
      - `merchantCategories` string[], required
      - `restriction` 'allowlist' | 'blacklist', required
    - `merchantRule` object, nullable
      - `merchants` string[], required
      - `restriction` 'allowlist' | 'blacklist', required
    - `spendingRule` object, nullable
      - `utilizationLimit` object
        - `timezone` string — IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
        - `limitAmount` Money, required — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `preset` 'daily' | 'weekly' | 'monthly' | 'yearly' | 'collective', required
        - `startDate` string — Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start limit.
      - `utilizationLimitV2` object[]
        - `timezone` string — IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
        - `limitAmount` Money, required — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `preset` 'daily' | 'weekly' | 'monthly' | 'yearly' | 'collective', required
        - `startDate` string — Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start limit.
      - `transactionSizeLimit` object
        - `minimum` Money — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
        - `maximum` Money — Represents a monetary value
          - `amountCents` integer, required — The amount in cents
    - `countryRule` object, nullable
      - `countries` string[], required — A 2 digit country code
      - `restriction` 'allowlist' | 'blacklist', required
    - `merchantCategoryCodeRule` object, nullable
      - `merchantCategoryCodes` string[], required
      - `restriction` 'allowlist' | 'blacklist', required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `429` — TooManyRequests
- `500` — Internal Error

---

[API](https://skmtc.net/slashfi/apis/slash-public-api.md) · [All operations](https://skmtc.net/slashfi/apis/slash-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/slashfi/slash-public-api/versions/773c90f079c5/schema)
