Manage ghost cards with the API
Learn how to create and manage multi-use virtual debit cards for vendor spend with the Payabli API
Payabli supports two types of virtual cards for Pay Out:
- Single-use virtual cards are tied to a specific payout and can only be used once. You create them by passing
vcardas the payment method when you authorize a payout, or a vendor can selectvCardas the payment method through a vendor link. - Ghost cards (multi-use virtual cards) are issued directly to a vendor and aren’t tied to a specific payout. They’re designed for recurring or discretionary vendor spend with configurable limits.
This guide covers creating ghost cards and updating their status through the API.
Considerations
When working with ghost cards, keep the following in mind:
- Only one ghost card can exist per vendor per paypoint. To issue a new card to the same vendor, cancel the existing card first.
- Ghost cards are linked to a vendor. The vendor must belong to the paypoint and have an active status.
expenseLimitis required and must be greater than0. It can’t exceed the paypoint’s configured payout credit limit.- Setting
exactAmounttotrueforcesmaxNumberOfUsesto1, regardless of any other value you pass. - If you set
maxNumberOfUsesto0or a negative number, it defaults to9999. - Card currency is always USD.
Create a ghost card
Send a POST request to /api/MoneyOutCard/GhostCard/{entry} to create a ghost card. See the API reference for full documentation.
Most fields are required, including vendorId, expenseLimit, amount, maxNumberOfUses, exactAmount, billingCycle, billingCycleDay, dailyTransactionCount, dailyAmountLimit, and transactionAmountLimit. Optional fields include expirationDate, mcc, tcc, misc1, and misc2.
A successful request returns a ReferenceId in responseData. This is the card token. Store it to reference the card in subsequent operations.
Update a card’s status
Send a PATCH request to /api/MoneyOutCard/card/{entry} to update a card’s status. See the API reference for full documentation.
Pass the cardToken (the ReferenceId from the create response) and the new status. Valid statuses are Active, Inactive, Cancelled, and Expired.
Not all status transitions are allowed: