Credits, plans and billing
How credits work#
A credit is the unit of everything. A page costs what it took to read: the ladder starts cheap and climbs only when a site refuses, and you pay for the rung that produced what you got. You never choose the engine; you set a ceiling (the tier) and, if you want, a cap per page.
Reading a page#
| Mode | What happens | Credits |
|---|---|---|
| Fetch | A plain HTTP request with a real browser's fingerprint | 1 |
| Fetch with session | The same request carrying cookies a browser earned on this site earlier. One render earns the session; every page after it is read this way | 2 |
| Render | A real Chrome loads the page, runs its JavaScript, waits for it to settle | 4 |
| Render, residential | The same Chrome from a residential address; 1 MB of traffic included | 16, +4 per further started MB |
| Render, solved | A render plus a paid answer for a captcha widget on a form your steps submit. A widget passed on a click is a render | 22 |
| Unlocked | A rented fetch through a specialist service; the last rung, stealth only | 40 |
Add-ons and the other things#
| Credits | |
|---|---|
| A screenshot | +1 |
| A PDF document | at least 2 (a fetched one 2, a rendered one 4) |
| Structured extraction with a model on your own key | 1 per 1,000 tokens in and out (the model bill is yours) |
A map (POST /map, or Discover on the Sources screen) | 1 per sitemap file read, at the rung that read it — most sites 1; never per URL declared |
| A render bought on suspicion that found a short page unchanged | the http rung's price; the render is on the ledger at 0 |
Free, always#
- A page the site refused, whatever the ladder spent finding out — you pay for pages, not for walls.
- A 404 or 410, and a 200 that is the site's not-found page.
- A page served from the cache (
cache_max_age_hours), an incremental copy carried forward when the sitemap says it did not change, a URL robots.txt kept us from. - The discovery a run makes for itself, the change record, webhooks, exports, destinations.
- A document the project did not ask for (recorded as seen).
Tiers#
The ceiling you set per project: http = Fetch and Fetch with session (every plan) · browser = + Render (Free, Starter and up) · stealth = + residential, solved, Unlocked (Growth and up) · auto = as high as your plan allows (a project made with New project starts here). A page still starts where the site is known to answer (the cheapest engine, on a site not read before) and climbs only when refused. The plan caps the tier on a project's runs, a scrape, the playground and a map alike. A page that needs more than the tier allows is recorded TIER_LIMIT at 0 — "this costs more than you allow", not "unreadable". max_credits_per_page (maxCredits on /scrape) is a finer cap.
In practice#
| Credits | |
|---|---|
| A 200-page documentation site, plain fetch, read twice | 400 |
| The same site, rendered (JavaScript-only), read twice | 1,600 |
| A 100-page Cloudflare-protected site: one render earns the session, 99 pages read with it | 4 + 198 = 202 |
| A residential render of a 0.6 MB page / a 2.3 MB page | 16 / 24 |
| A map of gov.uk (508,000 URLs in 29 files) | 29 |
| 100 pages extracted to JSON with your own model key, ~3,000 tokens each | 300 |
| A 100-page project on the weekly schedule, plain, for a month | ~400 |
Plans#
Every workspace starts on the Free plan — 1,000 credits, once, no card. Move to a paid plan from Billing whenever you need more room; what you have built carries over.
| Free | Starter | Growth | Scale | Enterprise | |
|---|---|---|---|---|---|
| Price | $0 | $29 / mo | $99 / mo | $349 / mo | from $1,500 / mo |
| Credits | 1,000, once | 100,000 / mo | 500,000 / mo | 2,500,000 / mo | no ceiling |
| Tier | browser | browser | stealth | stealth | stealth |
| Projects | 2 | 10 | 50 | 250 | ∞ |
| Pages per run | 500 | 5,000 | 50,000 | 200,000 | ∞ |
| Crawls at once | 1 (2 interactive) | 2 (4) | 5 (10) | 15 (30) | custom |
| Requests per minute | 60 | 120 | 300 | 600 | custom |
| Past the allowance | stops | buy credits $5 = 15,000 | overage at $0.30 / 1k up to a cap you set; buy credits $5 = 15,000; priority support, DPA | overage at $0.20 / 1k up to a cap you set; buy credits $5 = 25,000; one-month rollover; invoicing | dedicated workers and exits, static IPs, a person to call |
| In INR, + 18% GST | ₹0 | ₹2,499 / mo | ₹8,499 / mo | ₹29,999 / mo | agreed |
Annual: twelve months for the price of ten; credits still arrive monthly. The free tier is a trial, not a hobby plan: the credits do not renew, retention is 7 days, nothing to buy.
Beyond the allowance#
Three layers, drawn in this order:
- The allowance — what the plan includes, per calendar month. A month a subscription starts or changes plan in gets a blended number: each day at the plan it was on — the old plan's share of the days gone plus the new plan's share of the days left — so a day-28 upgrade is not a full month's credits for three days' money, and a second change the same month builds on the first. What was spent stays spent; the ceiling moves. A subscription that resumes after a halt gets the month's number back: the cycle was paid in full.
- Overage (Growth and Scale) — work continues past the allowance at the plan's per-thousand rate, billed as a line on the next renewal invoice, up to a cap you set on Billing: twice the allowance by default, any multiple, or none. Past the cap, runs stop.
- Bought credits (every paid plan) — packs of $5 (₹449 + GST), 15,000 credits on Starter and Growth, 25,000 on Scale. Drawn only after the allowance and the overage cap, never expiring, kept across a plan change and across a cancellation -- the free plan draws on its own allowance, so bought credits wait there until the workspace is on a paid plan again. Bought from Billing; credited the moment the payment is confirmed.
Scale also carries a month's unused allowance into the next month, once.
A limit agreed for your workspace — on a call, in a contract — is set on the workspace itself and always wins over the plan's number, so a change to what a plan includes never takes away something you were promised. Settings → Limits shows what applies to you.
How a run is metered#
- At the enqueue, a workspace with nothing left is told so — 402
plan_limitwith a plain reason — before a job exists. - At the claim, the run is given the budget it may spend, so a crawl cannot outrun the balance mid-run. A scrape and a playground fetch get one too, while credits are enforced.
- Per page, what is left bounds the climb: an engine dearer than the balance is not tried, and a page it alone could read is recorded
BUDGET_EXHAUSTEDat 0. A page that needs more than is left (a render with 3 credits to go) is not fetched; the run stops there. - Per page, the run's tally; a crawl that reaches its budget stops with
StopReason: creditsand keeps what it read. - The ledger (the Billing screen): one row per one-off (a scrape, a map, a model pass), one row per engine per crawl (upserted as the run goes — with a note when renders were billed at the rung below), and free lines for the things worth showing at zero. Every page row carries the engine that read it, so a bill can be taken apart to the URL.
- The meter on the Billing screen is what the ledger adds up to this month; on the free tier, over the workspace's whole life.
Payments#
Payments go through Razorpay, and Billing does the rest:
- Choose a plan — monthly or yearly, in USD or INR. INR prices are before GST; 18% is added at checkout. USD is the export list, for a customer outside India, with no GST; a workspace whose invoice details name a GSTIN or an Indian state is offered INR only, since a supply to it carries GST whatever the currency. Checkout is Razorpay's: MeshArc never sees your card. The plan is yours the moment Checkout confirms the payment; Razorpay's webhook says the same thing again a moment later.
- Tax invoices — every payment gets a numbered tax invoice (
MA/2026-27/0001, one series per financial year) from Discover Webtech Private Limited, GSTIN 23AAFCD0880K1ZP, Indore: taxable value and, for a customer in Madhya Pradesh, CGST 9% + SGST 9%; for the rest of India, IGST 18%; for a customer paying in USD, zero-rated as an export of services under LUT. Give your legal name, GSTIN (or your state, if unregistered) and address under Invoice details on Billing and they appear on every invoice from the next payment. Open it from Payments → tax invoice; the browser's Print saves the PDF. Razorpay's own receipt is linked beside it. - Credit notes — a refund against an invoice (the unused days of a mandate replaced on an upgrade, or a refund made by support) gets a numbered credit note (
MA-CN/2026-27/0001) that names the invoice and reverses the refunded amount's share of its tax. It sits under the payment on Billing → Payments. - Change plan — an upgrade is applied at once and a downgrade when the cycle ends; the month's credits are blended by the day either way. How depends on what holds the mandate. Where Razorpay can move the subscription itself — a card issued outside India, a bank mandate (eNACH) — it prorates by the day and charges the difference for the rest of the cycle; a downgrade shows as Growth until 14 Oct, then Starter with a Keep Growth button. Where it cannot — UPI, or a card issued in India, whose mandate is fixed when it is registered — the change is a new mandate you authorise in Checkout: an upgrade starts now and the unused days of the old mandate are refunded to the account that paid (5–7 working days, with a credit note); a downgrade's new mandate starts when the current one ends and cannot be called off. Changing the currency means cancelling at the cycle end and starting again.
- Paid by UPI? A UPI mandate cannot be moved to another plan, so a change is a new mandate to authorise through Checkout: an upgrade starts now and the unused days of the old mandate are refunded pro rata; a downgrade starts when the current mandate ends, and cannot be called off. Update card does not apply to a mandate — to pay another way, change the plan and authorise the new subscription with a card.
- Update card — Checkout again, on the existing subscription.
- Cancel at cycle end — the plan stays until the period ends, then the workspace is on the free plan with its projects and data kept.
- A failed renewal — Razorpay retries on three consecutive days; the plan stays meanwhile and Billing says so. If every retry fails the subscription is halted: the workspace is on the free plan and runs stop until the payment goes through — Update card, approve the request in your UPI app, or the link in Razorpay's email. Your projects, pages and history are kept; nothing is deleted for non-payment. The workspace's owners and admins are emailed by MeshArc on the day the payment fails, on the day it is halted, and a week and a month later; then no more.
- Renewals above ₹15,000 — the RBI's ceiling for a recurring payment taken without you (Scale monthly, and every yearly plan in INR). A card cannot hold a mandate that size. Pay by bank mandate (eNACH, offered in Checkout) and renewals are automatic; pay by UPI and your UPI app asks you to approve each renewal — MeshArc emails you three days before. If a renewal is not approved it is a failed renewal, as above.
- Buy credits and the overage cap — see Beyond the allowance above.
- Payments — every charge with its Razorpay invoice, on Billing.
For the API: GET /me/billing carries the catalogue, the subscription, the bought-credit balance and the receipts; POST /me/billing/subscribe, /confirm, /change, /keep, /cancel, /card, /credits/buy and PATCH /me/billing/cap are what the buttons call. They need an admin session with a fresh second factor; an API key cannot buy.