Skip to main content
POST
Create debit card
This feature is in Beta and not ready for production integration.

Authorizations

Authorization
string
header
required

Application (M2M) OAuth2 access token (client credentials).

Body

Request to issue a debit card against a funding bank account. The debit card is provisioned through TSYS and linked to the caller's bank account (the DDA) resolved from Guid CreateDebitCardRequest.BankAccountId. Field- and cross-field validation (formats, lengths, card-type/shipping-address rules) is owned by CreateDebitCardRequestValidator (FluentValidation) so failures surface as our EmbedProblemDetails. A structurally absent required member still yields the framework's default 400 during deserialization — the same contract as the other issuance endpoints (e.g. credit cards).

bankAccountId
string<uuid>
required

The funding bank account (DDA) the card draws against.

cardType
enum<string>
required

Whether to provision a DIGITAL or PHYSICAL card. PHYSICAL requires a shipping address.

Available options:
DIGITAL,
PHYSICAL
reference
string
required

Caller-defined external reference, unique per organization: repeating a request with the same reference returns the card it issued instead of issuing another, and reusing it for a different request is a 409. Forwarded verbatim to TSYS as the ExternalApplicationId. Free-form text, max 50 characters (TSYS limit).

nickname
null | string

Optional caller-defined display nickname for the card, persisted and returned. When omitted or blank/whitespace, a default label is derived from the card type ("Virtual card" for DIGITAL, "Physical card" for PHYSICAL).

shippingAddress
null | object

Shipping address for a PHYSICAL card. Required for PHYSICAL, disallowed for DIGITAL.

userId
null | string<uuid>

The user the card is issued to. Cardholder identity (name, etc.) is sourced from this user's profile. Defaults to the calling user when omitted; required when the caller is not an individual user (e.g. application tokens), otherwise the request is rejected with a 400.

Response

Created

id
string<uuid>
required
bankAccountId
string<uuid>
required
capabilities
object
required

Which operations the card's provider supports. A true value does not mean the card's current status allows the operation: a closed card still reports lock when its provider supports locking.

cardBrand
enum<string>
required

The card network (brand) an issued card runs on, such as Visa or Mastercard.

Available options:
UNKNOWN,
VISA,
MASTERCARD,
DISCOVER,
AMERICAN_EXPRESS
cardStatus
enum<string>
required
Available options:
PENDING_ACTIVATION,
ACTIVE,
LOCKED,
CLOSED
cardType
enum<string>
required
Available options:
DIGITAL,
PHYSICAL
cardholderName
string
required
createdAt
string<date-time>
required
expirationDate
string
required
lastFourDigits
string
required
reference
string
required
updatedAt
string<date-time>
required
userId
string<uuid>
required
description
null | string
nickname
null | string
statusReason
null | enum<string>

Why the card is LOCKED or CLOSED, when a reason was given. Null otherwise.

Available options:
LOST,
STOLEN,
FRAUD,
CARDHOLDER_EXIT,
REPLACED,
EXPIRED