Create Card
Cards
Create Card
Issue a new virtual Mastercard or Visa prepaid card programmatically. Specify cardholder, amount, and product. POST /cards.
POST
Create Card
Documentation Index
Fetch the complete documentation index at: https://docs.fyatu.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Issue a new virtual card to a cardholder. The cardholder must have verified KYC status and your business wallet must have sufficient balance for the card amount plus fees.Prerequisites
- Verified Cardholder: The cardholder must exist and have
status: ACTIVE - Sufficient Balance: Wallet must cover:
amount (in USD) + issuanceFee - Active Application: Your app must be in
ACTIVEstatus
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
cardholderId | string | Yes | ID of the cardholder to issue card to |
amount | number | Yes | Initial funding amount in product currency (minimum $5 or €5) |
name | string | No | Name on card (defaults to cardholder name) |
productId | string | No | Card product to issue (from List Products). Defaults to the product marked isDefault: true |
spendingLimit | integer | No | Deprecated — Use productId instead. Monthly spending limit: 5000 or 10000 (default: 5000) |
Example Usage
EUR Card Example
When issuing a EUR-denominated card, theamount is specified in EUR. Your wallet (USD) is debited the equivalent in USD at the current exchange rate.
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique card identifier |
cardholderId | string | The cardholder this card belongs to |
name | string | Name printed on the card |
last4 | string | null | Last 4 digits of the card number. null when status is PROCESSING |
maskedNumber | string | null | Masked card number (e.g., ****4829). null when status is PROCESSING |
expiryDate | string | null | Card expiration date (MM/YYYY). null when status is PROCESSING |
brand | string | Card brand: MASTERCARD or VISA |
currency | string | Card currency: USD or EUR |
status | string | Card status: ACTIVE or PROCESSING (see below) |
initialBalance | number | Initial funding amount in card currency |
createdAt | string | Card creation timestamp |
Card Status on Creation
Some card products are created asynchronously. When this happens, the API returns immediately withstatus: PROCESSING and card details (last4, maskedNumber, expiryDate) will be null.
Once the card is ready, a card.created webhook is sent with the full card details and status: ACTIVE. If creation fails, a card.failed webhook is sent and the held balance is released.
| Status | Meaning |
|---|---|
ACTIVE | Card is ready to use immediately |
PROCESSING | Card is being created — listen for card.created or card.failed webhook |
You can poll
GET /cards/{cardId} to check the card status, but we strongly recommend using webhooks instead of polling.Webhook Events
card.created
Sent when a PROCESSING card becomes active:
card.failed
Sent when a PROCESSING card fails to be created. The held balance is automatically released.
Error Responses
| Error Code | Description |
|---|---|
APP_INACTIVE | Application is not active |
CARDHOLDER_INACTIVE | Cardholder is not active (KYC not verified) |
INSUFFICIENT_BALANCE | Business wallet balance is too low |
PRODUCT_NOT_FOUND | Card product not found |
PRODUCT_INACTIVE | Card product is currently inactive |
PRODUCT_UNAVAILABLE | Card product is temporarily unavailable for new issuance |
RATE_UNAVAILABLE | Unable to fetch exchange rate for EUR products |
HOLD_FAILED | Failed to hold balance from business wallet |
PROVIDER_NOT_CONFIGURED | Card provider account not configured |
CARD_CREATION_FAILED | Failed to create card at the bank partner |
CARDHOLDER_REGISTRATION_FAILED | Failed to register cardholder with card provider |
CARDHOLDER_RESTRICTED | Cardholder has been restricted by the card provider |
BUSINESS_KYB_REQUIRED | Business KYB verification incomplete |
Authorizations
JWT access token obtained from /auth/token
Body
application/json
ID of the cardholder to issue card to
Initial funding amount in product currency (minimum $5 or €5)
Required range:
x >= 5Name on card (defaults to cardholder name if not provided)
Minimum string length:
4Card product to issue (from List Products endpoint). Determines brand, currency, and spending limit. Defaults to the product marked isDefault if not provided.
Example:
"MCUSD1"
Deprecated — Use productId instead. Monthly spending limit in USD.
Available options:
5000, 10000 
