*** title: Manage ghost cards with the API subtitle: >- Learn how to create and manage multi-use virtual debit cards for vendor spend with the Payabli API description: >- Issue ghost cards to vendors for recurring or discretionary spend. Create cards with configurable spending limits, usage caps, and merchant restrictions. 'og:description': >- Issue ghost cards to vendors for recurring or discretionary spend. Create cards with configurable spending limits, usage caps, and merchant restrictions. keywords: >- embedded payments, payment API, REST API, ghost cards, virtual cards, vendor payments, payouts, spending limits, expense management slug: guides/pay-out-developer-ghost-cards-manage icon: credit-card area: * Pay Out subArea: * Payouts audience: * developers *** 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 `vcard` as the payment method when you [authorize a payout](/developers/api-reference/moneyout/authorize-a-transaction-for-payout), or a vendor can select `vCard` as 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: * Ghost cards are linked to a vendor. The vendor must belong to the paypoint and have an active status. * `expenseLimit` is required and must be greater than `0`. It can't exceed the paypoint's configured payout credit limit. * Setting `exactAmount` to `true` forces `maxNumberOfUses` to `1`, regardless of any other value you pass. * If you set `maxNumberOfUses` to `0` or a negative number, it defaults to `9999`. * 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](/developers/api-reference/cards/create-ghost-card) for full documentation. At minimum, you need to pass a `vendorId` and an `expenseLimit`. All other fields are optional and let you configure spending controls, usage limits, and merchant restrictions. For example, you can cap per-transaction spend with `transactionAmountLimit`, set daily limits with `dailyAmountLimit` and `dailyTransactionCount`, define an expense period with `expenseLimitPeriod`, or restrict merchant categories with `mcc` and `tcc`. 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](/developers/api-reference/cards/update-card-status) 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: | From | Allowed transitions | | ----------- | ---------------------------------- | | `Active` | `Inactive`, `Cancelled`, `Expired` | | `Inactive` | `Active` | | `Expired` | `Active` (renews the card) | | `Cancelled` | None — `Cancelled` is terminal |