Billing & Payment Flow
How signup, payment, and plan upgrades work behind the scenes.
How It Works
SnapAPI uses Stripe for all payment processing. Your API key is created instantly on signup, and plan upgrades are applied automatically after successful payment.
Signup Flow
Here's exactly what happens when you sign up:
Free Plan
- You enter your email and click "Get API Key"
- Your API key is created immediately (Free tier: 100 screenshots/month, 5 req/min)
- A welcome email is sent with your key and plan details
- You can start making API calls right away
Paid Plan (Starter, Pro, Business)
- You select a plan and enter your email
- Your API key is created immediately with Free tier limits
- You are redirected to Stripe Checkout to complete payment
- After successful payment, Stripe sends a webhook to our server
- Your key is automatically upgraded to the paid plan (higher limits apply immediately)
- No welcome email is sent until payment is confirmed
After Payment
Once Stripe confirms your payment (typically instant for card payments):
- Your API key's plan, monthly limit, and rate limit are upgraded automatically
- The upgrade takes effect immediately — no restart or new key needed
- Your existing key gains the higher limits of your new plan
- Stripe handles recurring billing on the same date each month
Limit Enforcement
SnapAPI enforces two types of limits on every request:
1. Rate Limit (per minute)
A sliding-window rate limiter (powered by Redis) prevents burst abuse. Each plan has a per-minute request cap:
| Plan | Requests/min |
|---|---|
| Free | 5 |
| Starter | 30 |
| Pro | 60 |
| Business | 120 |
When exceeded, the API returns 429 Too Many Requests with headers indicating when to retry.
2. Monthly Quota
Each screenshot request is counted against your monthly quota. The quota is checked before every screenshot is taken:
- If within limit → screenshot is taken and counter is incremented
- If at/over limit → request is rejected with
402 Quota Exceeded
You can monitor your usage in real-time via the GET /v1/usage endpoint or the X-Credits-Remaining response header.
What counts toward quota?
- Each successful screenshot = 1 credit
- Cached responses (
X-Cache: HIT) do not count - Failed requests (4xx/5xx) do not count
Cancellation & Downgrade
- Cancel anytime — no contracts, no cancellation fees
- When cancelled, your key is downgraded to the Free plan at the end of the current billing period
- Your API key remains active (it's never deleted), just reverts to Free limits
- All your existing screenshots and cached results remain accessible
FAQ
I signed up for a paid plan but didn't complete payment. What happens?
Your key works on the Free tier (100 screenshots/month). You won't be charged. You can complete the upgrade anytime by calling POST /v1/upgrade with your API key.
How fast does the upgrade take effect after payment?
Typically within 1-5 seconds. Stripe sends a webhook immediately after successful payment, and we process it in real-time.
Can I use my API key while waiting for payment to process?
Yes. Your key is active immediately with Free tier limits. Once payment confirms, limits upgrade automatically.
What if my card is declined or payment fails?
Your key stays on its current plan. Stripe will retry failed payments according to their Smart Retries schedule. If all retries fail, your plan is downgraded to Free.
How do I check my current plan and usage?
Call GET /v1/usage with your API key in the X-API-Key header. It returns your plan, usage count, and remaining quota.
Do I get a new API key when I upgrade?
No. Your existing key is upgraded in-place. Same key, higher limits.