Skip to main content

Why did my Virtual Card CSV import fail?

CSV import failed, rows have errors, fix your CSV and re-upload, missing required columns, please upload a .csv file, card already exists, card creation failed, PIN verification required, import error

Written by Faith Grady

Find the message you saw on screen below. Messages are grouped by when they appear.

To review how imports work, see Creating multiple Virtual Cards with a CSV file.

First: were any cards created?

It depends on when the import stopped.

If you were blocked before or during the review step, or when you submitted — no cards were created. Not even from the rows that were fine. There's nothing to clean up: fix your file and upload it again. Re-uploading can't create duplicates, because nothing was created.

If the import started running and then some rows failed — the rest of the cards were created. Read the per-row results before re-importing anything, because some messages mean the card does exist.

I see a checklist instead of the import screen

These appear under "Before you can import, your account must meet these requirements:" None can be fixed by editing your CSV.

Message

What it means

What to do

Contact support to enable this feature.

Virtual card creation isn't switched on for your account.

Contact Fluz support and ask for virtual card creation to be enabled.

Account trust status must be PASS (got REVIEW)

Your account isn't in good standing.

Contact Fluz support — this can't be changed from the import screen.

Must be CIP verified — KYC must be PASS or PASS_INTERNATIONAL (got PENDING)

Personal identity verification isn't finished.

Finish identity verification in your Fluz account, then reload the page.

Business KYB must be PASS or PASS_INTERNATIONAL (got PENDING)

Business verification isn't finished.

Finish business verification, then reload the page.

An active import job already exists for this account

Another Virtual Card import is still running.

Wait for it to finish, or cancel it from the imports list.

Unable to verify account status

Fluz couldn't reach the service behind that check. Temporary, and not something you did.

Wait a moment and select Retry. If it keeps happening, contact support.

Unable to verify identity

As above.

Wait a moment and select Retry.

Unable to verify feature access

As above.

Wait a moment and select Retry.

Unable to check for active jobs

As above.

Wait a moment and select Retry.

Unable to verify eligibility. Please try again.

The eligibility check couldn't run at all.

Reload the page or select Retry. If it keeps happening, contact support.

No card programs are available right now. This is usually temporary — please retry, or contact support if it persists.

Your account passed eligibility, but no card programs are available to it.

Select Retry. If nothing appears after a few minutes, contact support.

My file was rejected when I uploaded it

These appear under the drop zone. Nothing is uploaded and no import starts.

Message

What it means

How to fix it

Please upload a .csv file.

The filename doesn't end in .csv.

Save your spreadsheet as a CSV — File → Download / Save As → CSV — and upload that. Renaming a file isn't enough.

File is too large. Max size is 50 MB.

The file is over 50 MB.

Split it into smaller files and import them one at a time. Deleting unused columns and blank rows at the bottom shrinks a file a lot.

Missing required columns: city, postal_code

One or more of the four required columns is missing from the header row. The message names them.

Add the named columns back, spelled exactly as in the template. Quickest fix: start again from a fresh copy of the template and paste your data in.

The CSV file has no data rows.

The header row read fine, but there's nothing under it.

Add at least one card row. Lines starting with # are treated as comments, so a file containing only the template's help lines counts as empty.

Failed to parse CSV: …

The file couldn't be read as a CSV. The text after the colon explains what couldn't be read.

Re-export as CSV from your spreadsheet program rather than renaming or hand-editing a file. An unclosed quotation mark is the usual cause.

Note: an Excel file renamed to .csv gets past the first check and then fails with a missing-columns error instead. If you're seeing Missing required columns on a file that looks correct, check that it's a real CSV.

Rows have errors at the review step

You'll see 3 rows have errors. Fix your CSV and re-upload to continue. and the table will switch to showing only the broken rows.

There's no way to continue with just the good rows. Fix everything below that applies, then upload the file again. On a large file, fix every error you're shown before re-uploading — one bad row stops the whole import, so fixing them one at a time costs you an attempt per error.

Message

Column

What to do

Required

street_address_line_1, city, state, postal_code

Fill in the empty cell for that row.

Must be a 2-letter US state code

state

Use the postal abbreviation, not the full name — TX, not Texas. Type it in capitals: lowercase gets through this step and is refused at submit.

Must be a 5-digit US postal code

postal_code

Use 78701 or 78701-1234. If your spreadsheet dropped a leading zero, format the column as text before saving.

Must be 50 characters or fewer

card_nickname

Shorten the nickname.

Duplicate nickname

card_nickname

Two or more rows use the same nickname — capitalisation is ignored when comparing, and every row sharing it is flagged. Give each card a different nickname, or clear the duplicates.

Must be one of: DAILY, WEEKLY, MONTHLY, ANNUAL, LIFETIME

limit_type

Use one of the five values.

Must be a positive number

limit_amount

Enter a plain positive number, like 100 or 99.99 — no currency symbols, thousands separators, or minus signs.

Required when limit_type is set

limit_amount

Add the amount, or clear the period so the card has no limit set.

Required when limit_amount is set

limit_type

Add the period, or clear the amount.

Must be "true" or "false"

brand_locked, use_rewards, use_prepayment, use_default_cash_balance, lock_card_next_use

Put true or false in the cell, or leave it empty. yes, no, 1, 0, Y, and N aren't accepted.

Requires brand_locked=true

merchant_slug

Set brand_locked to true on that row, or clear the merchant cell.

Required when brand_locked=true

merchant_slug

Name the merchant to lock the card to, or set brand_locked to false.

Must be a 4-digit MCC code

mcc_code

Use the 4-digit category code, like 5411. If a leading zero was dropped, format the column as text.

Requires bank_account_id when use_default_cash_balance is not empty

use_default_cash_balance

Fill in the bank account for that row, or clear use_default_cash_balance.

Must be a valid date in YYYY-MM-DD format

lock_date

Write it year-month-day, like 2026-12-31. Spreadsheets reformat dates silently — set the column to text if needed.

Must be a future date

lock_date

Use a date after today.

Must be a valid email address

email_address

Correct the address, or clear the cell if the card shouldn't be shared.

Must be one of: VIEWER, SPENDER, MANAGER, ADMIN

role_level

Use one of the four values, or leave the cell empty to default to Spender.

Email address is required when role_level is set

role_level

Add the teammate's email, or clear the role cell.

My file passed review but was rejected when I submitted

Some checks only run at submit, so a clean review doesn't always mean a clean submit. Nothing is created — fix the file and upload again.

Errors appear as Row 12: state — Must be a 2-letter US state code (e.g. TX), under a heading like CSV validation failed.

Message

What to do

Must be a 2-letter US state code (e.g. TX)

The review step accepts lowercase state codes and the final check doesn't. Type them in capitals — TX, not tx.

Must be a positive number with up to 2 decimal places (e.g. 100 or 99.99)

Round the spend limit to whole cents — 99.99, not 99.999 — and keep the figure under 13 characters.

Must be a future date

A timing edge case: the review step uses your computer's clock, the final check uses Fluz's. Push the lock date out one more day.

Unknown merchant slug: "Saks Fifth Avenue"

Use the lowercase, hyphenated form from the store page URL — saks-fifth-avenue, no spaces or capitals.

Unknown MCC code: "9999"

That 4-digit category code isn't one Fluz recognizes. Check it against a merchant category list.

Email not found

No Fluz user has that email address. Check the spelling — they need a Fluz account and must be on your account.

User is not a member of this account

That person has a Fluz account but isn't on yours. Invite them first, or clear the email and role cells for that row.

When the problem is about sharing, you'll also see: Fix these emails (they must be teammates on your account) or clear the email/role columns for those rows to proceed.

Errors that aren't about a specific row

Message

What to do

PIN verification required

Enter your Fluz PIN in the dialog to confirm the import.

PIN verification expired. Please re-enter your PIN.

Your PIN confirmation timed out. Enter it again and submit.

An active import job already exists for this account

Another Virtual Card import is still running. Wait for it to finish, or cancel it from the imports list.

Too many rows. Maximum is 1,000,000.

Split the file into smaller batches.

No rows to import

The file contained no card rows. Add rows and upload again.

Batch import only supported for Fluz-managed programs (TransPecos, GBank, ACB) — offer maps to …

Go back and choose a different card program. Only some programs support bulk import.

Failed to upload import input / Failed to prepare spender assignments / Failed to enqueue import pre-processing

Something on our side failed while starting the import. No cards were created. Submit again, and contact support if it keeps failing.

Some rows failed while the import was running

At this stage the import keeps going and each row gets its own outcome. Read these before re-importing — several mean the card already exists.

Message

Row shows as

What it means and what to do

Card already exists

Skipped

A card with that nickname already exists, or the nickname appears twice in your file. Nothing is broken and no duplicate was made. To create another card anyway, re-import that row with a different nickname.

Card creation failed: …

Failed

The card couldn't be issued. The text after the colon explains why. Correct it, then re-import just the failed rows.

Card created but reveal failed (use re-reveal to recover)

Failed

The card exists. Don't re-import the row or you'll create a second card. Use Re-reveal on the job page to fetch the details.

Card created but sharing failed for [email protected] — share manually

Success

The card is fine — only the sharing failed. Share it from the card's own page, or use Re-share on the job page. Don't re-import.

Card created but [email protected] is no longer on this account — share manually

Success

The card is fine. Re-invite the person and share the card with them, or share it with someone else.

Card already exists but sharing failed for [email protected] — share manually

Skipped

The existing card is fine. Share it from the card's page, or use Re-share.

Card already exists but [email protected] is no longer on this account — share manually

Skipped

Re-invite the person, then share the existing card with them.

Auth agreement failed during pre-processing

Failed

The cardholder agreement for that address couldn't be put in place. Re-import just the failed rows. If they fail again, contact support.

Address not found in pre-processing

Failed

The billing address on that row couldn't be saved. Re-import the failed rows, double-checking the address cells.

Batch processing failed — contact support

Failed

A batch of rows hit an unexpected problem. Re-import the failed rows; if they fail again, contact support with the import's date and file name.

Slice 4 results unavailable — contact support

Failed

Don't simply re-import — those cards may or may not exist. Contact support with the import's date and file name.

Cancelled

Failed

The import was cancelled before that row was reached. Re-import the cancelled rows. Rows that already succeeded will come back as "Card already exists" if they had nicknames.

Job FAILED

Failed

The import stopped before that row was reached. Check the reason shown on the import itself, fix it, then re-import the unfinished rows.

Re-reveal failed after 3 retries / Re-reveal failed: …

Failed

The card's details still couldn't be fetched. Try again later, and contact support if it keeps failing — the card itself exists.

The whole import stopped

These show as the import's own failure reason, next to the FAILED badge. None can be fixed by editing your CSV.

Message

What to do

Pre-processing failed — contact support

Contact support. No cards were created.

Pre-processing failed after repeated attempts — contact support

Contact support with the import's date and file name.

Import processing failed after repeated attempts (slice 4) — contact support

Check the per-row results before re-importing — some cards may already exist.

Import processing failed after repeated attempts (auth slice 2) — contact support

Contact support with the import's date and file name.

Auth approval timeout: 18/40 approved after 600s

The cardholder agreements didn't all come back in time. Re-import the file, or try a smaller batch.

Failed to read preprocess artifacts — contact support

Contact support with the import's date and file name.

Failed to consolidate auth failures

Contact support with the import's date and file name.

Failed to upload import input / Failed to upload spender map / Failed to finalize import setup

The import couldn't be started at all. No cards were created. Submit again, and contact support if it keeps failing.

Job is not in a cancellable state

You selected Cancel on an import that had already finished, failed, or been cancelled. Reload the page.

I imported the same cards twice

This only happens if you uploaded the same valid file more than once — a rejected import creates nothing, so re-uploading after an error is safe. Cards that reuse a nickname are skipped rather than duplicated.

Cards can't be deleted. If you did create duplicates, you can freeze the extras — see Freezing/unfreezing your Virtual Card.

Still need help?

If you're still stuck, contact support and include:

  • Your CSV file

  • The import's date and file name

  • The error message you saw, copied exactly

Related articles

More questions? Feel free to call our Customer Hotline at +1 888 960 0526. You can also use the Chat option at the bottom of your screen, or if you're on the app, go to Help and chat with us.

Fluz is a financial technology company, not a bank. Banking services provided by partner banks, members FDIC.

Did this answer your question?