Learning objectives
- Understand the three fundamental lifecycle states of a virtual card
- Know who (user, system, compliance) controls transitions between states
- Learn how to design your product UX and backend around lifecycle changes
- Be able to build workflows that prevent user confusion and operational risk
Virtual card lifecycle: the big picture
Virtual cards follow a strict, state-based lifecycle: Freezing is reversible. Termination is not. Let’s define each state clearly and explore why it exists, how transitions happen, and what you need to do at each step.ACTIVE
What it means: The card is fully functional and can be used to:
- Make payments
- Receive refunds
- Be topped up or withdrawn (if supported)
- After creation completes, when the
virtualcard.created.completedwebhook arrives - After being unfrozen (if previously frozen)
- Display the card as “Ready to use”
- Show full balance and transaction options
- Allow users to take actions: spend, fund, freeze
- Monitor spending behavior
- Permit authorization requests
- Accept webhook events for transactions
- Track usage patterns
FROZEN
What it means: The card is suspended. It cannot be used for:
- Purchases
- Top-ups
- Withdrawals
Can frozen cards be reactivated? Yes. They can be unfrozen manually or automatically.
What you should do in your product:
- Show the card as “Frozen” (clear visual state)
- Allow unfreeze (if policy permits)
- Inform the user why it was frozen, not just that it was frozen
- Block top-ups, spending, and display warning on UI
- ❌ Don’t auto-terminate a frozen card unless the rules allow it
- ❌ Don’t hide the card, make it visible, but read-only
TERMINATED
What it means: The card is permanently deactivated. It cannot be:
- Used
- Funded
- Reactivated
- Returned to frozen or active
Important system rules (example):
- A card is terminated after repeated decline violations. The default is 3, and each company’s limit can be set from 1 to 10
- From the second violation, a $0.75 decline fee applies
- Frozen cards can also be auto-terminated after rule violations
- Clearly show the card is “Closed” or “Inactive Permanently”
- Prevent any further action
- Display final balance if relevant
- Provide option to create a new card
- Show termination reason (in plain English)
- Webhooks will still be fired for reversals or refunds
- System may refund final balance (if applicable)
- A new card must be created if needed again
Product design checklist per state
Common lifecycle pitfalls
Knowledge check
Which of these is true?- A terminated card can be unfrozen.
- A card must be frozen before being terminated.
- All cards start in the frozen state.
- Cards can move directly from active to terminated.
Key takeaways
- Every card has a clear state: Active, Frozen, or Terminated
- You must reflect state transitions clearly in your product
- System rules can trigger transitions automatically. Always build with them in mind
- Users will trust your product more if they understand what’s happening and why