Skip to main content
POST
Create a product

Overview

Creates a new card product under an existing program. A Card Product defines the scheme (VISA or Mastercard), card type (Consumer or Corporate), the feature set (3DS, Apple Pay, JIT), and the lifecycle controls (reloadability, one-time use, TTL, spend limits, cardholder card limits). Once created, the product productId is passed to POST /cards to issue cards under that configuration.
Products are shared resources — always written to the LIVE database regardless of whether your API key is LIVE or SANDBOX.

Path Parameters

Request Body

Required

Optional — Card Type

Optional — features Object

Features are validated against what your program catalog allows. Requesting a feature not enabled on your program returns 422 FEATURE_NOT_ALLOWED.

Optional — controls Object

Controls govern card lifecycle rules and are enforced at issuance and funding time.

Example

Success Response (201)

Product Controls in Practice

Non-reloadable (controls.isReloadable: false)

Use this for prepaid, gift-card, or expense-allowance products where the cardholder receives a fixed balance at issuance and cannot add more funds. Any call to POST /cards/{id}/fund will be rejected with 422 CARD_NOT_RELOADABLE.

One-time use (controls.isOneTimeUse: true)

Cards are automatically terminated after their first settled transaction. Best for single-purchase virtual cards where you want strong controls on card reuse. The card remains ACTIVE until the first settlement clears.

TTL cap (controls.cardTTLMonths)

The card provider normally sets card expiry based on the scheme default (often 3–5 years). Setting cardTTLMonths caps that to a shorter window — for example, 12 ensures cards expire within one year of issuance even if the provider would have granted longer. Defaults to 36 months when not provided.

Per-cardholder card limit (controls.maxCardsPerCardholder)

Enforced at issuance time. The limit counts all non-TERMINATED cards under this product for the same cardholder. Issuing a card that would breach the limit returns 409 CARDHOLDER_CARD_LIMIT_EXCEEDED. Defaults to 5 when not provided.

Spending limit (controls.spendingLimit + controls.spendingPeriod)

Sets a maximum spend cap on every card issued under this product. spendingLimit is expressed in the program currency (USD). spendingPeriod sets the window: Both default to 1000 / TRANSAMOUNT when not provided.

Error Codes

Authorizations

Authorization
string
header
required

API key from the FYATU CaaS portal. Pass as Authorization: Bearer <key>.

Path Parameters

id
string
required

Program ID (prefix prg_)

Body

application/json
name
string
required

Human-readable product name

Example:

"Prepaid VISA Consumer 12m"

scheme
enum<string>
required

Card network. Must match a scheme enabled on your program.

Available options:
VISA,
MASTERCARD
Example:

"VISA"

cardType
enum<string>
default:CONSUMER
Available options:
CONSUMER,
CORPORATE
Example:

"CONSUMER"

features
object

Feature flags validated against your program catalog.

controls
object

Card lifecycle and spend controls.

Response

Product created

success
boolean
Example:

true

status
integer
Example:

200

message
string
Example:

"Product retrieved"

data
object
meta
object