Skip to main content
A single-use card is a virtual card that locks itself as soon as one transaction completes. It is the standard control for one-time payouts, trial signups, and any charge you want to guarantee cannot repeat. There is no cardType: SINGLE_USE parameter. cardType is a response field, not an input. You get single-use behavior by setting lockCardNextUse: true when you issue the card.
Locking is reversible. This is not a hard one-time-use guarantee.A locked card can be reopened with unlockVirtualCard by anyone with access to it, and once unlocked it will authorize again. lockCardNextUse is an automation, not an irreversible control.If your risk model requires that a card can never transact twice, pair the lock with a spendLimit sized to the expected charge and a near-term lockDate — see Making it stick.

Issue the card

Restricted Access

This mutation requires a Bearer token with the CREATE_VIRTUALCARD scope.
Set lockCardNextUse: true on createVirtualCard. Everything else about the request is a normal card issuance.

The relevant fields

cardType in the response is not a reliable single-use indicator. Read back the card’s lockCardNextUse setting rather than inferring one-time behavior from cardType, which reflects the card program rather than this setting.

Making it stick

lockCardNextUse on its own is reversible. For payout and disbursement flows where a second charge would be a real loss, stack the controls — each one fails closed independently:
1

Size the spend limit to the charge

Set spendLimit to the exact expected amount, with spendLimitDuration: LIFETIME so it never refreshes. Even if the card is unlocked, there is no headroom left to spend against.
2

Set a near-term lockDate

A card issued for a payout that should clear within a week does not need to stay open for 47 months. lockDate locks the card on that date whether or not it was ever used, which also cleans up abandoned cards.
3

Restrict the funding composition

Set usePrepaymentBalance: false and useRewardsBalance: false so the card draws only from the userCashBalanceId you nominate, rather than reaching into prepaid or rewards balances.
4

Reconcile against the ledger

Do not treat issuance as completion. Confirm the charge landed with getVirtualCardTransactions before marking the payout settled in your own system.

Converting an existing card

lockCardNextUse is also editable after issuance through editVirtualCard, so you can retire a multi-use card by letting its next transaction be its last.
To stop a card immediately rather than after one more transaction, use lockVirtualCard instead — that takes effect at once and does not wait for a transaction.

Issuing in bulk

lockCardNextUse is available per order item on createVirtualCardBulkOrder, which is the right call for batch disbursements rather than looping createVirtualCard.
Bulk orders are asynchronous. Poll getVirtualCardBulkOrderStatus and handle partial failures — an order can complete with fewer cards than requested.

Edge cases

These are the situations where “one transaction” turns out to be ambiguous. Design for them before you ship a payout flow.
Locked is not deleted. Virtual cards cannot be deleted. A locked card stays visible and queryable on the account indefinitely, with its transaction history intact. Plan for accumulation if you are issuing single-use cards at volume, and use cardNickname and transactionCategory at issuance so they remain reconcilable later.

Common mistakes

CreateVirtualCardInput has no cardType field — the request fails with ARG-0001. cardType only appears in the response. Set lockCardNextUse: true instead.
unlockVirtualCard reopens a locked card, and the card will authorize again if spend headroom remains. If a second charge would be a real loss, constrain spendLimit and lockDate as well rather than relying on the lock alone.
spendLimitDuration: DAILY or MONTHLY refreshes the available limit on schedule. On a card that gets unlocked, that restores spending capacity you thought was spent. Use LIFETIME for single-use cards.
Issuing a card is not the same as money moving. The card may never be used, may be used for less than the limit, or may lock on a verification auth. Reconcile against getVirtualCardTransactions before closing the payout.

Issue Cards

The full createVirtualCard reference.

Create Bulk Order

Issue single-use cards at volume in one asynchronous request.

Lock Virtual Card

Stop a card immediately instead of after its next transaction.

Merchant-Locked Cards

Restrict a card to one merchant instead of one transaction.