Learning objectives
- Understand how prepaid virtual card funding works
- Know what assets can be used to fund cards
- Learn how to combine card registration, issuance, and funding into one clean flow
- Handle common edge cases (errors, fees, FX behavior)
What does “funding a virtual card” mean?
Funding is the act of preloading money onto a virtual card. Since virtual cards are prepaid by design, they must be funded before use. Think of it like putting money into a secure digital envelope that only works on the internet. The money typically comes from:- A fiat wallet (NGN, GHS, ZAR, etc.)
- A stablecoin balance (e.g. USDT)
- A treasury float controlled by your platform
How funding works (conceptually)
Here’s the typical flow:Supported funding assets
Bitnob doesn’t convert other assets during a top-up. To fund cards from BTC or NGN, convert to the stablecoin first with a trade.
Top-up rules and limits
These limits help control risk and fraud. They’re also adjustable based on business model.
Full flow: Create customer → issue → fund
Let’s now walk through the combined MVP flow:Step 1: Create the customer
id. Complete card KYC for the customer before you issue a card.
Step 2: Create a card for the customer
10000000 is $10.
➡ You’ll receive the card record with status pending. Store its id securely, and wait for the virtualcard.created.completed webhook before you fund it again.
Step 3: Fund the card
100000000 is $100.
➡ The response confirms the funding request.
What to show the user
Common funding errors
Funding use cases
Best practices
Recap exercise
You’re building an app that gives each new user a $50 shopping card after KYC. Sketch out your backend flow in pseudocode or sequence:- Create the customer
- Issue card
- Fund with $50 from marketing wallet
- Display card
- Listen to
virtualcard.topup.completedwebhook
Key takeaways
- Virtual cards must be funded before use, they’re not credit-based
- Most systems support funding from crypto, fiat, or wallet balances
- You can combine registration, issuance, and top-up into a smooth experience
- Design your UI and backend to show status clearly, handle errors, and listen to webhooks