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 — Choosing a BIN

Omit binCode and nothing changes: the product is created from scheme exactly as before. Supply it to choose where cards are issued and which capabilities they carry. A BIN’s capabilities are fixed by the issuer — they cannot be enabled per product. Requesting a feature the BIN does not carry returns 400 FEATURE_NOT_SUPPORTED_BY_BIN rather than creating a product that promises something its cards can never deliver. All BINs are virtual and settle in USD. binCode is returned on every product read, so you can always ask which BIN a product issues from. It is null for products created before BINs were selectable.
US-VISA-V-01 is the one BIN without Apple Pay. Requesting features.hasApplePay against it returns 400 FEATURE_NOT_SUPPORTED_BY_BIN — use US-MC-V-02 for a US card that needs Apple Pay.
The three Consumer BINs require the cardholder to have completed KYC before a card can be issued. The Corporate BINs do not.

Optional — Card Type

Optional — features Object

Features are validated against what your program catalog allows. Requesting a feature not enabled on your program returns 400 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>

Card network. Must match a scheme enabled on your program. Required only when binCode is omitted — a BIN already determines the scheme.

Available options:
VISA,
MASTERCARD
Example:

"VISA"

binCode
enum<string>

Issue this product against a specific BIN, which fixes the issuing country, scheme and supported wallets. Omit to create from scheme alone.

Available options:
US-VISA-V-01,
US-MC-V-02,
SG-VISA-V-01,
SG-VISA-V-02,
HK-VISA-V-01,
HK-MC-V-01
Example:

"SG-VISA-V-01"

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