Skip to main content

Programs & Products

How It Fits Together

Cardholders and Transactions are owned by the Business, not by a specific Program. A single cardholder can hold cards under different programs simultaneously. When a program is paused or closed, the cardholder is unaffected — they can receive cards from another program if one is available.

Programs

A program is the contractual and regulatory container negotiated between your business and FYATU. It establishes the card network (Visa or Mastercard), the base currency, the program ledger, and the top-level compliance rules. Programs are created and configured exclusively by the FYATU team. You read and monitor them via the API.

Program Statuses

The Program Ledger

Every program holds a pre-funded balance — the program ledger — that backs all card funding operations.
Every POST /cards/{id}/fund debits the program ledger and credits the card. Unloading or terminating a card returns balance to the ledger. No money leaves FYATU via the API — withdrawals go through the portal. Low balance alert: when the ledger drops below lowBalanceThreshold, a PROGRAM_BALANCE_LOW webhook fires. Subscribe to it to automate top-up alerts.
If the program ledger reaches zero, POST /cards/{id}/fund will fail with INSUFFICIENT_PROGRAM_BALANCE. Cards already funded continue to work — spending draws from the card’s own balance.

Products

A product is a card template defined within a program. It encodes everything that is fixed at card issuance: the card scheme, currency, spending limits, 3DS, and tokenization settings. When you issue a card, you specify a productId — all card settings are inherited from the product automatically.
A program can have up to 5 products. Products are created in the CaaS portal by the FYATU team.

Product Fields

Discovering Available Products

Before issuing cards, list the products available in a program:
Then use the productId when creating cards:

Feature Flag Immutability

Once any cards have been issued under a product, the feature flags (is3DSEnabled, isTokenizationEnabled, isJITEnabled) become immutable. These settings are baked into the card at the provider level and cannot be changed retroactively. To change feature flags, create a new product and issue future cards against it.

Amount Representation

All monetary amounts in the CaaS API are returned as both a raw integer (cents) and a display string (displayValue):
Use cents for arithmetic and comparisons. Use displayValue for display only. Fund and unload operations accept a float dollar amount in the request body (e.g. 50.00 for fifty dollars).

Endpoints

Programs and Products are read-only from the API. Configuration changes (limits, feature flags, new products) are made in the CaaS portal by the FYATU team.