Skip to main content

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)
How it enters this state:
  • After creation completes, when the virtualcard.created.completed webhook arrives
  • After being unfrozen (if previously frozen)
What you should do in your product:
  • Display the card as “Ready to use”
  • Show full balance and transaction options
  • Allow users to take actions: spend, fund, freeze
  • Monitor spending behavior
Backend logic to support this state:
  • 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
Why cards are frozen: 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
What not to do:
  • ❌ 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
Why cards are terminated: 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
What you should do in your product:
  • 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)
What happens behind the scenes:
  • 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?
  1. A terminated card can be unfrozen.
  2. A card must be frozen before being terminated.
  3. All cards start in the frozen state.
  4. Cards can move directly from active to terminated.
Answer: Cards can be terminated without being frozen first, especially if flagged by fraud or abuse logic.

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