Skip to main content

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
All API bodies are raw JSON strings (Content-Type: application/json). The BFF forwards them directly to FinCard Virtual after signature verification.

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.
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
Monitor cardholder approval via Cardholder List or Webhooks. Proceed to card creation only when status=pass_audit.

2. Physical Card

Physical cards are purchased offline in bulk, then assigned and activated via API.
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)
Before activation, card/info/sensitive returns limited data. Full card details (number, CVV, expiry) are only available after successful activation.

3. Shared Card (BUDGET_CARD)

Multiple cards share the same wallet. Deposit = allocate credit limit, Withdraw = reduce credit limit.
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
  • Deposit on a shared card = allocating credit from the shared pool
  • Withdraw on a shared card = reducing the credit limit
  • All cards share the same underlying MARGIN account balance

4. Gift Card

Gift cards return only a redemption URL. No card number/CVV/expiry. No deposit/withdraw/freeze/unfreeze.
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