TL;DR
- Nothing to migrate. Export, verify, import. Your "send valid, skip the rest" rule carries over.
- Price: ZeroBounce's pay-as-you-go packs cost about 2x ours (5K: $69 vs $29; 100K: $649 vs $299).
- Test first: run the same 500 addresses through both and compare the results before you move any volume.
Why people switch
The main reason is the bill. On ZeroBounce's pricing page (checked 2026-10-17), 5,000 validations cost $69 and 100,000 cost $649. Mail Exchange charges $29 and $299 for the same volumes. See the full table in Mail Exchange vs ZeroBounce.
Terms are similar where it matters. ZeroBounce does not charge for unknown results and removing duplicates is free, and so do we. Our credits never expire. ZeroBounce is also the better fit if you want its extras (email finder, inbox tests, warmup) from one vendor. We only verify.
What carries over
Everything you do with the results. The workflow is the one in how to verify emails before cold outreach:
- Export the leads you want checked from your sending tool or lead source as CSV.
- Upload the file to Mail Exchange. Your columns are kept.
- Filter on the result and import the rows you want to send to.
No account data moves between vendors, and we have no migration tool. If you call ZeroBounce's API from a script, you would point that call at our API instead (keys on request; the response format differs, so you will change a few lines).
ZeroBounce statuses and ours
| ZeroBounce status | Mail Exchange state | Notes |
|---|---|---|
| valid | deliverable | ZeroBounce's valid includes some addresses on accept-all domains (sub-status accept_all). We keep catch-alls out of deliverable. |
| invalid | undeliverable | Reasons: rejected_email, invalid_domain, invalid_email. |
| catch-all | risky (low_deliverability) | Also flagged accept_all: true in the API. |
| unknown | unknown | Credit refunded. Retry later. |
| do_not_mail | risky (low_quality or disposable) | ZeroBounce uses it for role-based, disposable and some other high-risk addresses. We label role and disposable separately. |
| spamtrap | no separate status | We do not return a spam-trap verdict. See spam traps. |
| abuse | no separate status | We do not flag addresses known to complain. |
ZeroBounce definitions from its status codes documentation, checked 2026-10-18. Where the table says "no separate status", treat those addresses as you would any risky result, or keep ZeroBounce for that check.
Use your existing credits first
Credit terms differ by plan, so look at your own ZeroBounce account for expiry before you decide. If your credits are still valid, spend them first. You only start paying us when you run out. Ours do not expire, so there is no deadline on this side. We do not offer to match or buy out leftover credits.
Test before you switch: the 500-address sample
- Pull a random 500 addresses from a list you have already verified at ZeroBounce (random, not the first 500 rows).
- Run the same file through Mail Exchange. The 3-day trial covers 25 of them, and the rest costs under $2 at our 5K price ($0.0058 each).
- Join the two result sets on the address. Count the rows where the two disagree.
- Look at the disagreements by type. Catch-all against valid is expected, since we separate them. Valid against undeliverable is the one to investigate.
- If you have send history, check which result predicted your actual bounces better.
500 addresses will not give you a precise accuracy figure, only a sanity check. Use it to see whether our labels fit how you send.