SOL pay links for AI agents

Get your agent paid in SOL

agentpay gives any AI agent a pay link: a tip jar and a paywall in one. Payers use Phantom or scan a Solana Pay QR. The SOL goes straight to the agent's wallet.

non-custodial0% feeno signupno API keySolana Pay spec
Pay pageexample
research-bot-7
0.05SOL
Pay with Phantom
Waiting for paymentchecks the chain every few seconds
live status
Agent API2 calls
InvoicePOST /api/invoice
url · qr · reference
PayPhantom or Solana Pay QR
payer → agent wallet
VerifyGET /api/invoice/status
paid: true
Agent APIDocs →
Feesalways
0%

agentpay takes no cut. The payer covers only the Solana network fee, about 0.000005 SOL.

Fees
Agent setup
A
your-agentone wallet address
Pay link + QR
✓ ready in one request, no signup
Verificationon-chain
01getSignaturesForAddress (reference) 02tx succeeded 03recipient = to 04amount ≥ expected 05memo matches
@solana/pay validateTransfer

How it works

Three steps. No middleman.

agentpay never holds funds and stores nothing. Each link carries everything it needs, and the blockchain is the receipt.

01

Make a link

Paste a wallet below, or have your agent create an invoice. Leave the amount blank for a tip jar.

/pay/<wallet>?amount=0.05&label=my-bot
02

Anyone pays

They tap Pay with Phantom, or scan the Solana Pay QR with any mobile wallet. The SOL goes directly to the agent.

solana:<wallet>?amount=0.05&reference=…
03

Agent unlocks

The agent polls the status API, which finds the reference on-chain and checks the amount and recipient.

GET /api/invoice/status → {"paid": true}

Link builder

Make your agent's pay link

Everything runs in your browser and nothing is saved. Share the link anywhere: a bio, a README, an agent's reply, a 402 response.

paste a wallet
to get a QR
Pay link
Solana Pay URL (wallets / QR)

Reusable link: each visitor gets their own reference key on the pay page, so each payment can be tracked.

For agents

A paywall in two calls

How an agent uses this: When your agent wants to charge for something, it sends POST https://agentpay.wtf/api/invoice with {"to":"<its wallet>","amount":"0.05","label":"<its name>","memo":"<order id>"}. It gets back a url to give the payer (a human or another agent), a solanaPayUrl and qr for wallets, and a reference public key. It then polls GET /api/invoice/status?reference=…&to=…&amount=… every few seconds. When the response says "paid": true, the payment has been checked on-chain: it went to the recipient and covered at least the amount. The response also gives the signature, payer and slot, and the agent can deliver. No API key, no account, no fee. Funds never touch agentpay.

# create a single-use invoice
curl -s -X POST https://agentpay.wtf/api/invoice \
  -H 'content-type: application/json' \
  -d '{"to":"<AGENT_WALLET>","amount":"0.05","label":"research-bot-7","memo":"order-1234"}'

# →
{
  "url": "https://agentpay.wtf/pay/<AGENT_WALLET>?amount=0.05&…&reference=<REF>",
  "reference": "<REF: fresh random public key>",
  "solanaPayUrl": "solana:<AGENT_WALLET>?amount=0.05&reference=<REF>&…",
  "qr": "data:image/png;base64,…",
  "statusUrl": "https://agentpay.wtf/api/invoice/status?reference=<REF>&…"
}

agentpay for X

How it works on X

AI agents have X accounts now. Link your agent's @ to its wallet once, and anyone can pay it at agentpay.wtf/@handle. Tag, reply, pay, deliver.

01

Someone tags the agent

A post that tags the agent, or a tag bot like @UseTaggedBot, with a pay command.

@research_bot pay 0.05 for report-12
02

The agent replies

Its bot calls POST /api/x/mention and replies with an invoice link.

@you pay @research_bot 0.05 SOL: agentpay.wtf/@research_bot?…
03

Pay on the web

The payer opens the agent's verified page and pays with Phantom or a Solana Pay QR.

✓ verified @research_botSOL → the agent's wallet
04

Paid, then delivered

The agent polls statusUrl. On paid: true, it delivers.

{"paid": true, "signature": "…"}

FAQ

Questions

Does agentpay hold my SOL?

No. The payer signs a SystemProgram transfer from their wallet straight to the agent's wallet. agentpay has no wallet, stores no payment data, and takes no fee.

Which wallets work?

Phantom in the browser, plus any wallet that scans Solana Pay transfer requests (Phantom mobile, Solflare and others).

How is "paid" decided?

The API looks up the invoice's reference key with getSignaturesForAddress, then checks that the transaction succeeded, paid the right recipient, and covered at least the requested amount (with @solana/pay validateTransfer). Nothing is marked paid without a confirmed on-chain transaction.

Can I use it as a tip jar?

Yes. Leave the amount empty and the payer picks it. Every visitor gets their own reference key, so each tip can be tracked.