Credits and Billing
Chab supports all 21 tools with paid credits or free credits. A start goes ahead when the tool is available right now, your credential is authorized for it and you have enough credits.
Paid plans and credit packs are available on the pricing page:
Starter $29 a month (1,000 credits), Pro $99 a month (5,000 credits) and Scale
$299 a month (20,000 credits), or yearly with two months free. One-time credit
packs cost $39, $179 and $329. On a plan they give 1,000, 5,000 and 10,000
credits. Without a plan (free / pay as you go) they give half: 500, 2,500 and
5,000 credits. Payments are
processed by Paddle, our Merchant of Record. If the API returns
billing_action_required, its action_url leads to the credit-purchase page.
Free credits keep working alongside paid credits.
Plans and API Access
Paid /v1 operation endpoints require an eligible plan, a healthy
subscription, the operation family in the plan, the required token scope, and
enough credits. A verified free account can also start the documented
verified-free operations when promotional funding is enabled and the account
has signup-bonus free credits available. Guests can use their trial credits
without a subscription. Free credits can pause for a while when Chab's
daily free-use limit is reached; work paid with
your own credits is never affected by that limit.
| Plan | Price | Monthly credits | Paid /v1 API access |
Operations |
|---|---|---|---|---|
| Starter | $29/month | 1,000 | Yes | All tools, within Starter limits. |
| Pro | $99/month | 5,000 | Yes | All tools, within Pro limits. |
| Scale | $299/month | 20,000 | Yes | All tools, within Scale limits. |
The current paid operation-family entitlement matrix is below. An included family is a plan permission, not a promise that every operation in that family is currently ready. Each operation also needs a ready provider and must not be paused before it can start; see Service Health. Preview contracts can evolve. Research's comprehensive mode remains Scale-only; quick and standard support every paid tier. Mail and Drive require separately authorized customer connections and their configured entitlements; they are not part of anonymous access.
| Family | Starter | Pro | Scale |
|---|---|---|---|
| Search | Included | Included | Included |
| SEO | Included | Included | Included |
| Business data | Included | Included | Included |
| Scraping | Included | Included | Included |
| Screenshots | Included | Included | Included |
| Conversion | Included | Included | Included |
| Contacts | Included | Included | Included |
| Translation | Included | Included | Included |
| LLM generation and embeddings | Included | Included | Included |
| Research | Preview | Preview | Included |
Starter supports viewport screenshots, 25 MiB conversion sources, 8,192-token LLM input and research source budgets up to three. Its monthly start limits are 1,000 each for screenshots, conversion and LLM, and 25 for research. Rates, concurrency, credits and current availability still apply. These allowances are limits, not additional included credits or promises that a provider is ready.
Monthly plan credits refresh with the subscription cycle. Unused subscription credits can roll over up to three times the plan's monthly credit amount: 3,000 for Starter, 15,000 for Pro, and 60,000 for Scale.
Free Promotional Funding
When Chab offers a free promotional allowance for an operation, that request runs on free credits only. If free funding, risk checks, market availability, verification, or the operation allowlist blocks the request, Chab returns a free-mode error and does not automatically reserve paid credits.
Promotional credits are stored as free-credit lots for the eligible beneficiary.
Each lot has its own grant program, redemption key, issued amount, remaining
amount, expiry, and market-policy provenance. Free-credit lots are separate
from the team's paid credit balance and from purchased credit packages. They do
not increase Team.credits, are not returned as purchased packages, and cannot
trigger auto-recharge or credit debt. Free promotional credits are one-off
grants and do not refresh monthly.
Browser-trial credits and signup-bonus credits are separate promotional grant programs. If a visitor creates an account from the same browser while an active trial is still eligible, Chab claims the guest identity into the new personal team before email verification. Eligible unspent browser-trial value transfers to the account, accepted guest operations become visible in signed-in history, and active guest holds continue to settle or release against their original reservations. Released unused held value returns to the claimed account when it is still unexpired. The claimed guest cookie cannot start new trial work or read guest-scoped results after the claim.
Balance surfaces keep the two balances separate. GET /v1/credits,
GET /api/credits/balance, the dashboard header, the credits page, and team
billing settings expose free_credits with available, held, issued,
remaining, and ISO 8601 next_expiry_at fields. API balance responses also
include free_operations so clients can display the exact free allowlist,
credit_source so clients can distinguish signup_bonus from guest_trial,
free_credit_policy.monthly_refresh: false, and free_remediation with the
balance, transaction, package, purchase, or guest credential endpoints a client
can offer when a free request is exhausted or unsupported.
Guest trial API credentials read the same /v1/credits endpoint, but their
response is scoped to the guest trial instead of a team. Guest responses report
spendable_balance: 0, credit_source: "guest_trial", the guest
free_credits summary, the guest operation allowlist, and guest remediation.
They do not expose paid team balance, purchased credit packages, team debt,
billing settings, or team credit transactions.
{
"data": {
"spendable_balance": 0,
"free_credits": {
"available": 50,
"held": 0,
"issued": 50,
"remaining": 50,
"next_expiry_at": "2026-10-14T10:00:00+00:00"
},
"free_operations": [
{"operation_key": "search.web", "scope": "api:search:read"},
{"operation_key": "contacts.email_verify", "scope": "api:contact:write"}
],
"free_credit_policy": {
"grant_model": "one_off_promotional_lot",
"monthly_refresh": false,
"description": "Free promotional credits are one-off grants and do not refresh monthly."
},
"credit_source": "guest_trial",
"debt": 0
}
}
When signup bonus funding is available, eligible accounts receive it after email verification completes. The bonus is attached to the user's personal team, appears as promotional credit rather than paid team balance, can be redeemed only once, and expires 30 days after issuance. Creating or switching teams, making API tokens, using device credentials, changing email address, or re-registering with the same normalized email does not create another signup bonus. If account approval, current policy acceptance, the daily signup-bonus limit, market availability, or fraud-prevention checks are not ready, email verification can still complete and the bonus decision remains pending for automatic retry. Disposable email addresses and markets with a zero-value promotional policy do not receive a spendable signup bonus.
When a free-funded operation is accepted, Chab reserves eligible free-credit lots for that beneficiary, using the earliest expiring lot first. One reservation can span multiple free-credit lots, but it never mixes free and paid sources. Settlement, cancellation, estimate updates, and stale-hold cleanup use the exact lots pinned at reservation time instead of choosing a new source later.
Verified-free accounts and guest credentials support all tools, subject to
current availability, their scopes, free credits, free resource limits and the
daily free-use limit.
Free API keys and CLI device tokens share the same signup-bonus free-credit
balance; creating multiple
credentials does not create multiple balances. Guest trial API credentials are
limited to those tools and share the same guest trial free-credit balance
as the browser trial. Once a free balance is exhausted, Chab returns
free_credits_exhausted. Guest trial credits cannot be refilled by issuing a
new credential. Create a free account to keep going: verifying your email adds
bonus credits. After that, choose a plan or buy a credit pack. A claimed browser-trial
balance does not duplicate the verified signup bonus, and the signup bonus is
still issued at most once when email verification completes.
Credit transaction APIs include customer-safe free-credit lifecycle rows.
free_credits_issued, free_credits_expired, and
free_credits_exhausted have kind: "free_credit" in /v1/credits/transactions
and use zero paid-credit amount because they do not change spendable paid
balance. Their explicit fields include free_credits_issued,
free_credits_expired, required_credits, available_credits, and
remediation where applicable. Operation reservation, settlement, and release
rows continue to expose funding_mode, credit_source,
free_credits_reserved, free_credits_used, and free_credits_released.
Public transaction payloads do not expose internal lot IDs, grant redemption
keys, market-policy details, risk signals, IP hashes, provider names, or raw
principal IDs.
Accepted holds remain valid even if their pinned free-credit lot expires before the operation settles. If an unused free hold is released before lot expiry, the unused amount becomes available again. If it is released after expiry, the unused value is not restored.
Free-mode denials are listed in Free-Mode Operation Errors. Use a paid plan or a paid-only operation start when you want paid credits to be eligible for reservation.
Estimates
Billable operations include an estimated credit cost before expensive work
starts. Chab checks the API key budget first, then the team's available credits.
If the team does not have enough credits for the estimate, Chab returns
insufficient_credits before starting work and no credits are held or charged.
Teams also have an operation spend threshold. Chab compares the current active
reserved operation credits plus the new estimate against the team's configured
threshold, or the plan default when no team override is set. If the estimate
would exceed that threshold, Chab returns spend_threshold_exceeded before
creating a hold. Lower the request budget, raise the threshold from the credits
usage page, or move to a larger plan before retrying.
Longer or variable-size operation families may update the estimate while work is running. If a higher estimate would exceed the caller's budget or the team's available credits, Chab stops safely and settles only the work already incurred.
Expensive operation families may also support estimate-only calls before starting work.
Some operation families use conditional estimates instead of a single flat price. The accepted operation response always shows the estimate Chab reserved for that specific request.
API key spending policies
Each API key has an independent spending mode. New keys start at none and
return token_spending_disabled for billable starts or downloads. all allows
spending subject to team controls. capped uses one non-renewing allowance:
accepted work is held against that allowance, actual charges settle it, and
unused holds are released. GET /v1/me reports the current allowance and all
active reservations for the key.
The shared key policy revision and the allowance version are different counters. Changing the current cap advances the policy revision but retains that allowance's held and settled usage. Starting a new allowance is an explicit replenishment action: it closes the old allowance, opens the next version, and resets only current capacity. Work accepted under an older version still settles or releases against that original allowance.
Entering capped mode creates a new allowance and attaches current holds; the
limit cannot be below that exposure. Leaving capped mode does not move old
holds. none blocks new billable starts and estimate growth but keeps
nonbillable endpoints and already-paid results available. all removes only
the key ceiling; team balance, request budgets, plan quotas, spend thresholds,
and recharge limits still apply. Returning to capped mode opens a new version.
active_reserved_credits is the key-wide held total across current and older
allowances. The allowance's held_credits is only the active version's held
amount. Remaining capacity is limit_credits - settled_credits - held_credits.
token_budget_exceeded means an estimate, increase, or authorized download
maximum is greater than that capacity.
An accepted idempotency-key replay returns its original operation and hold even if the key policy was tightened later. Budget denials are permanent for that request key: after changing the policy or request cost, use a new idempotency key. Usage control order is rate, quota, concurrency, key spending, team spend threshold, team credits, then provider throttling. A key-budget denial therefore cannot trigger auto-recharge.
Chab authorizes streamed downloads before sending bytes. The authorization reserves the maximum charge derived from trusted artifact size, no output chunk may cross that ceiling, and final settlement uses actual bytes. Provider-hosted redirects transfer zero Chab-served bytes and therefore settle at zero. A partial stream settles only emitted bytes and releases the remainder. Closed allowances, source-linked allocations, and delivery intents retain the key's public identifier and accounting facts after credential deletion so duplicate settlement or recovery cannot charge twice.
Search Pricing
Search operation prices follow the documented request caps:
| Operation | Credits | Notes |
|---|---|---|
search.web |
2 to 10 | Organic web results, up to 100 rows: 1 credit per started 10 results returned, at least 2 (20 results = 2, 50 = 5, 100 = 10). |
search.serp |
5, 7 with a screenshot | First-page SERP blocks, up to 10 organic rows. screenshot: true adds a PNG of the results page (2 credits, not charged when it fails). |
The accepted operation reserves the full estimate. A successful search.web
settles on the unique results returned (never above the reservation); a
successful search.serp settles at the reserved amount. If no chargeable work starts, cancellation or
failure releases the hold. If chargeable work partially starts, Chab may charge
the actual partial amount up to the active hold and release the remainder.
Scrape Pricing
Scrape operation pricing depends on the rendering mode Chab may need:
| Operation | Direct fetch | Browser rendering | Notes |
|---|---|---|---|
scrape.markdown |
2 | 10 | Extract page content as markdown and metadata. |
scrape.dom |
2 | 10 | Extract requested CSS selector fields. |
Starter requests reserve 2 credits for direct and auto rendering, and
10 credits for explicit browser rendering. Pro and Scale requests reserve 10 credits
when browser rendering is requested or when auto rendering is eligible to
fall back to browser rendering. If a Pro or Scale auto request succeeds with
direct fetch, Chab settles the actual 2-credit direct cost and releases the
unused 8 credits.
Target URL validation failures are not charged. A timeout after target fetch or rendering work starts can be charged. Extraction failures after Chab has retrieved page content are charged at the rendering mode that incurred the work.
Screenshot Pricing
Screenshot operation pricing depends on capture mode:
| Operation | Viewport or element | Full page | Notes |
|---|---|---|---|
screenshots.url |
10 | 15 | Capture one URL as a PNG or JPEG artifact. |
Viewport and element captures reserve 10 credits. Full-page captures reserve 15
credits. Successful captures settle the reserved amount. URL-safety failures
before browser work are not charged. selector_not_found, capture_timeout,
and capture_failed are charged because browser capture work started.
artifact_creation_failed releases the hold because Chab could not make the
captured image available as an artifact.
File Conversion Pricing
File conversion pricing depends on Chab's trusted source category:
| Operation | Text, Markdown, HTML, CSV or TSV | Word, Excel, PowerPoint, OpenDocument, RTF or EPUB | PDF with extractable text | Notes |
|---|---|---|---|---|
convert.file |
5 | 15 | 20 | Convert one reusable artifact source into Markdown, text, or safe HTML. |
Unsupported file types, unsupported conversion pairs, validation failures, and
unreadable or expired sources are not charged because conversion work does not
start. A PDF that has no extractable text fails with
unsupported_file_content and releases the hold. Converter timeouts or
failures can be charged only after conversion work starts, capped at the
reserved estimate.
Translation Pricing
Translation uses dynamic token pricing under the public pricing class
translation-standard:
max(5, ceil(input_tokens * 2 / 1000 + output_tokens * 8 / 1000))
The reservation estimate is deterministic and bounds the whole operation:
source tokens, prompt and response overhead, glossary and placeholder
instructions, the selected style, both passes for idiomatic, and up to two
repair attempts. max_output_characters controls inline result placement only;
it is not a token cap.
Settlement uses actual input and output usage across translation, refinement, and repair attempts, capped at the reserved hold. Unsupported formats, oversized sources, artifact-source failures, scope or plan denials, budget denials, insufficient-credit denials, and provider-readiness denials before work starts are not charged. Structure, placeholder, or repair failures after translation work starts can charge the actual incurred usage, capped at the hold.
Research Pricing
Research uses explicit customer budgets. Every research.deep request must
include source_budget and max_credit_budget; Chab does not choose defaults.
The accepted operation reserves the full max_credit_budget, then final
settlement uses normalized actual usage and retained cited source count, capped
at that reservation.
For paid research, the accepted hold must also cover Chab's bounded provider
work. Initial two-search minimum holds are 210 credits for quick, 2,070 for
standard, and 4,130 for Scale-only comprehensive. A lower hold may qualify for
one-search execution; otherwise Chab returns research_budget_exhausted before
provider dispatch. These are reservation thresholds, not fixed charges. Free
and guest research instead runs on free credits within the daily free-use
limit.
source_budget is the number of unique cited source URLs Chab may retain,
show, count in sources_analyzed, and bill against. It is not a guarantee
about how many sources the backing research system may browse while working.
| Pricing class | Modes | Formula |
|---|---|---|
research-compact |
quick, standard |
ceil(input_tokens * 2 / 1000 + output_tokens * 8 / 1000 + sources_analyzed * 2) |
research-deep |
comprehensive |
ceil(input_tokens * 4 / 1000 + output_tokens * 16 / 1000 + sources_analyzed * 4) |
Minimum accepted max budgets are 25 credits for quick, 75 for standard, and
250 for comprehensive. Quick accepts source_budget 1-10, standard accepts
1-25, and comprehensive accepts 1-100. Comprehensive mode is available only on
Scale.
If work completes below the accepted max budget, Chab releases the unused
reserved credits. If the accepted budget is exhausted and a usable cited report
exists, the operation can succeed with partial_results and
budget.exhausted=true. If no usable cited report can be produced, the
operation fails with research_budget_exhausted, which is chargeable up to the
accepted budget. Cancellation after research work starts may charge recorded
actual work up to the active hold.
Keyword Research Pricing
Keyword research operation prices are fixed for the documented request caps:
| Operation | Credits | Notes |
|---|---|---|
seo.keywords.ideas |
10 | Up to 5 seed phrases and up to 50 returned ideas. |
seo.keywords.metrics |
8 | Up to 50 requested keywords. |
Pricing is flat per accepted operation regardless of batch size or requested metric family count within the documented caps. SEO keyword operations are available on Pro and Scale plans.
Domain Data Pricing
Domain data operation prices follow the documented request caps:
| Operation | Credits | Notes |
|---|---|---|
seo.domains.overview |
35 | Bounded inline domain overview with authority, summaries, organic traffic, and capped hints. |
seo.domains.backlinks |
40 | Up to 1,000 backlink rows; large backlink and referring-domain sets are exported as artifacts. |
seo.domains.backlinks with group: "referring_domains" |
40 | Up to 1,000 referring-domain rows inline, each with the linking site's own authority. |
seo.domains.keywords |
8 to 44 | 4 per request plus 4 per started 100 keywords: 100 keywords = 8, 1,000 = 44. |
seo.domains.traffic |
55 | Current traffic estimate plus 1 to 24 months of history. |
Each accepted operation has one price, set by its request. Chab-streamed artifact downloads may create a separate bandwidth egress charge; see Bandwidth and Egress.
Business Data Pricing
Business data operation prices are fixed for the documented request caps:
| Operation | Credits | Notes |
|---|---|---|
business.search |
8 | Local business search, up to 20 returned listings. |
business.details |
4 | Single business profile lookup. |
Pricing is flat per accepted operation. Business data operations are available on Pro and Scale plans.
Contact Pricing
Contact operation prices are fixed for the documented request caps, and email verification is priced per address:
| Operation | Credits | Notes |
|---|---|---|
contacts.domain_search |
80 | Public contact discovery for one company domain, up to 25 returned contacts. |
contacts.email_finder |
8 | One person-to-company email lookup. |
contacts.email_verify |
2 per address | One address, or up to 100 in one request (200 credits). Addresses that could not be checked are not charged. |
Domain search and email finder are flat per accepted operation. Contact operations are available on Pro and Scale plans. Validation failures, missing scope, plan denials, insufficient-credit denials, and readiness failures before work starts are not charged. A provider failure releases the full contact-operation hold only when Chab can verify that no billable provider work occurred or waives a Chab-caused failure. An ambiguous started request remains held for cost review; a verifier request confirmed counted can incur its fixed price without a usable result. Once provider work returns a successful result, a no-result domain search or email finder still settles at the fixed price.
LLM Pricing
LLM generation uses dynamic token pricing. Chab estimates the initial hold from
estimated input tokens, requested maximum output tokens, and any requested
reasoning token cap. Settlement uses reported model usage when available;
otherwise Chab uses the deterministic estimate. Generation pricing is computed
as one summed decimal token-rate expression, then one final ceil() is applied
to the total instead of rounding each token bucket separately.
Embedding pricing uses the reservation-time estimated input-token count and settles from the same deterministic estimate because embedding provider usage is not reported:
max(1, ceil(input_tokens * 0.2 / 1000))
llm.generate, llm.embeddings, and translate.text_or_document support
max_credit_budget. If the estimated cost is higher than the supplied budget,
Chab returns max_budget_exceeded before creating operation rows or credit
holds. research.deep requires max_credit_budget and reserves it up front;
runtime budget exhaustion maps to partial_results or
research_budget_exhausted, not max_budget_exceeded.
Max Credit Budgets
Some dynamic operation families let the request include max_credit_budget.
This is a per-request ceiling, separate from team spend thresholds and API-key
budgets. A request denied by max_budget_exceeded is not charged and does not
create an operation.
Reservations and Releases
When a billable operation is accepted, Chab reserves credits for the estimated cost. Reserved credits are held for that operation; they are not charged yet and the team's stored credit balance is not reduced until final settlement.
Idempotent retries with the same Idempotency-Key and byte-identical request
body return the original operation and do not create a second hold. If a request
is denied for insufficient credits, top up or reduce the operation size and use
a new idempotency key.
If work never starts, fails before chargeable work happens, or is cancelled with no chargeable work, Chab releases the hold. Released credits become available for new operations again.
If Chab has already sent a billable start to a provider, cancellation, token or
connection revocation, a worker timeout, and stale-hold cleanup do not prove
that the provider charged nothing. Chab keeps the reserved credits unavailable
until the actual provider cost is verified. The hold is not itself a charge.
For a started search task, Chab can continue reading that exact provider task
for cost reconciliation even after access is revoked; it never starts a new
task. Automatic checks stop after 24 hours or 120 polls, whichever comes first,
and the case moves to operator review. Other unknown outcomes can require
manual review immediately. There is no promised automatic resolution time.
Support can review the provider's records and explain or correct a long-lived hold;
Chab will not guess a charge or release it as zero solely because a worker
stopped or a customer cancelled.
For search.web in provider task mode, the provider charges when it accepts
the task; cancelling or revoking access after that point may settle the fixed
reserved price even when no result is delivered. contacts.email_verify
also has a fixed price when its request is confirmed counted. Chab waives its
own verified failures rather than passing their cost to the customer. If an
email-verification request remains genuinely unprovable, an operator can
release its hold as an audited write-off only after the 24-hour review window;
that does not claim the provider charged nothing.
For free promotional holds, release restores unused value only when the pinned lot has not expired. Released value from an expired free-credit lot is not made available again.
Settlement
Final credit usage is recorded when an operation reaches a terminal state. Successful operations charge the final amount from the reserved credits. By default, the final charge is capped at the reserved amount unless the operation family has already increased the estimate and reserved the additional credits.
Cancelled, timed-out, or partially successful operations follow the documented policy for that operation family. A cancellation or timeout after chargeable work may settle a partial amount up to the active hold, then release the unused remainder. A failed or cancelled operation with provider-confirmed no chargeable work releases the hold with no charge. If provider cost is still unknown, the operation remains non-terminal with its reservation held pending review.
Provider retries, provider terminal failures, timeouts, and cancellations still produce exactly one settlement for the operation. One-off operation callbacks include the operation settlement summary when a settlement exists, but callback delivery success or failure never changes billing.
Token Budgets
API keys can have their own capped budget. For capped keys, Chab checks both the token budget and team credits before work starts.
Credit Packages
Credit packages are one-time purchases for $39, $179 and $329. On a plan they give 1,000, 5,000 and 10,000 credits. Without a plan you can still buy them (free / pay as you go) and get half: 500, 2,500 and 5,000 credits. The size is fixed when the checkout starts and appears on the Paddle receipt. Purchased credits stack with subscription credits and expire after 12 months.
While a team without a plan has bought credits left, it counts as pay as you go: it spends those credits, has Starter's tools and limits, and can use the tools that free credits don't cover, such as research. Its existing API keys are allowed to spend after the first pack. Keys that lack a tool's permission need a new sign-in. When the bought credits run out or expire, the team is free again and its remaining free credits work as before. If the team has debt, new purchased credits reduce that debt first; any remainder becomes spendable balance. Completed package fulfillments appear as explicit credit ledger entries. Payment confirmation adds credits once, including when the same confirmation arrives more than once. A purchase can briefly remain pending after credits appear while its payment reference is linked. Retry status checks with the original purchase identity; do not start another purchase to resolve a pending one.
Auto-Recharge
Auto-recharge buys credit packs. Teams may configure auto-recharge where supported. Auto-recharge is opt-in: the team selects a package, a low-balance threshold, and a maximum recharge count per billing period. The period cap is the hard stop for automatic spending, and the dashboard shows the derived maximum period spend for the selected package.
Teams may also set an optional daily burst cap. Auto-recharge requires an active subscription and a usable payment method. If a charge fails, auto-recharge is paused until the failure is cleared. API-key budgets cannot bypass the team auto-recharge cap; any number of token-driven operations still share the same team billing-period counter.
If Chab reserves an auto-recharge attempt but cannot confirm its final outcome, the reservation fails closed and may continue to count against the team's billing-period cap until support resolves it or the billing period changes.
Recharge charge acceptance, fulfillment, cap-reached, and failure events appear in the credit ledger.
Bandwidth and Egress
When Chab serves bytes for downloads, exports, connected-drive operations, or operation artifacts, it may charge credits for transferred bytes. Usage logs show the transferred byte count, pricing version, related operation or artifact reference when available, and a short explanation. Safe provider-hosted artifact redirects do not pass bytes through Chab and do not create an egress charge.
Hosted MCP artifact delivery currently includes a free transfer allowance at zero credits for guest and account connections. Account bytes remain metered with the zero-credit waiver recorded; guest deliveries are recorded on the operation. Hourly transfer and daily byte limits still apply. See Hosted MCP for current limits and download-link lifetime.
Corrections and Refunds
Support-applied credit corrections are append-only ledger entries. Each correction includes a signed credit amount, a customer-safe reason, and a reference. Positive corrections reduce outstanding debt first; any remainder becomes spendable balance. Negative corrections can decrease the team balance and may create debt. Corrections do this without editing or deleting past ledger entries.
Money refunds are tracked separately and are shown as returned only after the payment processor confirms them. Chab permits only one unresolved refund for a transaction and never resends an attempt whose provider outcome is unknown. Partial refunds allocate exact transaction line-item amounts and cannot exceed the original transaction total across confirmed and pending attempts.
For a one-time credit-package refund, fulfilled credits are revoked in the same proportion as the aggregate confirmed refund; a full refund revokes the exact fulfilled package amount. If those credits were already spent, the correction can create debt. If the payment processor later reverses a confirmed refund, Chab restores the corresponding credits with a new append-only ledger entry and updates the confirmed aggregate without rewriting history.
Usage Visibility
Usage views show operation credit activity alongside other credit ledger rows. For operation rows, Chab shows the operation reference, family and key, API key identifier, reservation or settlement state, reason, credit amount, timestamps where available, and a short explanation. Reservation and release rows are informational zero-credit rows; settlement rows show the actual debit.
Free promotional value is exposed only through explicit free-credit fields.
GET /v1/credits includes a free_credits object with available, held,
issued, remaining, and next-expiry facts. The sibling free_credit_policy
field states that free promotional credits do not refresh monthly. available
is usable for new free-funded work, held is already reserved for accepted
operations, and remaining is their sum. Operation usage rows can include
funding_mode, credit_source, free_credits_reserved, free_credits_used, and
free_credits_released; GET /v1/credits/transactions exposes the same
free-credit usage fields for matching transaction rows. Raw free-credit lot
identifiers are not part of customer-facing metadata.
The same ledger also shows package fulfillments, auto-recharge charge acceptance and fulfillment, auto-recharge cap and failure events, egress charges, and credit corrections.
The same page also shows usage limits for included operation families: current rate profile, daily or monthly quota usage, concurrency limit, option caps, and the effective operation spend threshold.