Two flows, kept separate
Buyers pay you. Directly, to your wallet, over x402. Singularity never holds it and takes no percentage. You pay us for compute. Per run, from your credit balance. That is the whole of our revenue. Your price and your margin are yours. We do not scale with your sales.Refunds: there are none, and here is why
What a buyer does when a run does not deliver:- Retry with the same
X-Paymentheader. It returns the run that payment already bought — it does not charge again. That is the recovery path, and it works whether the failure was your code, our platform, or a lost response. - Read the failure rate before paying. Every catalogue entry publishes the processor’s 30-day failure rate, with platform faults excluded so you are judged on your own code. That is how a buyer decides whether to trust a processor, and it is why the number is public.
Which chains buyers can pay on
Three, and you choose which of them you accept:
Do nothing and you are paid in USDC on Solana at the wallet you deploy with, which is how every
processor worked before this existed. To accept more, add a
payout block:
price_usd is the price on every chain. All three assets are 6-decimal stablecoins, so $0.01 is
10000 micro-units of USDC on Solana, USDC on Base, or USDG on Robinhood — no conversion, no per-chain
price. A buyer’s 402 lists one accepts entry per chain you accept and they pay on whichever they hold.
Naming a chain in
payout is not the same as it being live. We keep an operator-side allowlist, so a
chain you declare that is not enabled simply never appears in a 402 — it settles nothing and costs you
nothing. A processor deployed before per-chain payouts existed is Solana-only regardless.Owner and CLI auth is still a Solana wallet signature, separately from how you get paid.Charging your buyers: flat, or by the input
The simple case is one number:measureislength(array length),bytes(UTF-8 byte length of a string), orvalue(a number your caller supplies).unit_sizecharges per N units.fieldis a top-level key ofinput. No nested paths.max_usdis required. It is how your buyer knows what they are agreeing to before they pay.base_usdmust equalprice_usd, andprice_usdthen means the minimum — the catalogue shows your processor as “from 0.01”.
This is a declarative formula, not your code. We do not run your processor to price a request:
that would be free compute for anyone sending a probe, and it would let a price depend on the clock or a
counter — so a buyer could be quoted one number and charged another. The formula reads your caller’s
input and nothing else.
How a buyer gets the exact price
They send the request they intend to send, with no payment. The402 response carries the amount for
that input, plus the formula so they can check it:
X-SGL-Quote: 25000 when paying — a mismatch is a 409
that charges nothing, rather than a silent overpayment.
What a run costs you
A typical fast processor finishes in well under a second, so it costs about $0.0003 per run.
These numbers come from measurement, not a guess: a trivial processor run repeatedly in production has a median wall time of ~193ms.
The hold, and the rebate
Before a run we hold the maximum it could cost. After it finishes we rebate whatever it did not use. The ceiling is computed from thetimeout_ms you declared:
Two consequences worth internalising:
- Tight limits are cheaper to run, because you reserve less per call and need a smaller balance to serve traffic.
- Your balance can never go negative. We reserve before executing, so a run either has funds behind it or does not happen.
What that means for your margin
There is no minimum price. Charge a tenth of a cent if the economics work for you — that is your call, not ours.
When you are and are not billed
The same rule applies to your buyers: a run that fails after starting is still charged to them, because the work happened. That is why your failure rate is published on your listing — it is the signal buyers use, so it has to be honest.
Paying us
Runtime draws from your Singularity credit balance, shared with Grid, Machines and Pods. Top it up like any other Singularity service; a plan allowance covers it too. If your balance runs out, your processor stops serving and callers get a clear error. Keep a buffer if people depend on you.Free while you build
Deploying costs nothing. So does editing, rotating tokens, reading logs, and every MCP discovery call (tools/list, server/discover).
Only actually running your code costs anything — and while you are building, that is your own testing, at ~$0.0003 a go.
