# Credits and billing

You pay per check, in credits. There is no subscription.

## What each check costs

| Check | Endpoint | Credits |
|---|---|---|
| Email | `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](https://veqen-app.com/app/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

```bash
curl https://veqen-app.com/v1/account -H "Authorization: Bearer $VEQEN_API_KEY"
```

```json
{
  "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](https://veqen-app.com/contact) with your account email.
