Virtual Card Support Team Playbook

This document is a complete knowledge base for supporting users of the Bitnob virtual card infrastructure. It includes diagnostic flows, standard responses, backend context, and escalation policies. It assumes you are supporting a product where developers have integrated Bitnob’s virtual card APIs, and you need to assist users when something goes wrong.

1.

Role of Support in Virtual Card Products

Support teams are not just responding to complaints — they are responsible for:

Ensuring trust in financial products

Explaining card behavior in clear and accurate language

Tracing transactional issues across lifecycle states

Flagging systemic problems to engineering or ops

Acting as the first line of fraud and dispute defense

Helping both internal product teams and end users understand what's happening

Support success depends on deep product understanding and consistent access to API logs, webhook events, and transaction states.

2.

Virtual Card Lifecycle

All cards go through a lifecycle:

Created → Default state after successful issuance

Funded → After a successful top-up

Active → Can be used for transactions

Frozen → Temporarily disabled, either manually or automatically

Terminated → Permanently closed due to system triggers or manual action

Card lifecycle issues account for over 50% of all user-facing problems. Always start by confirming the current card status.

3.

Common Support Cases and Recipes

Below are structured support "recipes" to guide decision-making and communication.

Case 1: Transaction Declined

Symptoms:

Card failed at checkout

User reports "Insufficient funds" or no clear error

Support Checklist:

Check card status — is it active?

Confirm available balance (including FX margin)

Retrieve latest webhook virtualcard.transaction.declined

Review reason field — is it "MCC blocked", "Card not active", etc.?

Check if merchant falls under restricted MCC (money transfer, crypto, etc.)

Inspect retry history — how many attempts failed?

Response Template:

The transaction failed because the card was either inactive, had insufficient funds, or attempted a payment with a blocked merchant type. Please verify the merchant, ensure the card is active, and confirm the amount including any applicable foreign exchange fees.

Escalate if:

Decline reason is unclear or shows null

User reports transaction succeeded at merchant but no debit is logged

Webhook didn’t fire after merchant confirmation

Case 2: User Sees Unexpected $1 or Small Transaction

Symptoms:

Unexplained $1 deduction or reversal

User confused by charge with no merchant name

Support Checklist:

Retrieve transaction webhook (debit, reversed)

Check if merchant is Apple, Facebook, PayPal, Spotify, etc.

Confirm status was reversed, not settled

Check timestamps — pre-auths usually reverse in 2–14 days

Response Template:

This was a temporary authorization hold by the merchant to verify your card is valid. No actual charge occurred, and the funds will be released automatically, typically within 2–14 business days depending on the merchant.

Case 3: Refund Not Reflected

Symptoms:

User claims a refund was issued but no credit seen

Merchant says "we refunded" but no trace in user’s account

Support Checklist:

Search for virtualcard.transaction.refund or transaction.reversed webhook for card

Check if card is still active — if not, refund goes to master account or float

Review amount and timestamp

Match merchant narrative or reference

Response Template:

The refund has been successfully processed. Since the card is no longer active, the funds have been routed back to your master wallet. If you don’t see it there, please allow up to 3 additional business days and contact support again.

Escalate if:

Refund event was never logged

Merchant shows refund cleared but Bitnob has no record

Settlement delay exceeds 14 business days

Case 4: Card Automatically Frozen or Terminated

Symptoms:

User reports card status changed without action

Can no longer transact

Support Checklist:

Confirm card state via card fetch endpoint

Review transaction history — are there 3 or more failed transactions?

Look for suspicious refund → freeze scenarios

Review system log or webhook: transaction.declined.frozen or declined.terminated

Triggers:

3 failed attempts without prior success = freeze

4 failed after one successful = termination

Refund received on a card that didn’t do the original spend = freeze

Response Template:

Your card was frozen (or terminated) due to multiple failed transactions or system-detected refund behavior. This is a protective measure. You can unfreeze the card (if still allowed) or create a new one if it has been terminated.

Escalate if:

Freeze/termination reason is unclear or mismatch with logs

Customer insists card was never used or attempted multiple times

Case 5: Top-Up Completed, but Card Not Working

Symptoms:

User tops up card but transactions still decline

Available balance looks sufficient

Support Checklist:

Confirm topup.success webhook received

Re-fetch card — is it active?

Look at spend attempt webhooks — what is the decline reason?

Check currency match or FX surcharge triggers

Response Template:

The card has been funded, but may still be inactive or restricted for certain merchant types. Please confirm that the card is in active status and the merchant you're using supports this card type.

Escalate if:

Top-up succeeded but card balance isn’t updated

Webhook mismatch (top-up success but no credit)

4.

Tools and Data Support Should Have

Support agents must have access to the following for every ticket:

ItemSource
Card IDUser → Cards list
Card StatusCard fetch endpoint
Transaction historyList transactions by cardId
Webhook logsInternal log service or monitoring tool
Decline reason codesWebhook payload or transaction metadata
Refund statusWebhook or ledger

Additionally, they should have:

Full search by reference, cardId, userId, webhookId

Visibility into terminated vs frozen reason codes

Date-based filters to trace refund flows or disputes

5.

Escalation Criteria

ConditionEscalate To
No webhook received after confirmed card actionEngineering or Infra
Refund logged but never creditedTreasury or Settlements
Webhook payload missing key fieldsAPI engineering
Decline pattern across multiple usersFraud or Risk Team
Merchant blocked without explanationCompliance or BIN sponsor

Include full cardId, reference, timestamps, and webhook event bodies when escalating.

6.

Training Materials

Support team members should regularly train on:

Reading and decoding webhook payloads

Using Postman to simulate card calls

Explaining card lifecycle clearly in user language

Understanding BIN and MCC behavior

PCI and data-handling compliance for support staff