Just-In-Time (JIT) Cards
A JIT card is a virtual card with no pre-loaded balance. Rather than funding the card before it can be used, Fyatu approves each authorization in real time against your program ledger. If the program has sufficient funds, the transaction is approved and the amount is settled from the ledger. If not, the transaction is declined. JIT is the default model for programs that want fully centralised control over spending — no money sits idle on individual cards, and you never need to pre-fund a card before issuing it.JIT must be enabled on the product, not on the card itself. Contact your account manager to set up a product with
hasJIT: true. Once the product is created, every card issued against it is automatically JIT-enabled.How JIT Works
Creating a JIT Card
JIT cards are issued the same way as regular cards — the only difference is thatamount is optional (you do not need to pre-load a balance):
issuanceData wrapper. features.hasJIT: true confirms the card is JIT-enabled:
The CVV is not included in the
POST /cards issuance response. Retrieve it at any time via GET /cards/{id}, which fetches live card details (CVV, balance, spending limits) directly from the card network.CARD_ISSUED Webhook
When a JIT card is issued your server receives aCARD_ISSUED webhook. The key signal is "isJitfEnabled": true:
"isJitfEnabled": true against this cardId so your system knows never to show a per-card balance UI — the cardholder’s spending ability is determined by the program ledger, not the card.
How Your Server Must Respond
When a JIT card is used, Fyatu calls your registered webhook endpoint with aCARD_AUTHORIZATION_VERIFY event and waits up to 1 second for your response. You decide whether to approve or decline — Fyatu forwards your decision to the card network.
Approve
Decline
reason is optional on a decline but recommended for your own audit trail. Choose the code that best describes why you are declining:
If your endpoint is unreachable, times out, or returns a non-2xx response, Fyatu approves automatically (fail open). Guaranteed blocking must be done via the card lifecycle endpoints (
freeze, terminate), not via the authorization webhook.
For the full webhook spec including payload fields, HMAC verification, and code examples, see CARD_AUTHORIZATION_VERIFY.
Authorization Webhook
Every authorization attempt — whether approved or declined — fires aCARD_AUTHORIZATION webhook to your endpoint after the decision is made:
This is an informational event — your server must return
200 OK but cannot influence the decision. The approval or decline has already happened by the time this webhook fires.
For the full field reference see CARD_AUTHORIZATION.
Program Balance Management
Because JIT cards draw directly from the program ledger, keeping your program funded is critical:- Subscribe to the
ACCOUNT_LOW_BALANCEevent — fires when the program balance falls below your configured threshold - Top up the program balance via the CaaS Portal or programmatically via
POST /account/deposit - Monitor balance in real time via
GET /account/balance
JIT vs Pre-Funded Cards
Sandbox Testing
InSANDBOX mode, JIT authorizations always approve regardless of program balance. This lets you test the full card issuance and transaction flow without managing sandbox funds.
Switch to LIVE mode to exercise real-time balance checks.

