merchant_id and
API secret, and verify signed payment receipts statelessly on your own
server. No bridge to deploy, no services.json entry to file.
Non-custodial
You set your own payout wallet on Polygon. Settlement lands there
directly — AiFinPay never takes custody of your funds.
Stateless verification
Receipts are signed JWTs. Verify them against AiFinPay’s public JWKS —
no shared secret required on the verification path.
Looking for the bridge / marketplace-registry path instead? That’s for
providers who want their API auto-discoverable in the AiFinPay registry
— see Become a provider.
1
Create an account
Go to dash.aifinpay.io and sign up with an
email and password. You’re signed in immediately — a verification
email is also sent, but it doesn’t block you from continuing. The same
account manages your AI agents (if you have any) at
/me.2
Create your first service
In the dashboard, create a service with:
- A service name — how agents and the dashboard identify it.
- A payout wallet — a public
0x…address on Polygon. Settlement lands here non-custodially; AiFinPay never holds your funds.
3
Integrate the paywall in your API
Install the merchant middleware — it answers unpaid requests with a
Routes and prices come from the registry you edit in the Paywall
Builder — or declare them in code with
402 payment challenge, verifies receipts statelessly against our
public JWKS, and meters the prepaid quota down per request. No call
back to AiFinPay on the hot path.ensureResources. Both write
the same registry; pick one owner per site (code registration
replaces on every deploy). The full decision, plus a Fastify adapter:
Integration paths.No-SDK path: verify the receipt JWT yourself
No-SDK path: verify the receipt JWT yourself
The receipt is a plain Ed25519-signed JWT — any JWT library works,
which is also why the middleware has no runtime dependency on us:What the SDK adds on top of this snippet is the part that costs money
when hand-rolled: atomic post-increment metering (read-then-write
overspends a batch under concurrency), receipt type checking, scope
matching, and a quota counter whose TTL dies with the receipt — plus the
402 challenge itself. If you build your own gate, build those four.Verification only needs the public JWKS — your
msec_… secret is
never involved in checking a receipt. The secret is the management
credential (routes, prices, payout wallet); treat it accordingly.4
Manage everything from the dashboard
Once your service is live, the dashboard is where you run it day to
day:
Pricing
Set a unit price per tier (e.g.
standard, premium) — this is
what quotes are generated against.Webhook
Add a settlement webhook URL. AiFinPay sends an HMAC-signed
POST
on every settlement so you can react in real time instead of
polling.Settings
Rotate your secret if it’s ever exposed. The old secret is
invalidated immediately; the previous value can’t be re-viewed.
Receipts & activity
Watch receipts, usage stats, and live activity as agents pay —
useful for reconciling against your own metering.
The dashboard’s per-merchant management views (pricing, webhook config,
secret rotation, receipts) are part of the dashboard UI itself, not a
public API endpoint you call directly from your backend. Your backend
only needs
POST /v1/quote and the JWKS endpoint above.What you get
No bridge to run
Skip standing up and hosting a separate x402 bridge process — the
quote + receipt flow talks directly to your existing API.
No registry entry to file
You don’t need a
services.json PR or a redeploy to start
charging — create a service in the dashboard and you’re live.No token, no credits
There is nothing for you or the agent to buy, hold or trade. The protocol
credit that used to be earned on paid calls was retired on 2026-08-06 — it
cost an extra chain call per payment and was never minted.
Real-time visibility
Receipts, stats, and live activity in one place, without building
your own on-chain indexer.
Next steps
Become a provider (bridge path)
Want your API auto-discoverable in the AiFinPay registry too? See the
config-only bridge path.
Networks reference
Live contract addresses and network details for the settlement side of
a payment.