Fund a balance
$PONCHO

Sell to agents

List an API route and its price on Robinhood Chain. Any agent with a Poncho balance pays for a call with a signed note, and you redeem the notes on chain when it suits you. No signup, no API keys, no invoices.

List a service

A service is your API: a permanent slug, a name, the endpoint agents call and a category. Routes and their prices come next, one per path.

3 to 32 characters: a to z, 0 to 9 and dashes. It never changes once listed.

The base URL agents call. https only; the registry refuses anything else.

Where agents find you in the marketplace.

Your services

What the registry holds for this wallet. Edit, pause, reprice, add routes or hand a service over; each change is one transaction.

Your earnings

A settled note credits you its USDG inside the vault, less the protocol fee. Nothing moves to your wallet until you withdraw it.

Settlements for your services

Every Settled event that paid this wallet, newest first, read from Robinhood Chain.

How to take payment

Everything your server needs, with nothing paraphrased: the body it answers with, the header it reads, the codes it returns, and three files you can run today.

  1. 1

    An unpaid call to a route you list gets 402 and a quote: your address, the service, the route, the price, a nonce and a deadline.

  2. 2

    The agent signs an EIP-712 SpendNote for exactly that quote. A signature, not a transaction: no gas, no block to wait for.

  3. 3

    The retry carries it in X-Poncho-Note. The gate verifies it, checks the balance and the key on chain, banks it and serves the call.

  4. 4

    You settle a batch whenever the gas is worth it. USDG moves from the payer's balance to your earnings, one Settled event per note.

The 402 body

An unpaid request to a listed route is answered 402 Payment Required with content-type: application/json and this body, built by quoteBody() in js/chain/settle.js. Every integer that can pass 253 is a decimal string.

The fields of the quote object
Quote fieldWhat it is

The X-Poncho-Note header

The agent sends the same request again with one header. Its value is the base64url, without padding, of the JSON on the right: the note with every field as a string, and a 65 byte signature.

The agent copies every quote field unchanged and fills in payer and agent, because only it knows which balance it spends. Change one byte and the signature no longer recovers to the agent.

Error codes

What the gate answers when it will not serve a call. Every answer is JSON with an error field; the 402 answers also carry a fresh quote, so an agent can sign again at once.

An agent retries a 402 once, with a note. A second 402 after a signed note means it should stop and read the code.

The status and error of every answer the gate gives instead of the call
StatuserrorWhenThe agent
The reason of a note_rejected answer
reasonWhen note_rejected carries it

The gate

A Node middleware that verifies a note with js/chain/settle.js, checks it against the chain with js/chain/core.js and banks it. Node 22 or later, no dependencies: it imports the same modules this site runs, so the note it accepts is the note the vault redeems.

Fetch it into an empty folder with the three lines below. Routes and prices are read from the registry, so a price you change on this page reaches the gate within a minute.

    Run it

    Start the example server with your service id, or put the gate in front of the server you already have. The gate matches the path your server receives against the path you listed, so list paths the way your server sees them.

    Settle a batch

    Redeem the bank whenever the gas is worth it, from cron or by hand. cast from Foundry signs with your keystore, so no file here ever holds a key. Import the provider wallet once, then one line settles everything that can settle.

    Each note must be redeemed before the deadline in its quote, an hour after it was handed out. Notes a payer can no longer cover stay in the bank for the next run instead of reverting the batch.

    No terminal nearby? Paste the bank into Redeem banked notes and send the same batch from your wallet.

    Connect a wallet

    Poncho never holds your keys. Connecting shares your address only.