Card Issuance Flows

Step-by-step processes for Virtual, Physical, Shared, and Gift card issuance

Card Issuance Flows

Introduction

FinCard Virtual is a card-issuing service built on the FinCard platform. It enables tenants to programmatically issue, manage, and monitor prepaid cards — virtual or physical — for their end customers (B2B or B2C).

All endpoints are available for interactive testing at https://sandbox.finhub.cloud. Each endpoint page includes a Try It panel where you can send live requests against the sandbox.


Architecture Overview

Your Application
      │
      ▼
FinHub BFF  (/api/v2.1/fincard/virtual/...)
      │
      ├── Playground mode  →  in-memory JPA/MariaDB (no external calls)
      └── Integration mode →  FinCard Virtual Production API (RSA-signed)

The BFF operates in one of two modes based on tenant configuration:

ModeDescriptionUse case
PlaygroundFully simulated — all data stored in sandbox DBDevelopment & testing
IntegrationLive calls to FinCard Virtual API (RSA-signed)Production

Prerequisites

Before issuing any card, ensure:

  1. Tenant credentials — valid X-Tenant-ID header on every request
  2. Account funded — the tenant’s WALLET account has sufficient balance
  3. Card BINs available — call POST /card/v2/cardTypes to discover available BINs and their requirements
  4. Cardholder created (if needCardHolder: true on the BIN) — cardholder must reach status: pass_audit before a card can be linked

Choose Your Card Type

Start
  │
  ├─► Need multiple cards sharing a pool? ──► Shared Card (BUDGET_CARD)
  │
  ├─► Physical card issued offline? ────────► Physical Card
  │
  ├─► Redemption URL only (no card number)? ► Gift Card
  │
  └─► Standard virtual prepaid? ────────────► Virtual Card (PREPAID_CARD)
Card TypeBIN ModeBIN TypeCategory
VirtualPREPAID_CARDVirtualPURCHASE / SUBSCRIPTION
PhysicalPREPAID_CARDPhysicalPHYSICAL
SharedBUDGET_CARDVirtualPURCHASE
GiftPREPAID_CARDVirtualGIFT

Common Headers

Every request requires:

HeaderDescription
X-Tenant-IDYour tenant identifier
Content-Typeapplication/json

Four card issuance processes, each with a distinct flow. All share the same API endpoints but differ in required steps and configuration.


1. Virtual Card (PREPAID_CARD)

The standard flow for issuing virtual prepaid cards.

flowchart TD
    S(( )) --> GetCardBIN[GetCardBIN]
    GetCardBIN -->|needCardHolder?| CheckHolder{CheckHolder}
    CheckHolder -->|Yes| CreateHolder[CreateHolder]
    CheckHolder -->|No| CreateCard[CreateCard]
    CreateHolder --> WaitApproval[WaitApproval]
    WaitApproval -->|Approved| CreateCard
    CreateCard --> QueryInfo[QueryInfo]
    QueryInfo --> GetSensitive[GetSensitive]
    GetSensitive --> E([Ready to use])
StepAPIDescription
1POST /card/v2/cardTypesGet available card BINs. Filter mode=PREPAID_CARD, type=Virtual
2Check needCardHolderIf true, create cardholder first
3POST /card/holder/v2/createCreate cardholder (B2B or B2C based on metadata.cardHolderModel)
4POST /card/v2/openCardCreate card with holderId + initial amount
5POST /card/infoQuery card info (status, balance)
6POST /card/info/sensitiveGet encrypted card number, CVV, expiry

2. Physical Card

Physical cards are purchased offline in bulk, then assigned and activated via API.

flowchart TD
    S(( )) --> PurchaseOffline[PurchaseOffline]
    PurchaseOffline --> GetCardBIN[GetCardBIN]
    GetCardBIN --> CreateHolder[CreateHolder]
    CreateHolder --> AssignCard[AssignCard]
    AssignCard -->|webhook| ReceiveCode[ReceiveCode]
    ReceiveCode --> ActivateCard[ActivateCard]
    ActivateCard --> GetSensitive[GetSensitive]
    GetSensitive --> E([Ready to use])
StepAPIDescription
1Customer purchases physical cards offline from BD
2POST /card/v2/cardTypesGet BIN config. Filter type=Physical
3POST /card/holder/v2/createCreate cardholder (if needCardHolder=true)
4POST /card/v2/openCardCreate card with cardNumber (from physical card)
5Webhook: activation_codeReceive activation code via webhook or cardholder email
6POST /card/activateActivate with pin (6 digits) + activeCode
7POST /card/info/sensitiveGet card number, CVV, expiry (available after activation)

3. Shared Card (BUDGET_CARD)

Multiple cards share the same wallet. Deposit = allocate credit limit, Withdraw = reduce credit limit.

flowchart TD
    S(( )) --> GetCardBIN[GetCardBIN]
    GetCardBIN --> CreateHolder[CreateHolder]
    CreateHolder --> CreateAccount[CreateAccount]
    CreateAccount --> FundAccount[FundAccount]
    FundAccount --> CreateCard1[CreateCard 1]
    FundAccount --> CreateCard2[CreateCard 2]
    CreateCard1 --> AllocateCredit[AllocateCredit]
    CreateCard2 --> AllocateCredit
    AllocateCredit --> E([Cards ready])
StepAPIDescription
1POST /card/v2/cardTypesGet BIN config. Filter mode=BUDGET_CARD
2POST /card/holder/v2/createCreate cardholder (if needed)
3POST /account/createCreate MARGIN account for shared pool
4POST /account/transferFund MARGIN from WALLET
5-6POST /card/v2/openCardCreate cards with accountId pointing to shared account
7POST /card/depositTop-up = allocate credit limit to each card

4. Gift Card

Gift cards return only a redemption URL. No card number/CVV/expiry. No deposit/withdraw/freeze/unfreeze.

flowchart TD
    S(( )) --> GetCardBIN[GetCardBIN]
    GetCardBIN --> CreateHolder[CreateHolder]
    CreateHolder --> CreateCard[CreateCard]
    CreateCard --> GetSensitive[GetSensitive]
    GetSensitive --> E([Share URL with recipient])
StepAPIDescription
1POST /card/v2/cardTypesGet BIN config. Filter category=GIFT
2POST /card/holder/v2/createCreate cardholder (if needed)
3POST /card/v2/openCardCreate gift card with initial amount
4POST /card/info/sensitiveReturns only activateUrl (redemption page)

Gift Card Restrictions

FeatureSupported
Card number / CVV / ExpiryNo — only activateUrl
DepositNo
WithdrawNo
Freeze / UnFreezeNo
CancelYes
Card InfoYes (basic status only)

Flow Comparison

FeatureVirtualPhysicalSharedGift
ModePREPAID_CARDPREPAID_CARDBUDGET_CARDPREPAID_CARD
TypeVirtualPhysicalVirtualVirtual
CategoryPURCHASE/SUBSCRIPTIONPHYSICALPURCHASEGIFT
CardholderOptionalOptionalOptionalOptional
Card Number InputNoYes (offline)NoNo
ActivationAutoManual (PIN + code)AutoAuto
Shared AccountNoNoYes (MARGIN)No
Deposit/WithdrawYesYesYes (credit allocation)No
Freeze/UnFreezeYesYesYesNo
Sensitive InfoFullAfter activationFullOnly activateUrl

Type to search…

↑↓ navigate open esc close