OXYGENOxygen/ Docs
Safety & cost

Pricing reference

Every billable unit in OXYGEN, generated from the constants that charge for it.

A source-generated pricing reference, not an observation of the running deployment. Code-default billing rails distinguish default-off gates from live activation. Repricing follows the deployment's effective instant; native quotes may also resolve pricing-book overrides. Inspect a provider tool's estimate and basis with oxygen tools get <tool-id> --view pricing --json, or preview the exact request before spending.

What a credit is worth

UnitValue
1 credit$0.01
$1.00100 credits
Plan credits$1.00 per 100 at face value, down to $0.87 per 100 with the volume bonus
Top-up credits$1.25 per 100; $1.30 from the 2026-09 repricing's effective date

Plans

PlanMonthly priceYearly monthly paymentYearly term total (12 payments)Included creditsVolume bonusRollover capBYOK
Oxygen $49 (oxygen_49)$49.00$40.83$489.964,900—4,900Yes before repricing; existing keys only afterward
Oxygen $99 (oxygen_99)$99.00$82.50$990.009,900—9,900Yes
Oxygen $199 (oxygen_199)$199.00$165.83$1,989.9619,900—19,900Yes
Oxygen $499 (oxygen_499)$499.00$415.83$4,989.9652,395+5% (2,495)52,395Yes
Oxygen $999 (oxygen_999)$999.00$832.50$9,990.00109,890+10% (9,990)109,890Yes
Oxygen $1,999 (oxygen_1999)$1,999.00$1,665.83$19,989.96229,885+15% (29,985)229,885Yes
Scale (scale)Contact sales——1,000,000—1,000,000Yes
Enterprise (enterprise)Contact sales——Custom——Yes

Included credits are face value ($1 = 100 credits) plus the plan's volume bonus, which is already counted in the column. An existing subscriber to a plan with a volume bonus receives that volume bonus from their next renewal. For the separate agency partner bonus and its first-grant timing, see Billing. Plan prices are before tax. New yearly plans commit for twelve months and pay the discounted monthly amount, never the year upfront. The term total is twelve actual rounded monthly payments; credits arrive after each paid monthly invoice. Yearly commitments renew annually unless renewal is turned off; monthly payments continue until the term ends. They are offered when annual_monthly_billing_available is true; existing prepaid yearly subscriptions keep their paid periods and monthly credit slices (yearly billing).

Trial, grants, and grace

ItemValue
Free signup grant1,000 credits once per eligible billing owner when signup grants are enabled; no monthly refill
Legacy trial length7 days for legacy trial contracts
Legacy trial credit grant2,000 credits for trialing subscriptions; separate from the Free signup grant
Past-due grace before entitlement stops7 days

Credit top-ups

These are source comparisons, not current production quotes. With the repricing epoch unset, the source-default packs are:

PackPriceCredits
10$10.00800
25$25.002,000
100$100.008,000
250$250.0020,000

A custom top-up runs from 800 credits to 100,000 credits in steps of 100. Purchased credits stack like plan grants and do not expire. Without an amount, oxygen billing topup only reads a quote. Selecting credits or a pack creates Stripe Checkout; payment is separate. Top-up tax treatment is not established by this reference or the quote: review the tax and final total in Checkout.

From the 2026-09 repricing's effective date a top-up costs $1.30 per 100 credits and these packs are sold instead; oxygen billing topup --json reports the rate and packs in force, and the ones scheduled once the date is set.

PackPriceCredits
1000$13.001,000
2000$26.002,000
8000$104.008,000
20000$260.0020,000

AI columns, Copilot, and Agents

UnitCreditsUSDNotes
AI column, low reasoning effort1.5$0.015per cell
AI column, medium reasoning effort4$0.04per cell
AI column, high reasoning effort25$0.25per cell
AI column with web search0.6$0.006typical; 4.6 reserved per cell

Copilot and Agent turns bill managed inference against the same credit balance. A Copilot session has no budget to set: a person is watching it and can stop any turn, and the platform backstop bounds each attended turn. An Agent run spends within the max_credits approved when it starts. On your own AI model credential the model provider bills inference directly and OXYGEN charges no inference credits or platform fee. Managed web-grounding calls and workflow steps retain their separate charges. Native data-provider calls on your own key instead pay the applicable 0.05-credit OXYGEN platform fee per successful call, including successful misses, separately from vendor charges. See billing and own-key fees and retries.

Enrichment and research

UnitCreditsUSDNotes
company_enrich_typical9.9$0.099per call, typical
email_find_typical8.5$0.085per call, typical
email_verify0.225$0.00225per call, typical
linkedin_profile_scrape1$0.01per call, typical
page_scrape1.6$0.016per call, typical
phone_find_typical99$0.99per call, typical
web_search0.5$0.005per call, typical
Enriched row, all columns10$0.10typical blended cost
LinkedIn URL found5$0.05per URL found that matches the person, 0 when none is found, from the 2026-09 repricing's effective date; until then each provider the lookup tries bills its own per-call price, found or not

These are the sheet's typical values. The price that actually bills is the one on the operation descriptor, which varies by provider and request shape — read it with oxygen tools get <tool-id> --json, or preview the exact request with a dry run before spending.

Email infrastructure

UnitCreditsUSDNotes
OXYGEN-sold managed inbox (Google Workspace or Microsoft 365), all-in400$4.00per inbox per month: a flat 300-credit mailbox plus the 100-credit sending connection, warm-up included. Inbox placement is an optional add-on
OXYGEN-sold Azure tenant4,000$40.00per tenant per month: one dedicated Microsoft tenant for one domain, up to 100 inboxes; each inbox on it also holds the 100-credit connection
OXYGEN-registered domain1,250$12.50per domain per year at the registrar's cost, e.g. a .com; renewed yearly, charged 30 days before expiry
Inbox-placement monitoring100$1.00per mailbox per month; includes 2 placement tests
Additional placement test16.6$0.166per test beyond the included allowance; 66 from the 2026-09 repricing's effective date; own-key tests pay the separate OXYGEN platform fee plus provider-account charges
Mailbox warmup100$1.00per mailbox per month; 0 on your own mailbox from the 2026-09 repricing, included in its 100-credit monthly connection once that connection is billed
Dedicated egress IP2,500$25.00per IP per 30-day period
Email send0$0.00per message

A Google Workspace and a Microsoft 365 inbox share one price, and an Azure tenant is one flat monthly charge for its domain whatever it carries; from the 2026-09 repricing's effective date every inbox on it also holds the 100-credit ($1.00) monthly connection. Staff can re-price these rows in the pricing book, so the pricing page and oxygen managed-inboxes list --json (under prices) show the price in force, and every order preview quotes the exact order before anything is bought. A domain holds at most 5 Google Workspace or Microsoft 365 inboxes, or 100 on an Azure tenant.

Sending seats

These dollar seats apply to the legacy sending_seats model. Read oxygen billing estimate --json for sender_billing: credit_reservations uses connected-account credits instead, though every sending account connects only on a paid plan, and oxygen billing seats --json reports status: seats_retired. The legacy gate (OXYGEN_SENDING_SEAT_GATE_ENABLED) enforces purchased or grandfathered seats while that model applies. oxygen billing seats --json reports the price, what is purchased, what is grandfathered, what is connected, and what is left. This reference does not observe production flag state. Before authorization, oxygen billing commitments --view connection-prices --json reports current deployment credit prices and billing timing for LinkedIn, WhatsApp, X and sending-mailbox connections, separate from this dollar-seat table.

SeatUSDNotes
LinkedIn seat$30.00 per monthentitles one connected LinkedIn account
WhatsApp seat$30.00 per monthentitles one connected WhatsApp number
Phone number$10.00 per monthentitles one rented phone number; the number carries no separate credit charge while this seat pays for it
Email sender$1.00 per monthentitles one connected sending mailbox, warm-up included

Seats belong to the billing owner. A workspace linked to another organization's plan with oxygen orgs billing-link connects senders against that organization's seats and buys them there — oxygen billing seats set inside a linked workspace is refused with shared_billing. An OXYGEN-sold managed mailbox already includes its seat; the email seat above is for a mailbox you bring yourself.

LinkedIn and WhatsApp

UnitCreditsUSDNotes
LinkedIn comment_post0$0.00per action
LinkedIn follow0$0.00per action
LinkedIn inmail0$0.00per action
LinkedIn invite0$0.00per action
LinkedIn like_post0$0.00per action
LinkedIn message0$0.00per action
LinkedIn visit_profile0$0.00per action
WhatsApp message send0$0.00per message

Individual LinkedIn actions and WhatsApp message sends are 0 credits. Monthly connected-account prices are separate: inspect oxygen billing commitments --view connection-prices --json before authorizing an account; use oxygen billing commitments --json and oxygen billing seats --json for workspace commitments and coverage. Workflow step charges follow the workflow section below.

Voice

UnitCreditsUSDNotes
Talk time5$0.05per connected minute, both call legs and answering-machine detection included

Voice settles on the telephony provider's status webhook after the call ends. A connected call bills its talk time, with a started minute counted as a whole one; a call nobody answered costs nothing. There is no separate per-call charge. A rented phone number is priced under connected-account reservations.

Connected-account reservations

When sender_billing is credit_reservations, connected accounts reserve monthly credits on their own monthly anchors instead of occupying dollar sending seats. The reservation model has its own switch and takes effect only after its required repricing epoch is effective. oxygen billing estimate --json reports the workspace's model and current prices; oxygen billing commitments --json lists its commitments. The table shows the code's before/after repricing schedule. The deployment's effective instant, enabled billing path, workspace coverage and any pricing-book override determine the applicable quote. Before authorization, inspect oxygen billing commitments --view connection-prices --json for deployment unit prices and disclosed billing timing for LinkedIn, WhatsApp, X and sending mailboxes. It does not determine workspace coverage or affordability. For a phone number, oxygen voice numbers buy previews the selected number purchase by default. oxygen billing commitments --json lists recorded forward commitments; it is not this cycle's settled debit total.

AccountUntil the repricingFrom the repricing
LinkedIn account (outreach, publishing or both)1,000 credits ($10.00) / month3,400 credits ($34.00) / month
WhatsApp number1,000 credits ($10.00) / month3,400 credits ($34.00) / month
X accountNo credit reservation1,000 credits ($10.00) / month
Phone numberNo credit reservation1,000 credits ($10.00) / month

Workflow automation

UnitCreditsUSDNotes
Workflow step that calls a tool0.05$0.0005per tool step a live run executes, settled in aggregate; the tool's own price is added
Control step0$0.00trigger, filter, switch, loop, merge, set, wait, code and approval steps are free
Rows written inside a run0$0.00free, however many rows a step writes
Provider call on your own API key (BYOK)0.05$0.0005applicable platform fee per successful call; vendor charges follow your provider's terms

The workflow and BYOK rates above are the repriced schedule values, applicable from the deployment's effective instant: 1,000 tool steps cost 50 credits ($0.50). A loop bills its tool steps on every pass and a retried step bills again; previews and dry runs cost nothing. Two older shapes bill differently: an older revision whose code step embeds a durable recipe bills that step like a tool step, and a legacy step-list workflow bills each of its steps. When charged, workflow steps and BYOK platform fees settle in aggregate and count toward the run's max_credits and a trigger's per-delivery ceiling. AI calls on your own model key are not charged the BYOK platform fee.

Read Workflow prices and budget state

Before creating a Workflow, oxygen billing balance --json reports the current step price at automation_actions.credits_per_step (MCP: oxygen_billing_balance). If automation_actions is null, that read did not establish the price. HubSpot sequencer setup previews also return current unit prices under template_preflight.credits.quote; their usage examples are hypothetical, and an unknown total stays unknown.

Legacy included_actions and remaining_actions fields describe an action quota when numeric. Null does not mean unlimited credits or free automation. Current plans bill from workspace credits; available balance, unsettled usage, the run ceiling and any applicable budget policy still constrain admission. overage_enabled: false with null action fields does not create a monthly action allowance. A missing allowance object means its lookup is unavailable.

For an already armed cron, a hard budget refusal skips due slots before creating a run and leaves the trigger armed. Its metadata records scheduler_budget_block_reason and scheduler_budget_blocked_at, and the next scheduled time advances past those slots. A warning policy allows admission. When the applicable window resets or the cap is raised, a later slot can run; skipped slots are not replayed. Automation quota or credit refusals appear as trigger.automationPaused in oxygen workflows get; monthly quota pauses carry a reset time, while credit or unknown refusals carry no promised resume date. Adding credits permits the scheduler to retry a future slot. Manually disabled Workflows remain disabled until explicitly enabled.

Code-default billing rails

These rails default to off in code. Boolean enable switches require exactly true; CREDIT_COMMITMENT_BILLING_KINDS is a comma-separated valid-kind allowlist. An unset or malformed enable switch does not enable the rail. This table does not observe deployed flags, pricing-book overrides or workspace eligibility, and does not claim that these resources are free. A dash means no numeric price is mapped in this table, not a zero quote.

RailBefore-repricing code priceGateEnabled by code default
Deliverability analytics (deliverability_unit)100 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Connected LinkedIn accounts (linkedin_account)1,000 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Warmup (mailbox_warmup)100 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
OXYGEN-sold mailboxes (managed_mailbox)300 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Phone numbers (phone_number)—CREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Connected sending mailboxes (sending_mailbox)100 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Connected WhatsApp numbers (whatsapp_account)1,000 credits / monthCREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Connected X accounts (x_account)—CREDIT_COMMITMENTS_ENABLED + CREDIT_COMMITMENT_BILLING_KINDSNo
Legacy credit-denominated LinkedIn account seat1,000 credits / monthLINKEDIN_SEAT_BILLING_ENABLEDNo
Legacy credit-denominated WhatsApp number seat1,000 credits / monthWHATSAPP_SEAT_BILLING_ENABLEDNo

A gate or tracked commitment alone does not prove a payable debit. Inspect oxygen billing commitments --view connection-prices --json for current deployment unit prices and disclosed billing timing for LinkedIn, WhatsApp, X and sending mailboxes; use oxygen billing seats --json for workspace seat coverage, oxygen billing commitments --json for its forward commitments; and oxygen billing allowance --json for settled current-cycle charges. These native reads distinguish the deployed billing path from this source reference.

Default spend ceilings

These are source comparisons with the repricing epoch unset and synthetically in force; they do not observe deployed limits. Spend defaults scale with plan size. An autonomous trigger or table auto-run armed without an explicit cap is backstopped by its plan's default, resolved when it fires; an explicit cap always wins.

Guard (credits)FreeOxygen $49Oxygen $99Oxygen $199Oxygen $499Oxygen $999Oxygen $1,999
Trigger delivery or table auto-run default with repricing epoch unset505009901,9905,24010,98925,000
Trigger delivery or table auto-run default after repricing effective date504909901,9905,24010,98922,989
Agent run default with repricing epoch unset, total / model calls250 / 1501,000 / 5001,000 / 5002,500 / 1,2502,500 / 1,2505,000 / 2,50010,000 / 5,000
Agent run default after repricing effective date, total / model calls250 / 1501,000 / 5001,000 / 5002,500 / 1,2502,500 / 1,2502,500 / 1,2502,500 / 1,250
Copilot without an approval card, per call / per session50 / 300100 / 500100 / 500200 / 1,000200 / 1,000300 / 1,500500 / 2,500
Daily spend guard with repricing epoch unset, warn / block—24,500 / 98,00049,500 / 198,00099,500 / 398,000261,975 / 1,047,900549,450 / 2,197,8001,149,425 / 4,597,700
Daily spend guard after repricing effective date, warn / block1,000 / 5,00024,500 / 98,00049,500 / 198,00099,500 / 398,000261,975 / 1,047,900549,450 / 2,197,8001,149,425 / 4,597,700
BYOK column run max rows—25,00025,00050,00050,000100,000250,000
BYOK provider calls per day—10,00010,00025,00025,00050,000200,000

The source delivery default is 10% of the paid plan's monthly credits; Free is 50 credits in both comparisons. These source rows do not establish your deployment's limits. Grandfathered plans take 10% of their own monthly credits: Starter 990 (otherwise the Oxygen $99 column), Pro 2,490 (otherwise the Oxygen $199 column), Team 7,490 (otherwise the Oxygen $999 column). Legacy scale plans read the Oxygen $1,999 column, and Enterprise has no implicit trigger-delivery default. oxygen limits show names your plan size and returns every size's values under plan_bands; the web app shows the same values under Settings → Plan limits.

The paired trigger, Agent and daily-guard rows compare the source with the repricing epoch unset and synthetically in force. oxygen limits show reports which value is in force for your workspace. Enterprise uses the $1,999 Agent row: after the switch that is 2,500 credits total and 1,250 for model calls, with no separate contract default.

An Agent run may spend up to its approved max_credits. The plan ceiling above is its default: one run or trigger may carry a higher max_credits when you approve it explicitly (--approve-above-default, or the card in the web app), up to 25,000 credits, and Enterprise uses the $1,999 plan default. The Copilot allowance covers paid work up to its per-call and per-session amounts without an approval card; sends, launches and other external writes always ask, at any price, and one attended Copilot turn is bounded at 3,000 credits on every plan. A dash means no default. The daily spend guard is a runaway backstop, not a spend ceiling: Free has no guard with the epoch unset and a 1,000-credit warning / 5,000-credit block after its effective date; on paid plans it warns at 5x and hard-blocks at 20x the plan's monthly credits spent in one day, monthly reservations and managed mailbox subscriptions do not count toward it, and your own org daily budget replaces it. Run oxygen limits show or oxygen budget list to see the exact credit thresholds for your plan. BYOK daily call caps are monitoring thresholds and warn rather than stop a run unless OXYGEN_BYOK_DAILY_CAPS is set to enforce.

To inspect an Agent trigger's ceiling before creating it, run oxygen limits show --section spend --json (MCP: oxygen_limits_show with {"section":"spend"}). spend_safety_defaults.agent_run_max_total_credits is the current workspace default; agent_run_approved_max_credits is the global 25,000-credit approved maximum. A proposed cap above the default requires the separate approve_above_default approval; reading these fields grants none and creates no trigger. A missing default is unknown. Existing trigger reads report their explicit max_credits and above_default_ceiling_approved_at.

API rate limits

Request rates scale with plan size. Every /api/cli/* call counts against a per-key and a per-workspace total a minute; the operation limits below apply first to the calls a script makes most. Limits guard against runaway loops: they are never sold and never billed.

RequestsFreeOxygen $49Oxygen $99Oxygen $199Oxygen $499Oxygen $999Oxygen $1,999
All calls, per workspace, a minute1,2003,0003,0006,0006,00012,00030,000
All calls, per key, a minute1,2003,0003,0006,0006,00012,00030,000
Table reads, per key, a minute1206006001,2001,2002,4005,000
Table writes, per key, a minute606006001,2001,2002,4005,000
Live tool and AI calls, per key, a minute403003006006001,2003,000
Live tool and AI calls, per workspace, an hour20025,00025,00060,00060,000150,000500,000
Dry runs, per key, a minute120600600600600600600
Tables created by imports, per workspace, an hour2002,5002,5005,0005,00010,00025,000
Rows read, per workspace1,000,000 an hour125,000,000 a day125,000,000 a day250,000,000 a day250,000,000 a day500,000,000 a day2,500,000,000 a day
Rows written, per workspace200,000 an hour25,000,000 a day25,000,000 a day50,000,000 a day50,000,000 a day125,000,000 a day500,000,000 a day

Windows are fixed: a per-minute limit resets at the start of each minute, an hourly one at the start of each hour. A request over a limit is refused with HTTP 429 and rate_limit_exceeded; wait the seconds in the Retry-After header (also error.details.retry_after_seconds) before retrying. error.details.bucket names the limit that was hit, error.details.limits_url opens the web app's Plan limits page with every plan size's rates, and the CLI exits with code 6. Live AI calls and live tool calls are separate buckets with the same limits. A row budget counts one unit per row a request reads or writes, shared by every key in the workspace; a single-row request still counts toward it but is never refused by it, only by the per-minute rates. Bulk work belongs in a durable table run, which these per-request limits do not pace. oxygen limits show --json returns your plan's rates under api_rate_limits and every plan size's under plan_bands.

Webhook ingress

Inbound webhooks accept more deliveries a minute on bigger plans. The limit applies to each target on its own: a Table webhook endpoint, a workflow or Agent webhook trigger, and the workspace's RB2B receiver. The target and the sender IP are counted separately, and one sender IP may use the whole per-target rate, so a form tool or CRM posting from one address is not held to less. A second endpoint has its own allowance. A delivery counts once however many rows it carries.

Deliveries a minuteFreeOxygen $49Oxygen $99Oxygen $199Oxygen $499Oxygen $999Oxygen $1,999
Per target6001,5001,5003,0003,0006,00012,000
Per sender IP, per target6001,5001,5003,0003,0006,00012,000

Windows are fixed and reset at the start of each minute. A delivery over the limit gets HTTP 429 with a Retry-After header; redeliver after that many seconds. Nothing is written for a refused delivery, so a sender that retries loses nothing. For a steady flow above your plan's rate, batch several rows into one delivery with --items-path on oxygen tables webhook create; a delivery may be up to 1 MB of JSON. A refused delivery is not recorded in oxygen tables webhook deliveries. oxygen limits show --json returns your plan's rate under webhook_ingress, the tables webhook commands report the endpoint's under rate_limit, and a workflow or Agent webhook trigger reports its own under rate_limit in oxygen workflows get, oxygen workflows apply, oxygen agent trigger-create and oxygen agent triggers.

Table and signal limits

Storage, import size, columns per auto-run and the signals feed scale with plan size too. Like the rates above they are guards, never sold and never billed. This table compares source limits with the repricing epoch unset and synthetically in force, not current production limits. A slash shows epoch-unset / post-effective-date values; a pending rows-per-Table capacity test is separate and has no inferred date. Read oxygen limits show --json for deployed plan_bands, storage_capacity and pricing_schedule.

The table publishes source limits before and after the repricing epoch. Applying an epoch also requires each workspace’s persisted tenant guard to be synchronized; a tenant still using its legacy guard has not acquired the new limits. Read oxygen limits show --json for the workspace’s effective guard and usage. The 5-million and 10-million rows-per-Table targets remain held for the capacity test.

LimitFreeOxygen $49Oxygen $99Oxygen $199Oxygen $499Oxygen $999Oxygen $1,999
Rows per Table3,000,000 / 100,0003,000,000 / 1,000,0003,000,000 / 2,000,0003,000,0003,000,0003,000,000 (5,000,000 after a passing capacity test)3,000,000 (10,000,000 after a passing capacity test)
Table rows per workspace25,000,000 / 1,000,00025,000,000 / 5,000,00025,000,000 / 10,000,00025,000,00025,000,00050,000,000100,000,000
Workspace Table database30 GiB / 2 GiB30 GiB / 10 GiB30 GiB / 20 GiB30 GiB30 GiB60 GiB120 GiB
Rows per write request5,00050,00050,00050,00050,00050,00050,000
Import file size500 MiB1 GiB1 GiB2 GiB2 GiB5 GiB5 GiB
Columns per action run or auto-run10252525255050
Signal events per read1002002005005001,0001,000
Signals look-back, days309090180180365365

CSV and JSONL files stream, so they import up to the file size above. JSON and XLSX files are read whole, so on every plan they stop at 100 MiB; save a larger file as CSV or JSONL. Rows per Table still cap how many rows one import can load.

A request over one of these is refused with an error that names the limit. oxygen limits show --json returns every plan size's values under plan_bands.

Ledger categories

Every credit ledger entry carries one of these 19 categories. oxygen billing usage --json returns them.

CategoryWhat it records
freeFree-tier allowance.
trialThe 7-day trial grant.
subscriptionThe monthly plan grant.
purchaseA one-time credit top-up.
managed_aiAI columns, Copilot, and Agent inference on OXYGEN's model credentials.
managed_enrichmentProvider enrichment and research calls on OXYGEN's credentials.
managed_domainOXYGEN-registered cold-email domains.
managed_mailboxConnected sending mailboxes.
managed_inboxOXYGEN-sold managed mailboxes.
managed_warmupPer-mailbox warmup cycles.
managed_deliverabilityPer-mailbox inbox-placement monitoring cycles.
managed_seatRecurring per-seat infrastructure (connected accounts, dedicated egress IPs).
linkedin_actionPer-action LinkedIn charges wired at sequence dispatch.
voice_callPer-call voice charges settled on the telephony status webhook.
automationAggregated workflow and automation action settlement.
byokUsage recorded against your own provider key; its OXYGEN platform fee settles from your credit balance.
adminStaff adjustment.
bonusProduct-earned one-off grant.
partner_bonusThe agency partner bonus granted beside each monthly plan grant.

Ledger transaction types

TypeWhat it records
grantCredits added by a plan, trial, purchase, or bonus.
reserveCredits held against an approved ceiling before a run executes.
captureThe reservation settled at actual cost.
releaseThe unused remainder of a reservation returned to the balance.
refundCredits returned after settlement.
adjustmentA manual correction.
byok_usageUsage metered on your own key, with the platform fee recorded for settlement.

What costs nothing

ActionWhy
Previews and dry runs--mode dry_run and preview-by-default commands make no provider call and reserve nothing.
Sourcing and search plansoxygen sourcing plan and oxygen search plan cost out the work without executing it.
Applying a blueprintCreates a disabled workflow and its tables; nothing runs.
Sequence enrollmentEnrolling leads sends nothing — dispatch begins at oxygen sequences start.
Email and WhatsApp sends0 credits per message; sending infrastructure is priced per mailbox, not per send. At the default of 25 emails a day, one mailbox sends 550 to 750 emails a month (22 to 30 sending days).
LinkedIn actionsEvery per-action LinkedIn charge is 0 credits; LinkedIn is priced per connected account.

On this page