Decline Rule Policy — Virtual Cards
Overview
To protect card programs from misuse and excessive declines, we enforce a Decline Rule Policy on virtual cards. When a card repeatedly triggers declined transactions, escalating fees are applied to your USD wallet, and the card may ultimately be terminated.
What Triggers a Violation
A decline rule violation is recorded when a card transaction is declined for one of the following reasons:
- Insufficient funds — the card does not have enough balance to cover the transaction.
- Card not active — a transaction is attempted on a frozen card.
- Authorization reversal settled — a previously authorized transaction is reversed by the merchant/network.
Each qualifying decline increments the card's violation counter by one.
Fee Schedule
| Violation # | Fee Charged | Notes |
|---|---|---|
| 1st | No fee | No fee charged |
| 2nd | $1.00 | fee charged |
| 3rd | $0.80 | fee charged |
| 4th–10th | $0.50 each | fee charged |
| 11th | No fee | Card terminated |
Fees are debited from your company's USD wallet and recorded as a Decline rule violation fee transaction.
A webhook notification (virtualcard.transaction.declined.charge) is sent for each fee charge.
Card Termination
A card is automatically terminated under two conditions:
-
11 violations reached — On the 11th decline rule violation, the card is permanently terminated. No additional fee is charged at this stage.
-
Negative wallet balance after fee debit — If a fee debit causes your company's USD wallet balance to go negative, the card is immediately terminated.
How to Avoid Violations
- Fund your cards adequately before use to prevent insufficient-funds declines.
- Do not attempt transactions on frozen cards. Unfreeze a card before authorizing payments.
- Track violation counts via the decline charge webhook events to take corrective action before reaching the termination threshold.
Webhook Events
| Event | Description |
|---|---|
virtualcard.transaction.declined.charge | Sent when a decline fee is charged or when a card is terminated due to violations |
The webhook payload includes: cardId, amount (fee in cents), reference, status, and violationCount.