Credits and billing
What each check costs, how free monthly credits work, prepaid packs, auto top-up, and what happens when you run out.
You pay per check, in credits. There is no subscription.
What each check costs
| Check | Endpoint | Credits |
|---|---|---|
POST /v1/email/check |
1 | |
| Email list | POST /v1/email/batch |
1 per address |
| IP address | POST /v1/ip/check |
1 |
| Phone number | POST /v1/phone/check |
1 |
| Domain | POST /v1/domain/check |
1 |
| Whole signup | POST /v1/signup/check |
3 |
| Mailbox verification | add "verify_mailbox": true |
+5 |
| Balance and usage | GET /v1/account, GET /v1/usage |
free |
You're charged only when a check returns a result. Invalid requests, rate-limited requests and server errors cost nothing. The mailbox add-on is charged only when the mail server is actually asked.
Free credits
Every account gets 1,000 free credits each month, once the email address is confirmed. They reset on the 1st of the month (UTC). Unused free credits don't roll over. Free credits are spent before prepaid ones.
Prepaid packs
Buy packs in Billing. Prepaid credits never expire.
| Pack | Credits | Price | Per 1,000 |
|---|---|---|---|
| Starter | 10,000 | $10 | $1.00 |
| Builder | 50,000 | $40 | $0.80 |
| Scale | 250,000 | $150 | $0.60 |
| Volume | 1,000,000 | $500 | $0.50 |
Payments go through Stripe Checkout. Receipts and invoices are emailed, and you can download them in the billing portal.
Auto top-up
Tick Save my card for auto top-up when you buy a pack. Then turn on auto top-up in Billing and choose:
- When below: the balance that triggers a refill, such as 2,000 credits.
- Buy: which pack to buy.
We charge the saved card at most once every 10 minutes. If a payment fails, we switch auto top-up off and email you, so we never retry a declined card in a loop.
Checking your balance from code
curl https://veqen-app.com/v1/account -H "Authorization: Bearer $VEQEN_API_KEY"
{
"email": "you@company.com",
"balance": { "free": 640, "paid": 50000, "total": 50640 },
"free_monthly_credits": 1000,
"free_resets_at": "2026-11-01T00:00:00Z",
"costs": { "email": 1, "ip": 1, "phone": 1, "domain": 1, "signup": 3, "mailbox": 5 },
"rate_limit_per_second": 50
}
Every check response also carries two headers, so you don't need extra calls:
| Header | Meaning |
|---|---|
X-Credits-Charged |
Credits this request cost. |
X-Credits-Remaining |
Your balance after this request. |
When you run out
Requests return HTTP 402 with error.type set to insufficient_credits. Nothing else changes: add credits and the same request works. If your app must never block a signup because of billing, treat a 402 like review and let the person through with email verification.
Refunds
Unused prepaid credits can be refunded within 30 days of purchase. Email us with your account email.