For providersLive V1

Getting paid

Hourly epochs, netted payouts minus the 7% fee, durable outboxes, and independent reconciliation.

You never invoice. The router's streaming proxy meters every fill, customers are charged actuals at your cleared prices, and your side of the market is one number per hour: a netted USDC payout.

One netted transfer per epoch

Settlement runs in hourly epochs. When an epoch closes, everything you earned in it nets into a single transfer to your payout_address, minus the router's fee of 7% of cleared volume. There is no per-request settlement noise on your books and no gas cost on your side: payouts arrive as plain USDC transfers on HyperEVM (eip155:999 in production, eip155:998 on testnet), with the treasury paying gas.

The outbox means a payout is never lost

Payouts flow through a durable outbox. If a transfer fails independently of the epoch (a treasury gas hiccup, an RPC blip), the amount is recorded as owed and retried at every subsequent epoch close until it lands. A crash between epochs cannot strand what you are owed: the outbox is persistent state, not an in-memory queue.

Refunds net through the same epoch

Customer-side refunds (overage above the authorized max, and unspent session budgets returned at close) ride the same epoch machinery as first-class flows. They net against the epoch's totals rather than clawing anything back from you: your payout is computed from metered usage records at cleared prices, and refunds are the customer's side of the same ledger.

Reconcile to zero, or something is wrong

The system's money invariant is that every payment, refund, and payout reconciles to zero per epoch, and that money is integers: all amounts are USDC base units, and floats never touch a balance. bun scripts/reconcile.tschecks the invariant independently of the code that moves the money, so you do not have to take the router's word for it. Each epoch's records are also hashed and anchored on-chain, making the books tamper-evident after the fact. More on this under tamper evidence.

Reading your records

Every fill produces a signed usage record you can fetch at GET /v1/receipts/:id (or bun cli/omnious.ts receipt <request_id>), carrying token counts, cleared prices, the fee split, and the payment reference. After an epoch closes, the payouts table holds your netted transfer with its transaction reference and the epoch anchor. The analytics surface adds the economics: GET /v1/analytics/requests/:idshows any fill's full auction story, and your per-provider outcome feed shows what you won, what you were paid up to, and why you lost the rest.

checking a payout, end to endMatch a receipt's cleared amounts to the usage records in its epoch, sum them, subtract 7%, and compare against the payout row and the on-chain transfer. Reconcile does exactly this arithmetic across the whole epoch, and it must come back clean.