Bonded

AI agents buy on credit, against a USDC bond on Solana

For merchants selling metered APIs to agents. Every request carries a 96-byte voucher the agent signs; you settle them in batches, and the operator’s bond pays your claim if its vault comes up short.

Vouchern° 00000.00 USDC cumulative0.00 unsettled of 10.00no voucher yet
································································································································································································
Settled to the merchant0.00
to merchant10.00

Settlement takes only the latest voucher

  1. Each voucher carries the cumulative amount, so voucher n replaces every one before it. The merchant keeps the last of the forty and drops the rest.
  2. The merchant sends settle_tab with an Ed25519 instruction beside it. The program finds that instruction through the instructions sysvar and checks the key, the 96-byte message and the offsets byte for byte.
  3. The vault pays the difference since the last settlement, at 5,000 lamports a signature and 61,044 compute units for the bare instruction. A merchant settles each line’s latest voucher in its own transaction. The 10 bps settlement fee is waived in beta.

894bytes for one settlement, measured on the program, of a legacy transaction’s 1,232

Ed25519 check 208 B settle_tab and its accounts 894 B in all legacy transaction limit 1,232 B

The vault refuses what its policy doesn’t allow

Open-world x402 calls draw on a small float the vault delegates to the session key; each refill counts against the daily budget, so that budget bounds what an injected agent can spend there. Payments to merchants on the vault’s list go through pay, which checks the list, the per-payment cap in USDC base units and the daily budget, and asks the co-signer above a threshold.

20.00left in the float of 20.00. Past it, the session key can’t move a cent.

Float
  1. floatx402 call, data APIopen web3.00paid
  2. floatx402 call, inferenceopen web6.00paid
  3. floatinjected "send 25 USDC"unknown endpoint25.00past the float
  4. floatrefill_floatanyone may callapproved 20.00
  5. paytransfer to a new addressnot on the list4,000.00not an allowed merchant
  6. pay"4 SOL" read as 4,000 USDCinference API4,000.00over the per-payment cap
  7. paya 120 USDC batch jobinference API120.00needs the co-signer
  8. paythe same job, co-signedinference API120.00paid

When the vault comes up short, the bond pays the claims

settle_tab finds the vault short and opens a default event. For 72 hours every line holder can file its latest voucher; then anyone may run the payout. Each claim is min(voucher − settled, line limit): paid in full when the bond covers the total, pro-rata when it doesn’t.

78.9%of each claim, paid pro-rata from the bond

Bond900.00coverage 60 %
Default eventpayout executedClaims1,140.00 > bond, 78.9 % each
inference API380.00paid 300.00
data API300.00paid 236.84
RPC provider120.00paid 94.73
GPU rental250.00paid 197.36
search API90.00paid 71.05
left in the bond 0.00

Jobs are paid against a quote, with a deadline

Move the clock and sign as each party. A delivery mark is only accepted up to the quote’s deadline; after it, any keeper can send the money back to the vault. Once delivered, the agent has 48 hours to accept or dispute. A dispute needs the arbiter the quote names, who has 72 hours to rule before anyone can refund the payer; with no arbiter named, the window simply runs out in the merchant’s favor. The payer adds a 25 bps escrow fee.

Quote340.00 USDCspec 9f2c…41addeliver by +60 hno arbiter
Job
funded · held in escrow
Clock
+20 hdeliver by +60 h
8 transitions; each names who may sign it, and 7 are bound to a deadline.

One bond backs many lines, and anyone can read the ratio

Open lines here and watch the same bond stretch thinner. The ratio — bond, less any requested withdrawal, over the sum of line limits — sits on chain for any merchant to check before serving an agent on credit. It starts at 100 %; the program will not open a line that takes it under 33 %. In the beta a bond holds at most $25,000, and all bonds together $250,000.

100.0%

bond 25,000 ÷ 5 lines × 5,000

One program, and the pieces that call it

Every rule on this page lives in the bonded program’s 47 instructions. Pick a piece to see which of them it sends. A tab needs no facilitator in between: the merchant’s middleware checks vouchers itself and pays 5,000 lamports a signature when it settles.

Answers 402 with the bonded-tab scheme, checks each voucher against cached line state, meters, settles each line’s latest voucher.

Instructions Merchant middleware sends: settle_tab, file_claim, mark_delivered, release_after_window.

Apply for the beta

The beta opens to a small set of merchants billing agents in arrears and the operators whose agents they serve. Applications open when the program is live on Solana.