Email verification
Bulk Email Verifier Workflow: Clean a CSV List Step by Step
Bulk email verifier workflow: prepare a CSV, review repeated rows, sort valid, invalid, catch-all and unknown results, and budget credits for the run.

Bulk Email Verifier Workflow: Clean a CSV List Step by Step
The question: How do you run a large contact list through a bulk email verifier without losing track of your rows or paying for answers that aren't clear?
The short answer: Put the addresses in one column of a clean CSV. Check the preview for unreadable and repeated rows before you start. When the run finishes, sort the results into rows to keep, rows to remove and rows to review. In FairValid, only a completed valid or invalid result costs a credit. Unknown and catch-all results have no net charge. Repeated rows within the same import are checked once.
These steps follow FairValid's official help pages and pricing page as checked on November 4, 2026.
Step 1: Prepare the file before you upload it
The FairValid CSV guide says you can upload a UTF-8 CSV or TXT file of up to 100 MB (100,000,000 bytes) and 1,000,000 data rows. Pasted text can be up to 8 MiB and 100,000 rows. If your list is in a spreadsheet, save it as CSV first.
A short checklist:
- Put every address in one column. The CSV guide asks for addresses in a single column.
- Keep your other columns. Fields such as names or internal record IDs can stay in the file. The CSV guide says other columns stay attached to their original source row, so you can match each result to the record it came from.
- Mark the header row. If the first row holds column names, select "The first row names the columns" so it isn't treated as an address.
Step 2: Check the preview, then start the run
Before you start, look over the full-file preview and choose the column that holds the addresses. The CSV guide also suggests reviewing unreadable and repeated rows at this point. Fixing a wrong column choice is easier now than after the run.
How repeated addresses are handled
A list combined from several exports can contain the same address more than once. FairValid checks a repeated address in one imported list once and shares that result across all of its source rows. The repeated rows don't add extra charges. This applies only to repeated rows inside a single import. A separate upload or a later recheck is its own submission, so don't assume it will be free.

Step 3: Read the results by category
When the run is complete, group the rows by result. The results guide defines each category:
- Valid: a usable positive check. It never guarantees inbox delivery.
- Invalid: the address did not pass.
- Catch-all: the domain may accept many addresses, so a conclusion about the specific mailbox may be less certain. Read the result detail before you use these rows.
- Unknown: the check couldn't return a dependable answer.
- Still checking: there's no final answer yet. This is a pending state, not a final result.
Keep "still checking" separate from "unknown." A pending row doesn't have its final answer yet, so don't treat it as uncertain. The results guide also lists technical failures and unprocessed items separately from unknown, so keep those apart in your review as well.
One way to act on each group
Illustrative example only: keep the valid rows, remove the invalid rows, and move catch-all and unknown rows into a review group. You can then decide on those case by case, using what you already know about each contact. Leave rows that are still checking until a final result arrives. Whatever approach you use, keep the source columns in place so you can trace every decision back to the original record.
Step 4: Know what the run will cost
The charge depends on the outcome. According to the FairValid pricing page:
| Outcome | Charge |
|---|---|
| Valid or invalid (completed) | 1 credit per result |
| Unknown or catch-all | 0 net charge; held credits are released or returned |
| Still checking | No final charge yet; a hold is not a completed charge |
While a check is running, FairValid places a credit hold, and the final result decides the charge. "No net charge" means any held credits are released or returned. It doesn't mean credits are never held. The results guide adds that technical failures and unprocessed items don't create a net verification charge.
To budget, count the unique addresses in the import, because repeated rows don't add charges. The final charge is one credit for each unique address that gets a completed valid or invalid result. Any catch-all, unknown, technical-failure or unprocessed outcome brings the total below that count.
Free and paid credits
The pricing page shows 300 free credits included each month. Free credits are used first, and the monthly allowance doesn't roll over. You can also buy monthly plans or one-time top-ups. A one-time purchase doesn't require a subscription, and you can choose any whole amount from 2,000 to 1,000,000 credits. For example, the catalog checked on November 4, 2026 lists 10,000 credits for USD 19.50 one-time, excluding tax. The final total, with tax, is shown before you pay. Unused paid credits never expire while your account stays open.

Step 5: Keep realistic expectations
Verification gives you evidence about each address. It doesn't guarantee that a message will be delivered, and a valid result never guarantees inbox placement. Catch-all results may be less certain, and unknown results have no dependable answer. Treat both with care.
Try it with a small list first
If you're new to bulk verification, start with a small slice of your list. Make sure the preview picks the right column and your source columns come through intact. Then look at how the results break down before you run the full file. Your monthly free credits are a good way to do this test. The CSV guide has the full file requirements.


