Credits & Budget Management
Bundled plan allowances plus opt-in pay-as-you-go overage, on a transparent three-layer credit system — platform credits, organization pools, and project budgets.
Credits & Budget Management
AEO Optima uses a three-layer credit system to manage API costs transparently. Credits flow from the platform through organizations to individual projects. On top of that, your plan's bundled allowances for metered features are free — and if you run out, pay-as-you-go lets you keep going instead of hitting a wall.
Credit Architecture
| Layer | Who Manages | What It Controls |
|---|---|---|
| Platform Balance | Platform Owner (T0) | Total OpenRouter credit pool shared across all organizations |
| Organization Pool | Platform Owner allocates | Credits available to the organization for distribution across projects |
| Project Budget | Organization Admin | Per-project overage budget from the org pool — caps what the project can add to your bill beyond what your plan includes |
How Credits Flow
- Platform Owner loads credits via OpenRouter (the LLM API gateway)
- Platform Owner allocates a portion to each customer organization
- Organization Admin distributes their org pool across projects as budgets
- Snapshot captures inside your plan's included answers draw nothing; captures beyond them (pay-as-you-go on) deduct the overage charge from the credit balance and add it to the project's overage budget tally. Pay-as-you-go AI features (AI analyses, GEO audits, report generations beyond your plan) and AI features billed per call (today the chart Ask-AI insight) draw the credit balance and the same tally. Every pay-as-you-go draw — a capture beyond your included answers or a paid AI feature — is checked against the project's overage budget before it happens, and refused if it would take the budget past its allocation.
- Budget advisor watches each project's projected overage and recommends rebalancing
Pay-As-You-Go (Overage)
Your plan includes a bundled allowance for the metered features — AI analyses, report generations, and GEO audits. Within that allowance they're free. When you exhaust it, you have two choices:
- Hit a hard stop (the default) — the feature is blocked until the allowance resets or you upgrade your plan.
- Enable pay-as-you-go — keep going by spending credits at a published per-unit rate, charged to your prepaid credit balance instead of blocking.
Rate card
| Feature | Included in plan | Overage price |
|---|---|---|
| AI Analysis | your plan's daily allowance | $0.50 each |
| Report Generation | your plan's monthly allowance | $2.00 each |
| GEO Audit | your plan's monthly allowance | $1.00 each |
Prices are shown live on Settings → Billing → Credits and are set by the platform; the app always quotes the current rate before anything is charged.
Pay-as-you-go is live for AI analyses, report generations, and GEO audits — enable it once and it applies across all three.
Capture credits — the two-part model
Captures follow the same philosophy with their own two-part model:
- Seat + included allowance — your plan seat includes a pooled monthly capture allowance. Captures within it are covered by the seat and never draw from your prepaid credit balance, so a seat-covered organization keeps capturing even with an empty wallet.
- Metered overage — captures beyond the allowance are metered from the credit balance at a published markup over raw capture cost, itemized as a capture overage entry in your transaction history.
An answer captured from Google's AI Overview or AI Mode counts as one answer, exactly like an answer from a chat engine, and the checks run on it (brand, tone and accuracy) are part of its cost.
From 8 October 2026, the check that refuses a capture which would pass your plan's daily answer limit counts those search answers too: a capture asks for its questions × engines chat answers plus its questions × search surfaces it will actually ask (in the project's main market), so a capture that fits on chat answers alone but not with its search answers is refused before it starts, never stopped halfway. Each run then lists its chat answers and its search answers apart, and a run is judged complete on its chat answers, so missing chat answers are never hidden by extra search answers. The credit check made before a capture starts (your plan's included answers, pay-as-you-go and its monthly cap, your credit balance and the project's budget) counts and prices those search answers as well: each at its search provider's fee plus an estimate for the checks run on it. The estimates you see before you schedule or run a capture (the setup step, a new schedule, Run schedule & cost, a one-off run, and the value line on the credits page) count and price the same search answers in the same way, and say how many of the answers they are.
Beyond-allowance metering is fail-closed: it only happens when pay-as-you-go is enabled — without the opt-in, capture stops rather than silently charging. The same optional monthly cap bounds capture overage alongside the other metered features.
Turning it on
- Open Settings → Billing → Credits.
- In the Pay-as-you-go card, toggle Enable pay-as-you-go.
- Optionally set a monthly cap — a hard ceiling on overage spend so you're never surprised.
Pay-as-you-go is off by default — no organization is ever charged overage without an owner or admin explicitly opting in. Charges come from the same prepaid credit balance your captures use, only the units beyond your included allowance are billed, and every charge is itemized in your transaction history as a "feature overage" entry.
Buying credits
Credits are currently sold manually — request them from Settings → Billing → Credits → Request Credits and the platform team tops up your balance (tier-aware requests can auto-approve). Self-serve card checkout is on the roadmap.
Budget Advisor
The budget advisor compares each project's projected overage — what its scheduled captures would add to your bill beyond your plan's included answers this allowance period, walked through the same gates the capture path checks — with what is left of its overage budget. It never compares the full cost of the answers: inside the included allowance the budget is not drawn at all.
- Critical — the overage budget refuses a scheduled capture within 7 days
- Warning — within 14 days
- Healthy — the projected overage fits what is left (or there is none)
- Idle — Budget allocated but no recent captures
Based on these classifications, the advisor generates smart recommendations:
- Transfer — Move budget from idle projects to starving ones
- Increase — Use unallocated org pool for underfunded projects
- Request Credits — Org pool exhausted, request more from platform owner
Onboarding Bonus
Organizations on a paid plan that complete their setup receive a one-time $1 onboarding credit and an auto-provisioned OpenRouter API key. Organizations on the Free plan do not receive it. Eligibility requires:
- A paid plan (any plan other than Free)
- An organization name of at least 2 characters
- At least 1 project created
- At least 5 prompts configured
Credit Requests
Organization admins can request additional credits:
- Navigate to Settings → Organization → Credits
- Enter the amount needed and a brief reason
- The Platform Owner reviews the request in the Platform Cockpit
- On approval, credits are added automatically and the org's OpenRouter key limit is synced
Owners and admins see every request of the organization; members and viewers see only the requests they made themselves (GET /api/organizations/{orgId}/credit-request).
Who Sees Dollar Figures
Dollar figures are for an owner or admin of the organization in question: the credit balance, this month's pay-as-you-go spend and its cap, each project's overage allocation and what it has drawn, the auto-refill amounts, capture-cycle costs, cost estimates, and the figures in budget alerts. A project admin whose organization role is member or viewer does not see them: project budgets are set by the organization's owners and admins. Members, viewers and those project admins see everything else — whether pay-as-you-go is on, the rate card (the published prices, the same for every organization), a project's budget mode and period, whether auto-refill is on, and the plan allowance in answers — and a line saying the figures are shown to owners and admins.
In the API a hidden figure keeps its key, with the value null — never 0:
GET /api/organizations/{orgId}/overage—balanceUsd,monthSpentUsdandmonthlyCapUsdarenullfor a member or viewer;enabledandrateCardare unchanged.GET /api/projects/{projectId}/budget—allocation,used,remainingandautoRefill.amount,autoRefill.maxPerDay,autoRefill.usedTodayarenullfor a member or viewer;mode,periodStart,autoRefill.enabledandautoRefill.periodStartare unchanged.GET /api/projectsand a project returned byPOSTorPATCH /api/projects— the budget and auto-refill amount keys (budget_allocation,budget_used_current_period,auto_refill_amount,auto_refill_max_per_day,auto_refill_used_today) arenullfor every role; owners and admins read the figures fromGET /api/projects/{projectId}/budget.GET /api/runsandGET /api/runs/{id}(and MCPlist_runs/get_run) — the four cost fields (total_cost_usd,llm_cost_usd,proxy_cost_usd,serp_cost_usd) arenullfor a member or viewer, and so isshape_history[].total_cost_usd.GET /api/projects/{projectId}/estimate—budget.allocation,budget.used,budget.remaining,budget.sufficient,budget.runwayDays,estimate.estimatedMonthlyCostandestimate.avgCostPerSnapshotarenull, and with?overage=1budget.projectedOverageUsdis present asnull, for anyone who is not an owner or admin. The what-if,POST /api/projects/{projectId}/estimate, does the same forestimate.estimatedMonthlyCostandestimate.avgCostPerSnapshot. The counts and the confidence are unchanged.GET /api/budget-alerts—estimated_costandcurrent_balancearenull, andmessageis a sentence with no figure, for anyone who is not an owner or admin of the alert's organization. A tenant administrator of the alert's organization sees the figures, as an owner or admin does. A project admin sees their project's alerts only while they are a member of its organization.- A refused paid feature (the answer from AI analysis, report generation, GEO audits, content briefs, criteria derivation and company-site analysis) —
overage.balanceUsdisnulland the message names no balance and no cap. A refused capture (POST /api/snapshots/capture,POST /api/snapshots/capture-serp) keeps itsdetailkey, holding one of the sentences below. POST /api/organizations/{orgId}/credit-request—newBalanceisnullfor a requester who is not an owner or admin. The plan's automatic-approval limit is not published, sotierCeilingisnullfor everyone, owners included, and a request above it reads "This amount exceeds what can be approved automatically; an owner or admin can ask us to review it." When the platform's own balance keeps a request from being approved automatically,declineReasonisauto_approval_unavailableanddeclineDetailreads "This request could not be approved automatically; an administrator will review it." for everyone. An automatic approval's review note names no limit.- MCP
get_project— the budget and auto-refill amount fields carry their figures only for an owner or admin token.
When an owner's or admin's own figures cannot be read (GET /api/organizations/{orgId}/overage, GET /api/organizations/{orgId}/agency-billing, GET /api/projects/{projectId}/budget), or a project's budget cannot be read for its cost estimate (GET /api/projects/{projectId}/estimate, for any role), the answer is an error, HTTP 503, reading "The figures could not be read just now, so none are shown. Try again in a minute." — never a balance or a spend of zero — and the billing page says the figures could not be loaded.
When a request is refused for money, anyone who is not an owner or admin sees one of these sentences instead of the figures:
| Reason | What they see |
|---|---|
| Credit balance too low | Your organisation's credit is too low — ask an owner or admin. |
| Project budget used up | Paused: this project has reached its budget cap. Raise the cap to resume. An owner or admin of your organisation sets each project's cap. |
| Monthly pay-as-you-go cap reached | Your organisation has reached its monthly pay-as-you-go cap. Ask an owner or admin of your organisation. |
| Included captures used up | Your organisation's included captures for this billing period are used up. An owner or admin can turn on pay-as-you-go or upgrade the plan. |
| Spending unusually high | Spending on your organisation is unusually high right now, so this was held back as a precaution. Try again later, or ask an owner or admin of your organisation. |
| Budget could not be checked | We could not check your organisation's budget just now, so nothing was run or charged. Try again in a minute. |
The last one is a retryable refusal (HTTP 503): a budget or this month's spend that cannot be read is never treated as room to spend. The same refusal answers when the server has no service-role access to read them with: a money check is never made as the member who clicked.
Org Runway
The org runway is how long your credit balance lasts at the pace something actually draws it. It is the balance divided by the draw burn, which has two named parts:
- Pay-as-you-go captures — captures beyond your plan's included answers (pay-as-you-go on): the larger of what is scheduled for the next 30 days and what captures drew in the last 30 days, per day. The scheduled half walks your schedules' fires over the next 30 days through the same gates the capture path checks, across the end of your allowance period (a fire just after it still draws), divided by 30. The other half is what captures beyond your plan — scheduled, manual, bulk, API or MCP — charged the balance in the last 30 days, divided by 30. Captures the balance cannot cover are refused: the capture path compares the balance with a capture's pay-as-you-go estimate, so it can refuse one even with money left, and a smaller capture later can still land. If, on that walk, the balance can no longer cover a scheduled capture's estimate, the scheduled half is then what the walk draws before that refusal (any chunks of that capture that already ran included), divided by the days until it, and the runway is never longer than those days — even when nothing draws the balance before then.
- Paid features — what AI features billed per call (today the chart Ask-AI insight) and pay-as-you-go AI features (AI analyses, GEO audits, report generations beyond your plan) charged the balance over the last 30 days, divided by 30.
It is never the full cost of your answers: captures inside your plan's included answers are paid for by your plan and draw nothing from the balance. An organization with no projects has a runway too — what draws its balance is in its ledger. The runway is one of three things:
- A number of days — something draws the balance, or a scheduled capture beyond your plan is refused because the balance cannot cover it; both parts are shown whenever something draws it. A runway under one day reads within a day, and a positive rate under a cent a day reads under $0.01/day. When the runway ends at a scheduled capture the balance cannot cover, it says from about which date scheduled captures start being refused (the date in the time zone of the project whose capture is refused first) and, when nothing draws the balance before then, that nothing does. A balance already at or below zero that something draws reads used up.
- Not being drawn — no scheduled capture is charged beyond your plan or refused because the balance cannot cover it, and no paid feature charged the balance in the last 30 days. No number is shown, and it is never flagged as low.
- Runway unavailable right now — your organization, its projects, the projection or the ledger could not be read. No number is shown, and it is never flagged as low.
While your organization's captures are paused, every capture is refused, so pay-as-you-go captures count as zero, and so do Ask-AI charges, which the same credit check refuses. That check also refuses AI analyses (sentiment drivers, content gaps, opportunity scoring, comprehensive), criteria-map derivation and company-site analysis during a pause, while pay-as-you-go for GEO audits and report generations can still charge the balance. A pay-as-you-go charge does not record which feature made it, so while paused every pay-as-you-go feature charge of the last 30 days is counted — including AI-analysis charges made before the pause — which makes the figure an upper bound. The runway then says captures are paused.
The runway is low when it is under 14 days. The header widget, the Runway tile and the Org credits will exhaust alert use this one threshold, on every plan.
The same runway is returned by GET /api/organizations/{orgId}/budget in advisory: orgRunwayDays (the days, null unless orgRunwayBasis is draws), orgRunwayBasis (draws, not_drawn or unavailable), orgDrawBurn (captureOverageDailyUsd and paidFeatureDailyUsd, USD per day; null when unavailable), orgRunwayAmple (over a year), orgCreditRefusalAt (when the runway ends at a scheduled capture the balance cannot cover, that capture's time — scheduled captures start being refused from then; otherwise null), orgCreditRefusalTimezone (the time zone of the project whose capture is refused first, in which the refusal date is shown; null exactly when orgCreditRefusalAt is), orgForwardUntilCreditRefusal (true when a scheduled capture is refused for credit within the next 30 days and captures are not paused, so the scheduled half of pay-as-you-go captures counts only until then, whether or not that refusal ends the runway) and orgRunwayConfidence, which says what the runway rests on: paused (your organization's captures are paused), scheduled (pay-as-you-go captures come from your scheduled captures ahead, the larger half, or nothing draws the balance and the runway ends at a scheduled capture it cannot cover), recent_usage (the draws rest on the last 30 days of charges only) or insufficient (the runway reads Not being drawn, or it could not be read). totalDailyCost and totalMonthlyCost in the same object are the full cost of your answers — what the platform pays for them, not a draw on your balance. balance in the same response also carries capturePausedUntil (until when your organization's captures are paused, or null). The header widget is read only for owners and admins, the people it shows to. On the Performance Overview it first loads once the page's own figures have come back (at most 1.5 seconds after they were asked for, and never before); on other pages, 1.5 seconds after the page opens. It refreshes when you return to the tab and every 5 minutes; the server reuses a runway it computed within the last 5 minutes only while your balance and pause state are unchanged. The Credits page reads it fresh. With ?estimates=1 (the Credits page; owners and admins only, like the whole response), each entry of projects also carries overage, that project's projection from the same walk, whose fields horizonDrawnUsd (what its scheduled captures draw from the balance over the next 30 days), creditRefusalAt (its first scheduled capture refused because the balance cannot cover the estimated cost, or null) and drawnBeforeCreditRefusalUsd (what it draws before your organization's first such refusal) are the inputs of the org runway above.
This is not the platform's own wallet runway on the Platform Cockpit, which divides the platform's OpenRouter balance by real provider spend.
Where to Check Credits
- Header widget — your balance next to the notifications bell; hover it for the org runway. It turns red when the balance is at zero, or when the org runway is under 14 days, on every plan.
- Notifications bell and email — the Org credits will exhaust alert
- Settings → Billing → Credits — the org runway with both parts, per-project budgets, usage history, and the budget advisor
Budget Alerts
The system runs proactive budget checks every 6 hours:
- Org pool low — Less than 20% of allocated credits remaining
- Project overage budget exhausted — the overage budget is fully drawn
- Project overage budget running low — 80% or more of it drawn
- Projected overage exceeds the overage budget — this allowance period's projected overage is more than the overage budget has left
- Org credits will exhaust — the org runway (see Org Runway above) is under 14 days: what draws the credit balance empties it, or scheduled captures start being refused because it cannot cover the next one's estimated cost. It is never raised while the runway reads Not being drawn, closes on its own when it reads so again or the balance reaches zero, and is left as it is when the runway cannot be read
An owner or admin of the organization (or a tenant administrator of it) acknowledges a budget alert. Anyone else in the organization, a project admin included, is told "Only an owner or admin of your organisation can acknowledge a budget alert."
Cost-Anomaly Protection
Beyond budgets, a cost-anomaly guard protects against runaway spend. If an organization's hourly capture cost spikes far above its recent 7-day average — both the multiple and an absolute hourly floor are plan-tier-aware, so higher tiers tolerate higher legitimate spend — new captures are paused before the spike can drain the credit pool. It is a safety brake, not a quota.
When an active schedule has one due capture that has delivered no answers 24 hours after it was due, the platform raises a stalled-schedule alert naming the schedule, the day it was due and the class of reason. It is measured from what the schedule actually delivered, never from its next-run time, so a capture the platform could not run is seen within a day. The alert is raised only when the stop is on the platform's side (captures paused by the platform, a check that could not be made, a run that landed nothing, a fire that never ran) and resolves on its own the moment a capture lands; a stop on your side — a plan limit, used-up included captures, credit, a project budget or a pause on your organization — is carried by the budget or plan alert for that condition instead, so one cause never raises two alerts. A scheduled capture the platform refused is retried every hour until it runs, and nothing is charged for it.
Cost Estimation
The estimates on the setup wizard's schedule step and the New run schedule page say what a cadence will draw from your organization, not what the answers cost to produce:
- Answers a month — every active question × every active AI platform × the runs a month at that cadence.
- What your plan's allowance covers — the included answers are shared by every project of your organization and run in a 30-day allowance period from its start (not a calendar month). The estimate counts what is left of the period's allowance after what has been used and what your other projects' schedules already commit.
- The rest, at the pay-as-you-go rate — answers beyond the allowance draw the pay-as-you-go rate from your credit balance (or do not run, when pay-as-you-go is off).
When everything fits it says "Covered by your plan's allowance — no extra charge expected." When it cannot be worked out it says so, never $0. It is an estimate, not an invoice, and dollar figures are for an owner or admin of the organization.
The credits page shows each project's value of the answers at the pay-as-you-go rate — every answer a month at that rate — beside its projected overage, which is what the project is actually expected to draw beyond your plan's included answers. A project budget meters that overage only.
API Key Management
Each organization can have an auto-provisioned OpenRouter sub-key with a credit limit matching their allocation. The key lifecycle:
- Created when platform owner provisions the organization
- Limit synced whenever credits are added or budgets change
- Disabled if the organization is paused
- Deleted if the organization is removed
Organizations can also bring their own API keys (BYOK) which bypass the credit system entirely.