Card Issuance
What Is Card Issuance?
Card issuance is the process of creating a new virtual Visa card via Bitnob’s API. You can create cards on-demand for:
Individual users (wallets, platforms, loyalty programs)
Internal teams (corporate spend, operational budgets)
Temporary use cases (marketing campaigns, influencer spend)
Programmatic flows (auto-issue card when user receives a payout or tops up)
Bitnob works with licensed issuing banks and Visa card program managers to make the card available instantly. You interact with Bitnob — we handle the infrastructure behind the scenes.
When Should You Issue a Card?
scenario | strategy |
|---|---|
End-user wants to shop online | Issue a general-purpose card linked to their Bitnob wallet |
Subscription use case | Issue a persistent card, allow recurring transactions |
Business spend | Issue per-employee or per-department with spend limits |
One-time purchase | Create disposable cards and auto-terminate after use |
Auto payout → spend flow | Issue card at payout time, preload it, and send it to user |
Non-technical users | Create cards from dashboard (coming soon) |
Supported Card Type
property | value |
|---|---|
Card Scheme | Visa |
Card Type | Virtual (no plastic) |
Currency | USD |
Spend Scope | Online-only (CNP: card-not-present) |
Issuance Time | Instant |
3DS Support | Not currently enabled (coming soon) |
Pre-requisites
requirement | description |
|---|---|
API Key | Use your Bitnob production or sandbox API key |
Funding Source | You must have a wallet or balance from which cards can be funded |
KYC | You are responsible for verifying your end users before creating cards on their behalf |
Bitnob enforces platform-level KYC. Additional cardholder KYC may be required based on volume, spend limits, or regulatory scope.
API Endpoint
For full request and response details, see the Create Card API Reference.
Request Body
Parameters
field | type | required | description |
|---|---|---|---|
card_type | String | Yes | The type of card to issue. Accepted values: virtual, physical, or lite. |
name | String | Yes | The cardholder's full name as it will appear on the card. |
currency | String | Yes | The currency denomination for the card (e.g., USD). All transactions will be settled in this currency. |
amount | Integer | Yes | Initial funding amount in microunits (e.g., 5000000 = $50.00 USD, where 1 USD = 100000 microunits). |
webhook_url | String | No | Callback URL to receive webhook events for this card. |
created_by | String (UUID) | No | The ID of the user or admin creating the card. |
contactless_payment | Boolean | No | Enable contactless (NFC/tap) payments on the card. |
customer | Object | Yes | Customer details including customer_type, first_name, last_name, date_of_birth, id_type, id_number, email, phone_number, dial_code, and address fields (line1, city, state, postal_code, country). |
card_limits | Object | No | Spending limits for the card. Includes single_transaction, daily, weekly, and monthly limit fields. |
Example Response
Webhook: virtualcard.created.complete
After a card is successfully created, Bitnob will send a webhook to your callback URL. For full webhook details, see the Card Issuing Webhooks page.
Always verify webhook signature and use the webhook as the source of truth for downstream actions (e.g., showing card in UI).
Best Practices
tip | why |
|---|---|
Always label your cards | Makes dashboards and ops audits easier |
Store card metadata securely | You will not receive PAN and CVV again |
Assign cards to userReference IDs | Enables transaction mapping and user visibility |
Handle webhook verification | Prevents spoofed or replayed events |
Build a freeze button in your UI | Users want control if something goes wrong |
FAQ
Yes. A user can have up to three (3) active cards at any given time.
Cards are created instantly via our regulated partners.
Yes, until you freeze, terminate, or the card expires.
You will create a second card. To avoid this, use idempotency or track active cards in your system.