To issue virtual cards in bulk, list each recipient and their spending limit in a spreadsheet, then upload the Excel or CSV file to Virtual Card Maker to create one virtual Visa per row in a single pass. Each card can carry its own limit and merchant, category, location, or time locks where supported, is funded from your one company wallet, and is emailed to its recipient to add to Apple Wallet or Google Wallet. You can cancel any card any time. Developers can issue the same cards through the REST API.
Creating cards one form at a time does not scale. When six people start Monday, or a new project's vendors need to buy this week, you need every card at once, each with the right limit, not an hour of clicking "new card." Here is how to do it two ways, what each card can control, and the mistakes that turn a clean batch into forty fixes.
(or API)
What it means to issue virtual cards in bulk
Issuing in bulk means creating many cards at once from a single list instead of one at a time. You put one card per row in a spreadsheet, upload it, and every row becomes a live virtual Visa with the limit and locks you set. It is the same controlled card you would make by hand, done for the whole list in one pass. A developer can do the same thing through the API.
What your spreadsheet needs
A bulk virtual card spreadsheet needs one row per card with a few core columns: cardholder name, email, spend limit, limit period, and a card label. Merchant or category locks and notes are optional. Here is a layout that covers a mixed batch of an employee, a vendor, and a contractor:
| Cardholder | Card label | Limit | Period | Merchant / category lock | Notes | |
|---|---|---|---|---|---|---|
| Maria Lopez | maria@acme.co | Maria - Travel | $1,500 | Monthly | Travel + restaurants | Field sales |
| Northwind Supplies | ap@northwind.com | Vendor - Northwind | $8,000 | Monthly | Merchant: Northwind | Net-30 supplies |
| Dev Patel | dev@patel.io | Contractor - Design | $600 | Per project | Software / SaaS | Cancel at project end |
Download the spreadsheet template (CSV) and fill in your rows. This is a starting layout, not a fixed form: when you upload, you map your headers to the system fields, so your column names do not have to match exactly. Category, location, and time locks apply where supported by the card network.
How to issue cards in bulk from a spreadsheet
Start to finish, a clean batch is a short, few-step flow. The two steps people skip, funding the wallet and reviewing before you issue, are the ones that keep it clean.
- Fund your wallet first. Move the budget into your company wallet by ACH or wire before you issue. Cards draw from the wallet, so keep enough in it to cover what the batch will actually spend. The limits you set are ceilings, not amounts held aside.
- Fill the template. One row per card, using the layout above. Validate every email; a typo here sends a card to the wrong inbox.
- Upload the file in one pass. Drop the Excel or CSV file into the bulk-issue screen to create one card per row.
- Map your columns. Match your headers to the system fields, then save the mapping so next month's batch is one click.
- Review before you issue. Check the validation summary for bad emails, missing limits, or unrecognized lock values, fix those rows, and re-check. This step is what separates a clean batch from a pile of mistakes.
- Issue, and the cards go out. Each card is emailed to its recipient to add to Apple Wallet or Google Wallet for tap to pay. Every card shows up on your dashboard with its own limit and locks.
Prefer code? Issue the same cards through the API
The bulk virtual card API is a REST endpoint that issues cards programmatically: your developer sends each card's recipient, spend limit, and locks in a request, and gets back the same cards a spreadsheet upload would create. Use it when issuance needs to run on a schedule, or inside your own app the moment a customer or project is set up. See the API documentation to get started. For everything else, the spreadsheet is faster than building anything.
Spreadsheet vs API vs one at a time
Most finance and ops teams should use the spreadsheet. The API is for teams issuing cards inside their own product or on a schedule.
| One at a time (dashboard) | Spreadsheet upload | REST API | |
|---|---|---|---|
| Speed for 25+ cards | Slow, minutes per card | One upload | One call once built |
| Per-card limits and locks | Full, manual each time | Full, one row per card | Full, set in the request |
| Developer effort | None | None, fill a sheet | Real, engineering + setup |
| Error handling | You catch as you type | Validation before issue | You build the checks |
| Best for | 1 to 5 ad-hoc cards | A dozen to a few hundred, no devs | Issuing inside your own app |
What you can control on every card
Bulk does not mean blunt. Each card in the batch carries its own rules, set per row:
- Spend limit and period. A cap per transaction, day, month, or year, different for every card.
- Merchant or category lock. Lock a card to one merchant or to a category, where supported, so it works only where it should.
- Location and time. Restrict a card to a country or city, or to working hours, where supported.
- Cancel or adjust any time. Cancel a single card or raise one card's limit from your dashboard without touching the rest of the batch. If something goes wrong, cancel the affected cards and each one stops taking new charges.
Example: onboard a 12-person team from one sheet
Say a growing agency is onboarding for the quarter. Finance issues 12 cards from one spreadsheet:
- 6 account managers at $800 a month each, locked to travel and restaurants: $4,800
- 3 designers (contractors) at $400 a month each, locked to software and SaaS: $1,200
- 2 ops staff at $1,500 a month each: $3,000
- 1 shared subscriptions card at $2,500 a month, locked per merchant where supported: $2,500
That is 12 cards with $11,500 in combined monthly limits (a ceiling, not a required balance), all issued from one wallet in a single upload. When a designer's project ends, you cancel that one card and the other 11 are untouched. When an account manager is promoted, you raise her cap from $800 to $1,200 in one edit, no reissue. One sheet in, granular control out.
Mistakes to avoid
Do not set one blanket limit for everyone. A single cap copied down every row gives a junior contractor the same ceiling as your ops lead. Cap to the role, right in the limit column.
Validate emails before you issue, not after. A batch with three typo'd addresses sends three cards to the wrong place. Run the validation summary and fix the rows first; re-issuing is messier than checking once.
One card per person or purpose. The point of a row-per-card batch is one card equals one cardholder or one vendor. Sharing a card across people destroys the audit trail and the merchant lock's value.
Fund the wallet before you hit issue. Cards draw from the wallet. Issue against an underfunded wallet and some cards will not be created, or they decline at first use. Fund the wallet to cover the spend you expect first.
Who gets the cards, and how they use them
The same batch can mix card types, because the difference is just the row. Common ones:
- Employee cards for a team or a new-hire cohort.
- Vendor cards, one per supplier, so a leak on one does not touch the rest.
- Expense cards for projects, contractors, and one-off spend.
- Payroll cards for paying staff who need funds on a card.
Each recipient gets the card by email and adds it to Apple Wallet or Google Wallet to tap and pay, or keys the number into an online checkout. The cards are funded from your company wallet, not a credit line, so recipients are not applying for credit and share no bank details with you. You hold the funds and set every limit. Issuing a card costs nothing on its own; you fund only what recipients spend from your wallet balance (see the wallet terms for balance and fee details).
People also ask
Can I create virtual cards from an Excel or CSV spreadsheet?
Yes. List each recipient and their spending limit on one row, upload the Excel or CSV file, and the platform creates one card per row in a single pass. Developers can issue the same cards through the REST API.
Can each card have a different spending limit?
Yes. Set the limit and period per row in the spreadsheet, so an account manager, a vendor, and a contractor can each get a different cap in the same batch.
Do recipients need their own account or a credit check?
The cards are funded from your company wallet, not a credit line, so recipients are not applying for credit. The card details are emailed to each recipient to add to Apple Wallet or Google Wallet.
What if a row in my spreadsheet has an error?
Review the validation summary before issuing. It flags problems like a bad email or a missing limit so you can fix those rows and re-upload before any card goes out.
Can I cancel the cards later?
Yes. You can cancel any card from your dashboard at any time, and adjust a single card's limit without reissuing the rest of the batch.
How many virtual cards can I issue at once?
You can issue many cards in a single spreadsheet upload, from a handful to a few hundred rows. For higher volumes or scheduled issuance, use the REST API. Each card still carries its own limit and locks.
How much does it cost to issue cards in bulk?
Issuing a card costs nothing on its own. You fund spending from your company wallet balance, so recipients spend only your money against the limits you set. See the wallet terms for balance and fee details.
I just need one-time reward cards, not spending cards. What do I use?
For one-time rewards, see how to send bulk employee gift cards. This guide is for controlled, ongoing spend cards with limits and locks for employees, vendors, and contractors.






