Skip to main content
POST
Create card

Authorizations

x-api-key
string
header
required

Enter your API key

Headers

Idempotency-Key
string

Replaying the same key returns the original result.

Body

application/json
type
string
required

Type of card to create.

Allowed value: "virtual"
title
string
required

Nickname for the card.

Maximum string length: 255
Pattern: \S
cardholderId
string
required

User ID of the team member who will hold the card. Use a userId returned by the team-members endpoint.

planType
enum<string>

Funding plan. Defaults to subscription; topUp uses fixed reserved credit supplied in spendCap.

Available options:
subscription,
topUp
category
string | null

ID of the card category to assign.

isRevolving
boolean

Whether the card draws funds from the revolving budget. Must be false or omitted when planType is topUp.

expiresAt
string<date> | null

Requested card expiration date in YYYY-MM-DD format. Time is unsupported.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
spendCap
object

Fixed credit reserved for a top-up card. Required when planType is topUp.

spendControl
object

Spending limits to apply to the card.

restriction
object

Time and transaction-category restrictions to apply.

message
string | null

Optional message stored with the card request.

Maximum string length: 255

Response

Card created. When the card is not yet readable, the body degrades to { id, status: "pending" } — poll the Location header.

id
string
required

Unique card ID.

type
enum<string>
required

Card form factor.

Available options:
virtual,
physical
status
enum<string>
required

Derived card lifecycle status. Pending physical cards await activation; expiring physical cards are within 90 days of expiry.

Available options:
pending,
active,
frozen,
inactive,
expiring,
expired,
terminated
title
string | null
required

Card nickname.

last4
string | null
required

Last four digits of the card number.

expiresAt
string<date> | null
required

Card expiration date in YYYY-MM-DD format. Time is unsupported.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
isRevolving
boolean
required

Whether the card draws funds from the revolving budget.

planType
enum<string> | null
required

Funding plan: physical identifies physical-card plans, subscription cards can share the revolving budget, and top-up cards use fixed reserved credit.

Available options:
physical,
subscription,
topUp
category
string | null
required

ID of the card category assigned to the card.

cardholder
object
required

Team member assigned to the card.

spendCap
object | null
required

Fixed credit reserved for the card; used as the funding amount for top-up cards.

spentAmount
object
required

Total amount spent on the card.

spendControl
object
required

Card-spending and ATM controls with current period usage.

restriction
object
required

Time and transaction-category restrictions applied to the card.

createdAt
string<date-time>
required

Date and time the card was created, in ISO 8601 format.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
updatedAt
string<date-time>
required

Date and time the card was last updated, in ISO 8601 format.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$