Billing & Usage
Plans, credits, quotas, the free tier queue, and how billing works in OneShotMail.
Plans
| Plan | Monthly price | Receive/mo | Send/mo | Max email size | Max TTL | Rate limit | Seats |
|---|---|---|---|---|---|---|---|
| Free | $0 | 25 | 5 | 1 MB | 1 hour | 5 rps | 1 |
| Solo | $10 | 10,000 | 1,000 | 10 MB | 12 hours | 50 rps | 1 |
| Team | $79 | 100,000 | 10,000 | 25 MB | 24 hours | 200 rps | 10 |
| Max | $629 | 1,000,000 | 100,000 | 50 MB | 24 hours | 1,000 rps | 1,000 |
| Enterprise | Custom | Custom | Custom | Custom | Custom | Custom | Custom |
All paid plans are billed monthly via Stripe. You can upgrade, downgrade, or cancel at any time from the Stripe customer portal.
How billing works
When you create an address (receive or send), the billing system checks in this order:
- Monthly allocation — If you have remaining addresses in your monthly allocation for this mode, it is decremented and the request proceeds.
- Credit balance — If your monthly allocation is exhausted, credits are consumed instead. Receive costs 1 credit; send costs 2 credits.
- Quota exceeded — If both your allocation and credits are zero, the API returns
402 Payment Requiredwith an error like:
{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "Monthly address limit reached. Top up credits or upgrade your plan.",
"upgrade_url": "https://oneshotemail.com/pricing"
}
}
Monthly allocations reset at the start of each billing cycle (the anniversary of your subscription date). Unused monthly allocations do not carry over.
Credits
Credits are a pay-as-you-go mechanism for usage beyond your monthly allocation.
Credit packs
Available on every plan. Same price regardless of your plan. If you’re buying credits regularly, upgrading your plan will save you money — plan allocations are always cheaper per address than credits.
| Pack | Price | Per-credit cost |
|---|---|---|
| 50 credits | $3 | $0.060 |
| 200 credits | $10 | $0.050 |
| 1,000 credits | $40 | $0.040 |
Purchasing credits
Via the API:
checkout = oneshot.buy_credits(500)
# Open checkout.checkout_url in a browser to complete the purchase
Via the CLI:
oneshot credits buy --amount 500
Via the Web UI: Navigate to Account Settings and click “Buy Credits”.
All purchases go through Stripe Checkout. After successful payment, credits are added to your account immediately via Stripe webhook.
Credit costs by operation
| Operation | Credit cost |
|---|---|
| Create address (receive) | 1 credit |
| Create address (send) | 2 credits |
Credit expiry
Credits expire 12 months after purchase. Check your credit balance via:
acct = oneshot.account()
print(f"Credits remaining: {acct.credits_remaining}")
Free tier
The free tier provides 25 receive addresses and 5 send addresses per month at no cost.
The queue
New free tier accounts are placed in a queue to manage costs and prevent abuse. Here is how it works:
- You register with your email address at
POST /account/register. - You receive a queue position (e.g., “You’re #47”).
- Accounts are approved automatically at a rate-limited pace (starting at 10 per day).
- When approved, you receive an email with your API key.
Auto-approval
Some accounts skip the queue entirely:
.eduemail addresses (educational institutions).- Known company domains (configurable allowlist).
- Referrals from existing paid users.
Free tier limits
| Limit | Value |
|---|---|
| Receive addresses/month | 25 |
| Send addresses/month | 5 |
| Max email size | 1 MB |
| Max TTL | 1 hour |
| Rate limit | 5 rps |
| Max attachments | 2 |
| Max attachment size | 500 KB |
| Credit purchases | Available |
Anti-abuse measures
- One free account per email domain (not per email address).
- Accounts with zero usage for 90 days are auto-suspended.
- Aggressive rate limiting (5 rps).
Enterprise plans
For organisations with large-scale email testing needs:
- Custom allocations — set receive and send limits to match your usage.
- Custom TTL — up to configurable maximums.
- 50 MB email size — for testing large attachment workflows.
- Custom rate limits — higher throughput for load testing.
- Volume pricing — lower per-address costs at scale.
- Invoicing — pay by invoice instead of credit card (via Stripe).
- SLA — 99.9% uptime backed by our serverless AWS architecture.
- Audit logging — export usage events for compliance.
Contact enterprise@oneshotemail.com for pricing.
Checking your usage
API
acct = oneshot.account()
print(f"Receive: {acct.usage.receive.used} / {acct.usage.receive.limit}")
print(f"Send: {acct.usage.send.used} / {acct.usage.send.limit}")
print(f"Credits: {acct.credits_remaining}")
print(f"Cycle ends: {acct.billing_cycle_ends}")
CLI
oneshot whoami
Web UI
The dashboard shows live usage meters for receive and send, plus your credit balance.
FAQ
Is the free tier really free? Yes. No credit card required. You just need to wait for queue approval.
What happens when I hit my limit?
The API returns 402 Payment Required. Buy credits or wait for the billing cycle to reset.
Do credits expire? Yes, 12 months after purchase.
Why is there a waitlist for the free tier? To control costs and filter out abuse. Paid plans have no queue — instant access.
Can I downgrade from a paid plan to free? Yes, but you will lose access to features beyond free tier limits immediately (larger emails, longer TTL, etc.).