Fiat payments for AI agents
Agents fund it.Humans pay it.
Your agent can hold crypto, but it can't open a bank account. With PayHumans it funds a payment order and names who to pay. A person sends the money from their own payment app, then collects the crypto once the payment is verified.
npm install -g payhumans-ai-cliAgents can start from /llms.txt. People who want to fill orders use the Peer app.
- Pay to
- @recipientNamed by the agent. Revolut, USD.
- Fiat
- $4.905 USDC at the agent's rate of 0.98.
- In escrow
- 5.00 USDCLocked until a payment is verified, then released to whoever paid, less Peer fees.
- Funded by
- an agent's walletSupported crypto in. Held as USDC on Base.
- Paid by
- a person, from their own account
- Funded
- Claimed
- Fiat sent
- Verified
- Released
Written with
payhumans deposit create --platform revolut --recipient '<revtag>' --amount 5 --currency USD --rate 0.98
- Funded with
- Supported crypto
Mainnet funding tested with SOL, ETH, native BTC and Solana USDC. See each route’s status in the docs.
- Held as
- USDC on Base
Every order settles in Peer's escrow contract, whatever it was funded with.
- Keys stay with
- Your agent
The CLI signs with the agent's own wallet. No sign-up and no custody by PayHumans.
How it works
One order. Two kinds of money.
Crypto moves on-chain: from your agent, into escrow, out to whoever makes the payment. Fiat moves off-chain: from that person's payment app to your recipient. A proof of the fiat payment is what connects the two.
Agent funds an order
Its crypto is converted to USDC on Base and locked in Peer's escrow, along with the recipient, platform, currency and rate.
A person claims it
In the Peer app. The amount they claim is reserved for them for a limited time.
They send the fiat
From their own payment account, straight to the recipient the agent named.
They prove the payment
Peer checks the proof against the order: recipient, amount, currency and timing.
Escrow releases the crypto
To the person who paid, less Peer's fees. With no valid proof in time, the claim expires and its funds become available again.
Funding an order does not pay anyone. The recipient is paid only at step 3, and the order shows it only after step 5. Read the full lifecycle, including expiry and withdrawal.
For agents
A CLI your agent can run unattended.
payhumans is one small npm package with JSON output. It finds out what can be paid, quotes routing costs, funds the order, reports its status, and takes back what nobody claimed.
npm install -g payhumans-ai-cli
# 1. What can be paid, and what can fund it
payhumans platforms
payhumans routes
# 2. Preview an order. Nothing is signed or sent.
payhumans deposit create --platform revolut --recipient '<revtag>' \
--amount 5 --currency USD --rate 0.98
# 3. Same command with an ID, a source spend cap and --yes
payhumans deposit create --platform revolut --recipient '<revtag>' \
--amount 5 --currency USD --rate 0.98 \
--operation-id invoice-1042 --max-source-spend 5.5 --yes
# 4. Watch it, then take back whatever was not claimed
payhumans deposit show <deposit-id>
payhumans deposit withdraw --id <deposit-id> \
--operation-id invoice-1042-withdraw --yes
Shown with the tested route: a Solana wallet holding USDC. Set the key in PAYHUMANS_SOLANA_KEY through your secret manager, never on the command line.
For humans
Have a payment app? Fill an order.
You send a payment an agent asked for, from an account you already have. Once the payment is verified, the crypto in escrow is released to you, less Peer's fees. The agent sets the price.
There is no PayHumans account to create. Orders are ordinary Peer orders, so you fill them in the Peer mobile app, from its P2P tab or Buy USDC. It supports Venmo, Revolut, Cash App, Wise, PayPal, Zelle, Chime and Monzo; newer versions add UPI and Alipay.
What is PayHumans?
A way for an AI agent to get a fiat payment made. The agent funds an order with crypto and names who should be paid. A person sends that payment from their own payment app, proves it, and receives the crypto.
Which crypto can fund an order?
Mainnet funding tests cover Solana USDC and SOL, Ethereum and Base ETH, and native Bitcoin from an external wallet. Other implemented EVM routes are listed separately as untested. Every new order still needs a live quote. Wrapped bitcoin is not accepted.
Where do the funds sit?
In Peer's escrow contract on Base, as USDC. Whatever you fund with is converted to USDC on Base first. PayHumans never holds your funds or your keys; the CLI signs with the agent's own wallet.
Does creating an order mean the recipient was paid?
No. Creating an order only puts crypto in escrow. The recipient is paid when a person claims the order, sends the fiat, and the payment proof is verified. Check the order's status; until it shows a payout, assume nothing was paid.
How does a person find my order?
People fill orders in the Peer mobile app, where an order can appear as USDC for sale on its payment platform and currency if it passes the app's filters and eligibility rules. Whether someone sees it depends on what they browse and how their alerts are set. There is no guarantee that anyone is notified.
What does it cost?
Three things: the rate you offer (a person who sends $4.90 against a 5 USDC claim keeps the difference, less Peer's fees), the routing fee to convert your crypto to USDC on Base, and network fees. The preview shows the route quote and your caps before you sign. Some network costs sit outside the caps: L1 data fees, Solana account rent, and your own Bitcoin transaction fee.
What if nobody pays?
Unclaimed funds stay yours. Withdraw them at any time; they return to your own wallet on Base, and one more command sends them back to a Solana wallet. A claim that is not paid and proven before it expires stops being valid; its funds become available again once Peer clears the expired claim.
What risk does the person paying take?
They send their own money first. If they pay the wrong recipient or amount, pay before claiming, or prove after the claim expires, the escrow does not release and the fiat cannot be recovered through PayHumans or Peer.