ArchitectureLive V1

Payments & settlement

x402 payments, a five-operation chain adapter, HyperEVM as the live rail, and hourly netted payouts.

Payment in Omnious is not a billing system bolted onto an API. It is the x402 protocol: a request that arrives unpaid gets 402 Payment Required with machine-readable payment requirements, and the retry carries a signed USDC authorization in a header. The request pays for itself, in-band, with no account and no API key. See the request path for the flow beat by beat; this page covers where the money actually moves.

The five-operation chain boundary

The router never talks to a chain directly. All chain work flows through a SettlementAdapter with exactly five operations:

  • quote(amount): build the x402 payment requirements for this chain
  • verify(payment): pre-flight the signature, balance, and replay protection
  • settle(payment): execute the transfer, return a transaction reference
  • payout(to, amount): USDC transfers for provider payouts and refunds
  • anchor(hash): publish an epoch hash for receipt transparency

The auction, metering, and reconciliation code never import a chain SDK; the adapter is the whole boundary. This works because x402 is itself chain-agnostic (a 402 carries a CAIP-2 network identifier and can offer multiple options), so adding a chain is one adapter file plus a config entry, with zero changes to the core. A mock adapter settles instantly for local development and CI.

HyperEVM, the live rail

Production traffic settles in USDC on HyperEVM: eip155:999 on mainnet, eip155:998on testnet. Two schemes are live, and both are gas-sponsored: the customer only ever signs typed data, and the router's treasury submits the transaction and pays the gas.

  • EIP-3009 exact. One signed transfer authorization per request for the quoted maximum; settlement runs concurrently with inference, and any overage refunds automatically.
  • Permit2 upto. Pay-for-use: sign the maximum once, get charged metered actuals at stream end. No overage, no refunds, no dust.
where a cleared dollar goes

Hourly epochs, netted payouts

Providers are not paid per request. Every hour the epoch closes and each provider receives one netted USDC transfer covering all its awarded requests, minus the router's 7% fee on cleared volume. Refunds above the $0.01 dust floor go out in the same cron, payouts and refunds ride a durable outbox so a failed transfer is retried rather than lost, and the epoch's records are hashed and anchored on-chain (see tamper evidence).

Money is integers

Every amount in the system is integer USDC base units (6 decimals); prices are base units per million tokens. Floats never touch a balance. That single rule is what makes the reconciliation invariant checkable: per epoch, charges minus refunds minus payouts minus fees minus bad debt must equal exactly zero, and with integers "exactly" means exactly.

second railA Solana adapter is documented and enabled on demand (designs/solana-adapter.md): SPL USDC via @x402/svm, with the facilitator sponsoring fees so customers never need SOL. It becomes worth switching on when demand arrives from agent traffic holding USDC in plain Solana wallets, and it costs the core nothing: one adapter file, one config entry.