x402 facilitators — and why jishie is its own
A facilitator is the piece of x402 that verifies and settles a payment, so a selling agent never has to run chain infrastructure or hold gas. jishie is its own facilitator on both rails — Base and Solana — and exposes its verifier for you to use. If a coding agent told you “you have no facilitator”, this page is how to get one.
What a facilitator actually does
When an agent charges per call, it answers HTTP 402 with its payment requirements (recipient, amount, asset, network). The buyer signs a payment and returns it in the X-PAYMENT header. Two money-critical steps follow:
- verify — is this signed payment valid for these requirements: right recipient, exact amount, unexpired, real signature? This is pure crypto — no chain write, no gas.
- settle — broadcast it on-chain and confirm the USDC actually moved. This costs gas.
A facilitator is a service that does both behind POST /verify and POST /settle, so the resource server needs no chain private keys and no gas of its own.
“You have no facilitator” — what that means
Almost always it means your agent/server has no facilitator wired up to accept x402 yet — not that jishie lacks one. You have three ways to fix it:
| Option | Verify | Settle | You hold chain keys? | Notes |
|---|---|---|---|---|
| Run your own (reference facilitator) | you | you | yes | full control, most to operate; you fund gas |
| Coinbase CDP facilitator | CDP | CDP | no | hosted, Base-first; needs a CDP account + keys |
| jishie | jishie (live) | self · prepaid (early access) | no | Base and Solana; no account for verify |
The facilitators — pick one
The x402 facilitator ecosystem is young; these are the ones we know of today. We don’t monitor other providers’ live status — treat their rows as pointers and confirm against their own docs. (Know one that’s missing? tell us — we’ll add it, not invent it.)
| Facilitator | Rails | Verify · Settle | Hosted? | How to use it |
|---|---|---|---|---|
| jishie | Base + Solana (mainnet) | verify: public · settle: prepaid (early access) | yes — no account for verify | POST /v1/x402/verify · /supported |
| Coinbase CDP | Base (mainnet) | verify + settle | yes — CDP account + API keys | the @coinbase/x402 SDK; the reference the protocol launched with |
| x402.org (open reference) | Base Sepolia (testnet) | verify + settle | yes — for testing | point at the public reference facilitator while you build, then move to a mainnet one |
| Self-hosted | whatever you configure | verify + settle | no — you run it | run the open-source x402 reference facilitator yourself; you hold the keys and fund the gas |
Only jishie’s row is one we operate and can vouch for as live. The verify endpoint below is real and testable right now; everything else here we describe honestly and link out — rien de faux.
jishie is its own facilitator — no Coinbase required
jishie depends on no external service to move money. It self-verifies and self-settles USDC on both rails, live on mainnet:
- Base — EIP-3009
transferWithAuthorization(gasless for the payer). jishie recovers the EIP-712 signer offline, checks recipient + exact amount + validity window + signature malleability, then submits the authorization. - Solana — the SVM
exactscheme: the buyer builds a versioned tx paying USDC straight to the seller and names jishie as the transaction fee payer; jishie verifies the structure + the client’s signature offline, co-signs as fee payer, and submits. USDC never touches jishie’s key — it only fronts a little SOL for gas.
This is the honest, published position — see GET /v1/standard and the standard: “jishie self-settles USDC on BOTH rails, as its OWN facilitator — no external service.”
Use jishie as your facilitator — verification, live today
jishie exposes the verify half of that same engine as a standard facilitator surface. It’s free, open, and works on both rails — no account. It verifies against your requirements (your payTo, your amount); jishie never assumes it’s the recipient.
GET https://jishie.com/v1/x402/supported # schemes + networks jishie can verify
POST https://jishie.com/v1/x402/verify
content-type: application/json
{
"x402Version": 1,
"paymentPayload": { "x402Version":1, "scheme":"exact", "network":"eip155:8453", "payload": { ... } },
"paymentRequirements": { "scheme":"exact", "network":"eip155:8453",
"payTo":"0xYourWallet", "maxAmountRequired":"20000", "asset":"USDC" }
}
→ { "isValid": true, "payer": "0x1a2b…" }
The request body is the exact shape the x402 spec defines (the same one jishie itself sends when it calls a facilitator), so any conforming client works. On Solana, build your transaction naming jishie’s fee payer (5KzFDU9NNJNsg1JnDY3A8M914RAC3m7hrMdjv5yK2sif) and advertise it as extra.feePayer in your 402 challenge so buyers set it.
Settle through jishie — Alpha (10 spots)
Verification is free and open because it’s pure cryptography. Settlement is different: to settle your payment jishie broadcasts it on-chain and fronts the gas — in ETH, from its own wallet, for USDC that lands in your wallet — not jishie’s. Rather than eat that (a drain + a spam vector), the first settlement cohort is a tight alpha: 10 facilitators, a $10 USDC deposit each. You never touch ETH or gas — jishie fronts it (Base gas is a fraction of a cent per settle, so your $10 deposit covers it many times over). It’s self-serve over x402 — no email:
- Join — pay the $10 USDC deposit over x402 at
POST /v1/x402/facilitator/join. The payment does triple duty: the EIP-3009 signer IS your wallet (so it proves control), it’s your prepaid membership (jishie fronts the Base gas in ETH from its own wallet — you never hold ETH), and — once the badge is deployed — jishie mints your Early Facilitator NFT to that wallet in the same call (jishie is the contract owner; it mints with its own key). On payment your wallet is auto-allowlisted (jishie self-settles its own join — meta). - Settle —
POST /v1/x402/settlewith anX-Wallet-Authproof of that wallet (purposefacilitator-settle). jishie broadcasts on Base (Solana next) and hands back the on-chain receipt + gas + latency. - Earn the Early Facilitator badge — a soulbound, fully on-chain NFT (capped at 10, ever) stamped with your jishie trust score. Not tradable — earned. Live on Base at
0x4ce113299c6E5F43423c6F62b71763e5CF1A61A7.
Status, plainly: verify is live, and so is settle — jishie is member #1 and already ran its first on-chain settle (the journey). Join is self-serve x402. The Early Facilitator badge is deployed too. We never take a deposit or show a mint button before it’s real — rien de faux.
- Gas wallet (fund with ETH on Base — it pays every settle’s gas):
0x110d040b16AF8d6Fb96ae4dF8607526FB71a988A - Cohort: 2/10 — jishie is member #1 (dogfoods via its own wallet); 1 external member. Join self-serve over x402 (
POST /v1/x402/facilitator/join, $10) — the payer wallet is auto-allowlisted, no email. - Journey (every settle: payment, time, gas): the stats page · JSON — 1 settled so far
For agents — join + settle through jishie (alpha)
Self-serve, no email. Join by paying the x402 deposit (the payment proves your wallet), then settle over the same wallet-control proof every agent already uses:
POST https://jishie.com/v1/x402/facilitator/join # pay the $10 deposit → your payer wallet is allowlisted
POST https://jishie.com/v1/x402/settle
X-Wallet-Auth: base64({chain, wallet, purpose:"facilitator-settle", issued_at, signature})
{ "paymentPayload": { … }, "paymentRequirements": { … } }
→ { "transaction": "0x…", "gas_eth": …, "latency_ms": … }
jishie itself is member #1 (it dogfoods with its own key). Full spec: THE AGENT STANDARD §3.9 · /v1/standard (payments.facilitator) · cohort /v1/x402/facilitator/alpha · journey stats.
The full x402 flow
402 + requirements → buyer signs → X-PAYMENT → facilitator verify → serve + facilitator settle → X-PAYMENT-RESPONSE (the settlement receipt). Fail-closed at every step: no valid, settled payment ⇒ no paid resource, and the result is withheld until settlement succeeds.
Machine surfaces: GET /v1/x402/supported · GET /v1/standard · the standard (markdown) · /v1/openapi.json · pricing for jishie’s own metered services: /pricing.html.