{"name":"PayHumans.ai","url":"https://payhumans.ai","reviewed":"2026-10-04","summary":"PayHumans lets an AI agent get a real-world fiat payment made. The agent funds an order with supported crypto and names a recipient; a person sends the money from their own payment app and collects the crypto once the payment is verified. Built on Peer.","rules":["Creating an order does not pay the recipient. It puts crypto in escrow and waits for a person. Only a claim in the FULFILLED state means a fiat payment was verified and USDC was released.","Every command that spends is a preview until you pass --yes. Preview first and read totalSourceInput, routes and fiatForFullDeposit (amount times rate: the fiat the recipient gets if the whole order fills).","Signed crypto writes require --operation-id. deposit create --yes also requires --max-source-spend; return --yes requires --min-receive. Recipient registration moves no crypto and needs no operation ID. Reuse the same operation ID on every retry; a new ID is a new payment.","Retry protection depends on the local journal in ~/.payhumans/operations. Keep that directory and back it up, and do not use the same wallet from another process or tool while an operation is in flight. Without the journal the CLI cannot tell what was already sent.","The limits bound the route and execution gas, not every cost. L1 data fees, Solana account rent and your own Bitcoin transaction fee are extra. Each limit covers one order, so keep your own total budget. Gas caps are checked against prepared transactions during execution; a preview is not a full gas estimate, and earlier confirmed steps can remain spent if a later step is blocked.","Keys come only from the environment: PAYHUMANS_SOLANA_KEY or PAYHUMANS_EVM_KEY, or their _FILE variants. Never put a key in a command argument, a prompt or a log. No account, API key or Privy login is needed.","Whatever you fund with is converted to USDC on Base before the deposit. The escrow is Peer's contract on Base. There is no escrow on Solana, Ethereum or Bitcoin.","Funded mainnet tests cover Solana USDC/SOL, Ethereum ETH, Base ETH and external-wallet native BTC. Other implemented routes remain untested with funds. A successful quote alone is not a funded test. Wrapped BTC is not accepted.","Recipient validation checks format, not ownership. Confirm the exact handle with the recipient. Fiat sent to a wrong handle cannot be recovered.","Nobody is guaranteed to see or fill an order. 12 platforms can be named in an order, but only 10 can be filled in the Peer mobile app. Unclaimed funds can be withdrawn at any time. You cannot cancel another person's active claim, and should not try to: they may already have sent fiat.","Real fiat payment, proof and payout remain unverified in these PayHumans tests. Start with small amounts."],"cli":{"package":"payhumans-ai-cli","executable":"payhumans","node":">=22","install":"npm install -g payhumans-ai-cli","output":"JSON on stdout. Errors are JSON on stderr with a non-zero exit code.","previewByDefault":true,"executeFlag":"--yes","requiredWithExecute":{"deposit create":["--operation-id","--max-source-spend"],"deposit withdraw":["--operation-id"],"deposit open-claims":["--operation-id"],"return":["--operation-id","--min-receive"],"recipient register":[],"operations resume":["saved operation ID; original limits are reused"]},"commands":[{"command":"platforms","purpose":"List payment platforms, currencies and recipient rules.","needsKey":false},{"command":"routes [--live]","purpose":"List crypto sources the CLI can fund from.","needsKey":false},{"command":"wallet [--source-chain] [--source-asset]","purpose":"Show the funding balance and the Base account. Alias: balances.","needsKey":true},{"command":"recipient validate --platform --recipient","purpose":"Check a recipient identifier.","needsKey":false},{"command":"recipient register --platform --recipient [--yes]","purpose":"Register recipient details with Peer. Moves no crypto.","needsKey":false},{"command":"recipient show --platform --hash <bytes32>","purpose":"Read back a registered recipient by its hash.","needsKey":false},{"command":"deposit create ...","purpose":"Preview an order; with --yes, fund and create it.","needsKey":"For live balances/quotes and execution; keyless preview shows terms only."},{"command":"deposit show <deposit-id>","purpose":"Read balances and claims for an order.","needsKey":false},{"command":"deposit list [--owner <address>] [--source-chain] [--source-asset]","purpose":"List orders owned by an account. Without --owner the source wallet supplies the Base owner.","needsKey":"Only when --owner is omitted. Source defaults to Solana USDC; EVM wallets must select their source explicitly."},{"command":"deposit withdraw --id <deposit-id> [--amount]","purpose":"Take available USDC back to your Base account. Never cancels a claim.","needsKey":"Only with --yes; select the owning source wallet."},{"command":"deposit open-claims --id <deposit-id> --platform <name>","purpose":"Remove the dispute-protection stake requirement for one platform on an order. Other eligibility rules still apply.","needsKey":"Only with --yes."},{"command":"return [--amount] --min-receive <usdc>","purpose":"Route USDC from your Base account back to the same Solana wallet.","needsKey":true},{"command":"operations list | show <id> | resume <id>","purpose":"Inspect and resume journaled runs.","needsKey":"Only for resume --yes; use the same original source key."}],"createFlags":[{"flag":"--platform <name>","required":"Always","meaning":"Payment platform, from payhumans platforms."},{"flag":"--recipient <id>","required":"Always","meaning":"Who gets the fiat, in that platform's identifier format."},{"flag":"--amount <usdc>","required":"Always","meaning":"USDC to put in escrow. This is the gross amount, before Peer's fees."},{"flag":"--currency <code>","required":"Always","meaning":"Fiat currency the recipient is paid in."},{"flag":"--rate <fiat-per-usdc>","required":"Always","meaning":"Fiat a person sends per USDC of escrow they claim. 0.98 means $4.90 for a 5 USDC claim. Peer's fees then come out of that USDC, so the person receives a little less than they claimed."},{"flag":"--source-chain <chain>","required":"Default solana","meaning":"Where the funding crypto is: ethereum, base, arbitrum, optimism, polygon, solana or bitcoin."},{"flag":"--source-asset <asset>","required":"Default USDC","meaning":"ETH, SOL, USDC or BTC, depending on the chain."},{"flag":"--min <usdc>, --max <usdc>","required":"Optional","meaning":"Smallest and largest single claim. Defaults: 1 USDC (or the full amount if smaller) and the full amount."},{"flag":"--operation-id <id>","required":"With --yes","meaning":"Your own unique ID for this payment. Reuse it on every retry: the CLI then resumes the saved operation from its local journal instead of starting a new payment."},{"flag":"--max-source-spend <amount>","required":"With --yes","meaning":"Most of the source asset the route may take, including fees priced into the route and any Base gas it buys. Network gas you pay directly is not included. For USDC sources, --max-spend is accepted as an alias and also caps the deposit."},{"flag":"--max-route-fee-usd <usd>","required":"Default 2","meaning":"Most the routing provider may charge in service and relay fees, in USD. Source network gas is separate."},{"flag":"--slippage-bps <bps>","required":"Default 50","meaning":"Swap slippage tolerance, 0 to 100 basis points."},{"flag":"--max-source-gas <native>","required":"Default 0.002 SOL or 0.001 ETH","meaning":"Ceiling on source-chain execution gas. Solana account rent and your own Bitcoin transaction fee are not covered by it."},{"flag":"--max-base-gas <eth>","required":"Default 0.0001","meaning":"Ceiling on Base execution gas for the approval and deposit. The L1 data fee Base adds can be extra."},{"flag":"--require-stake","required":"Optional","meaning":"Keep Peer's dispute protection on, so people must post stake to claim."},{"flag":"--refund-address <btc-address>","required":"Bitcoin only","meaning":"Your own mainnet Bitcoin address, used if the provider has to refund. A refund can be less than you sent."},{"flag":"--yes","required":"To execute","meaning":"Sign and send. Without it every command is a preview."}],"examples":{"install":"npm install -g payhumans-ai-cli\npayhumans --version","discover":"payhumans platforms        # payment platforms, currencies, recipient rules\npayhumans routes           # crypto sources the CLI can fund from\npayhumans routes --live    # plus what the routing providers advertise right now","wallet":"payhumans wallet                                             # USDC on Solana (default)\npayhumans wallet --source-chain solana --source-asset SOL\npayhumans wallet --source-chain ethereum --source-asset ETH","recipient":"payhumans recipient validate --platform revolut --recipient '<revtag>'\npayhumans recipient register --platform revolut --recipient '<revtag>'         # preview\npayhumans recipient register --platform revolut --recipient '<revtag>' --yes\npayhumans recipient show --platform revolut --hash '<registered-payee-hash>'","preview":"# Preview: prints the plan as JSON. Nothing is signed or sent.\npayhumans deposit create --platform revolut --recipient '<revtag>' \\\n  --amount 5 --currency USD --rate 0.98","previewOtherSource":"# The same order, funded from ETH on Ethereum instead\npayhumans deposit create --platform revolut --recipient '<revtag>' \\\n  --amount 5 --currency USD --rate 0.98 \\\n  --source-chain ethereum --source-asset ETH","create":"# Same command, plus an operation ID, a source spend cap and --yes.\npayhumans deposit create --platform revolut --recipient '<revtag>' \\\n  --amount 5 --currency USD --rate 0.98 \\\n  --operation-id invoice-1042 --max-source-spend 5.5 --yes","partial":"# One order that several people can fill, 1 to 5 USDC at a time\npayhumans deposit create --platform revolut --recipient '<revtag>' \\\n  --amount 20 --currency USD --rate 0.98 --min 1 --max 5","status":"payhumans deposit show <deposit-id>\npayhumans deposit list --owner '<Base-deposit-owner-address>'\n# Or derive the owner from your configured source wallet:\npayhumans deposit list --source-chain ethereum --source-asset ETH","operations":"payhumans operations list\npayhumans operations show invoice-1042\npayhumans operations resume invoice-1042          # preview\npayhumans operations resume invoice-1042 --yes","withdraw":"payhumans deposit withdraw --id <deposit-id>              # preview\npayhumans deposit withdraw --id <deposit-id> \\\n  --operation-id invoice-1042-withdraw --yes\n\n# Funded from an EVM wallet? Name it, so the CLI signs with that key.\npayhumans deposit withdraw --id <deposit-id> \\\n  --source-chain ethereum --source-asset ETH \\\n  --operation-id invoice-1042-withdraw --yes","returnFunds":"payhumans return --amount 5                             # preview, shows minimum received\npayhumans return --amount 5 --min-receive 4.8 \\\n  --operation-id invoice-1042-return --yes","openClaims":"payhumans deposit open-claims --id <deposit-id> --platform revolut \\\n  --operation-id invoice-1042-open --yes"},"environment":[{"name":"PAYHUMANS_SOLANA_KEY","purpose":"Solana signing key for a Solana funding wallet: a base58 secret or a Solana CLI JSON array."},{"name":"PAYHUMANS_SOLANA_KEY_FILE","purpose":"Path to a file holding that key, instead of the variable above."},{"name":"PAYHUMANS_EVM_KEY","purpose":"0x-prefixed private key for an EVM funding wallet (Ethereum, Base, Arbitrum, Optimism, Polygon). Also owns the order when funding with bitcoin. PAYHUMANS_PRIVATE_KEY is accepted as an alias."},{"name":"PAYHUMANS_EVM_KEY_FILE","purpose":"Path to a file holding that key. PAYHUMANS_PRIVATE_KEY_FILE is accepted as an alias."},{"name":"PAYHUMANS_STATE_DIR","purpose":"Optional. Where operation journals are kept. Defaults to ~/.payhumans/operations. Keep and back up this directory: it is what protects a retry from paying twice."},{"name":"PAYHUMANS_SOLANA_RPC_URL","purpose":"Optional. Your own Solana RPC endpoint."},{"name":"PAYHUMANS_ESCROW_RPC_URL","purpose":"Optional. Your own Base RPC endpoint."},{"name":"PAYHUMANS_RPC_<chainId>","purpose":"Optional. Your own RPC endpoint for one EVM chain, for example PAYHUMANS_RPC_1 for Ethereum."},{"name":"PAYHUMANS_EVM_RPC_URL","purpose":"Optional. Your own RPC endpoint for whichever EVM source chain you selected."},{"name":"PAYHUMANS_RELAY_API_KEY","purpose":"Optional. Your own Relay API key."},{"name":"PAYHUMANS_NEAR_INTENTS_TOKEN","purpose":"Optional. Your own NEAR Intents token, used only by the bitcoin route."}],"errorCodes":[{"code":"OPERATION_NOT_FOUND","meaning":"No saved journal exists for that ID in the current state directory. Run operations list and confirm PAYHUMANS_STATE_DIR points to the original journal. If funds may already have moved, reconcile the original transaction before creating a new operation."},{"code":"INVALID_ARGUMENT","meaning":"A flag is missing or malformed. Nothing was sent."},{"code":"RECIPIENT_REGISTRATION_REQUIRED","meaning":"The recipient must complete Peer's one-time verification. Nothing was sent. Retry the same operation ID afterwards."},{"code":"REQUEST_FAILED","meaning":"Anything else. Read message. If a run with --yes had started, inspect the operation before retrying."}],"spendCaps":[{"flag":"--max-source-spend","bounds":"What the route may take from your funding asset, in that asset's units: the amount converted, fees priced into the route, and any Base gas the route buys. Required with --yes. For USDC sources, --max-spend is accepted as an alias and also caps the deposit itself."},{"flag":"--max-route-fee-usd","bounds":"The routing provider's service and relay fees, in USD. Default 2."},{"flag":"--slippage-bps","bounds":"Swap slippage tolerance. Default 50, range 0 to 100."},{"flag":"--max-source-gas","bounds":"Execution gas on the source chain. Default 0.002 SOL or 0.001 ETH. A ceiling, not an amount held in reserve."},{"flag":"--max-base-gas","bounds":"Execution gas on Base for the approval and deposit. Default 0.0001 ETH."}],"costsOutsideCaps":["L1 data fees that Base and other rollups add on top of execution gas.","Solana account rent.","The Bitcoin network fee on a payment you send from your own wallet."],"operationJournal":{"path":"~/.payhumans/operations","override":"PAYHUMANS_STATE_DIR","facts":["Every signed crypto operation writes a journal of its steps there, named by operation ID. Recipient registration moves no crypto and creates no operation journal.","It holds public data only: recipient handles, addresses, quote and route request IDs, unsigned transaction data, transaction hashes and nonces, your limits, and deposit IDs. It never holds private keys.","Retry protection lives in that journal. Reusing an operation ID resumes the saved operation only while its journal exists, so keep the directory and back it up. If it is deleted, the CLI no longer knows what was already sent.","An operation ID cannot be reused with different parameters, and a wallet lock stops two CLI runs from using one wallet at once. Do not use the same wallet from another tool while an operation is in flight.","A different operation ID is a different payment. Do not answer a timeout by choosing a new ID: inspect the operation and resume it."]}},"settlement":{"asset":"USDC","chain":"Base","chainId":8453,"usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","protocol":"Peer","note":"Every order is USDC in Peer's escrow contract on Base, whatever funded it. There is no escrow on Solana, Ethereum or Bitcoin."},"fundingRoutes":[{"asset":"USDC","chain":"Solana","status":"tested","note":"Mainnet deposits 5962, 5968 and 5970 on October 2, 2026: funded, created, withdrawn and returned to the Solana wallet.","statusLabel":"Tested on mainnet"},{"asset":"USDC","chain":"Base","status":"listed","note":"Already the settlement asset, so there is no conversion and no route fee. The wallet must already hold ETH on Base for gas.","statusLabel":"Listed, not tested"},{"asset":"USDC","chain":"Ethereum, Arbitrum, Optimism, Polygon","status":"listed","note":"Bridged to USDC on Base by the routing provider.","statusLabel":"Listed, not tested"},{"asset":"ETH","chain":"Ethereum, Base","status":"tested","note":"Independent installed-CLI tests funded 5 USDC each: Ethereum deposit 6020 and Base deposit 6021 on October 4. This verifies funding, not fiat payment.","statusLabel":"Tested on mainnet"},{"asset":"ETH","chain":"Arbitrum, Optimism","status":"listed","note":"Swapped to USDC on Base by the routing provider.","statusLabel":"Listed, not tested"},{"asset":"SOL","chain":"Solana","status":"tested","note":"Native SOL funded 5 USDC in mainnet deposit 6019 on October 4. The unused escrow was withdrawn to its Base owner.","statusLabel":"Tested on mainnet"},{"asset":"BTC (native)","chain":"Bitcoin","status":"tested","note":"An external native Bitcoin wallet funded 10 USDC in deposit 6022 through NEAR Intents on October 4; the unused escrow was withdrawn on Base. You send BTC yourself once. Provider minimums vary and Bitcoin network fees are extra. The CLI never holds a Bitcoin key; wrapped bitcoin is not accepted.","statusLabel":"Tested on mainnet"}],"routeStatusMeanings":{"tested":{"label":"Tested on mainnet","meaning":"PayHumans funded, created and withdrew a real deposit through this route."},"listed":{"label":"Listed, not tested","meaning":"Implemented in the CLI. PayHumans has not yet funded a deposit through it. A preview that succeeds is a quote, not a funded test."},"unavailable":{"label":"Not available","meaning":"The CLI rejects this source. Nothing is sent."}},"platforms":[{"platform":"venmo","name":"Venmo","recipientFormat":"Venmo username","beforeFirstOrder":"Checked against the live Venmo profile when the order is created.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD"]},{"platform":"revolut","name":"Revolut","recipientFormat":"Revtag","beforeFirstOrder":"Checked against the public Revolut profile when the order is created.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD","EUR","GBP","SGD","NZD","AUD","CAD","JPY","HKD","MXN","SAR","AED","THB","TRY","PLN","CHF","ZAR","CNY","CZK","DKK","HUF","NOK","RON","SEK"]},{"platform":"cashapp","name":"Cash App","recipientFormat":"Cashtag, without the leading $","beforeFirstOrder":"The Cash App profile must be public and resolve.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD"]},{"platform":"wise","name":"Wise","recipientFormat":"Wisetag, without the leading @","beforeFirstOrder":"A recipient Peer has not seen before must verify the account once. The recipient does this themselves; an agent cannot. An already verified recipient can be reused.","recipientMustVerifyOnce":true,"registrationUrl":"https://app.peer.xyz/sell/wise","fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD","CNY","EUR","GBP","AUD","NZD","CAD","AED","CHF","ZAR","SGD","ILS","HKD","JPY","PLN","TRY","IDR","KES","MYR","MXN","THB","VND","UGX","CZK","DKK","HUF","INR","NOK","PHP","RON","SEK"]},{"platform":"paypal","name":"PayPal","recipientFormat":"PayPal.me username, not an email","beforeFirstOrder":"Same one-time verification as Wise. The recipient must be a personal PayPal account.","recipientMustVerifyOnce":true,"registrationUrl":"https://app.peer.xyz/sell/paypal","fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD","EUR","GBP","SGD","NZD","AUD","CAD"]},{"platform":"zelle","name":"Zelle","recipientFormat":"Enrolled email address, lowercase","beforeFirstOrder":"Format check only. Nothing confirms the email is enrolled with Zelle, so confirm it with the recipient.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD"]},{"platform":"chime","name":"Chime","recipientFormat":"$ChimeSign, lowercase, with the leading $","beforeFirstOrder":"Format check only. Confirm the ChimeSign with the recipient.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["USD"]},{"platform":"monzo","name":"Monzo","recipientFormat":"Monzo.me username","beforeFirstOrder":"Checked against the Monzo profile when the order is created.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"yes","fillableInPeerAppLabel":"Yes","appAlerts":true,"currencies":["GBP"]},{"platform":"mercadopago","name":"Mercado Pago","recipientFormat":"22-digit CVU","beforeFirstOrder":"Checksum validation only.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"no","fillableInPeerAppLabel":"No","appAlerts":false,"currencies":["ARS"]},{"platform":"upi","name":"UPI","recipientFormat":"VPA such as name@bank, lowercase","beforeFirstOrder":"Format check only. In the Peer app the payer proves the payment through Amazon Pay: person-to-person UPI from a linked bank account. UPI Lite and merchant payments are not supported.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"newer","fillableInPeerAppLabel":"Newer versions","appAlerts":false,"currencies":["INR"]},{"platform":"alipay","name":"Alipay","recipientFormat":"Alipay account email","beforeFirstOrder":"Same one-time verification as Wise.","recipientMustVerifyOnce":true,"registrationUrl":"https://app.peer.xyz/sell?tab=advanced","fillableInPeerApp":"newer","fillableInPeerAppLabel":"Newer versions","appAlerts":false,"currencies":["CNY"]},{"platform":"xmoney","name":"X Money","recipientFormat":"X username, without the leading @","beforeFirstOrder":"Format check only. Nothing confirms the account exists or has X Money enabled, so confirm it with the recipient.","recipientMustVerifyOnce":false,"registrationUrl":null,"fillableInPeerApp":"no","fillableInPeerAppLabel":"No","appAlerts":false,"currencies":["USD"]}],"platformSets":{"catalog":12,"fillableInPeerApp":["Venmo","Revolut","Cash App","Wise","PayPal","Zelle","Chime","Monzo","UPI","Alipay"],"fillableOnlyInNewerAppVersions":["UPI","Alipay"],"notFillableInPeerApp":["Mercado Pago","X Money"],"appAlerts":["Venmo","Revolut","Cash App","Wise","PayPal","Zelle","Chime","Monzo"],"note":"App support is taken from the Peer app's current source. Store rollout and behaviour on a production device are unverified."},"rate":"--amount is gross USDC in escrow. --rate is fiat sent per USDC of escrow claimed. Peer's fees are taken from the USDC the person receives, so they receive less than they claim.","identifiers":[{"name":"operationId","from":"You choose it. One per payment; 1 to 80 letters, digits, hyphens or underscores.","use":"Retry or resume. While its local journal exists, the same ID resumes the saved operation instead of starting a new payment."},{"name":"depositId","from":"The escrow contract, when the deposit is created.","use":"Read status and withdraw."},{"name":"compositeDepositId","from":"The escrow address and deposit ID joined by an underscore.","use":"Refer to the order unambiguously in Peer's APIs and app."},{"name":"intent hash","from":"Each claim a person makes. Listed under intents in deposit show.","use":"Tell claims apart and see which were fulfilled."},{"name":"requestId","from":"The routing provider, one per swap or bridge.","use":"Reconcile a slow or failed route before retrying."}],"orderBalances":[{"key":"funded","name":"Funded","meaning":"USDC the agent put into the order."},{"key":"available","name":"Available","meaning":"USDC nobody has claimed. Open to be claimed, or withdrawn by the agent."},{"key":"reserved","name":"Reserved","meaning":"USDC held for a person's active claim. Locked until that claim is fulfilled, cancelled, or expires and is cleared."},{"key":"fulfilled","name":"Fulfilled","meaning":"USDC released from escrow against verified fiat payments. Gross: the people who paid received this less Peer's fees."},{"key":"withdrawn","name":"Withdrawn","meaning":"USDC the agent took back."}],"claimStates":{"SIGNALED":"A person has claimed. USDC is reserved. No payment is proven.","FULFILLED":"A fiat payment was verified and the escrow released USDC to the person, less Peer's fees."},"humans":{"workflow":"Peer mobile app: P2P tab or Buy USDC flow.","guide":"https://payhumans.ai/earn","claimPage":"https://payhumans.ai/earn/recover","app":{"onboarding":"https://mobile.peer.xyz/onboard","appStore":"https://apps.apple.com/us/app/peer-pay-earn/id6749191100","googlePlay":"https://play.google.com/store/apps/details?id=com.zkp2p.mobile.dev"},"discovery":"Not guaranteed. An order can appear in the Peer app once Peer has indexed it, if it passes the app's filters and eligibility rules: a platform and currency the app supports, enough unreserved USDC, a usable exchange rate, a minimum order value (about $1 by default), and the person's own platform, amount and price filters.","alerts":"The app's alerts for new orders are opt-in, limited to 8 platforms (Venmo, Revolut, Cash App, Wise, PayPal, Zelle, Chime and Monzo), filtered by price and by a minimum size that defaults to $25, and rate-limited. Delivery has not been verified.","upi":"Proved in the app through Amazon Pay: person-to-person UPI from a linked bank account. UPI Lite and merchant payments are not supported.","zelle":"The app verifies Zelle payments sent from Bank of America or Citi."},"verification":{"asOf":"October 4, 2026","verified":["Native SOL, Ethereum ETH and Base ETH each funded a 5 USDC Revolut order on mainnet: deposits 6019, 6020 and 6021. Independent Astra and Claude testers used the published CLI for the Ethereum and Base runs.","Native Bitcoin funded 10 USDC in deposit 6022 through an external Bitcoin wallet and NEAR Intents. Funding and creation completed; unused funds were recovered as Base USDC.","A controlled unpaid 1 USDC claim on deposit 6020 left 4 USDC available. The CLI rejected an over-withdrawal and recovered only those 4 USDC. After we cancelled our own unpaid claim, the remaining 1 USDC was recovered. No fiat was sent.","A 5 USDC withdrawal from deposit 6019 returned 4.763997 USDC to the original Solana wallet after routing costs; a stricter minimum-receive preview rejected the quote safely.","All four new orders matched the current Peer mobile orderbook APIs and recipient checks. Completed operation retries returned the same deposit instead of creating another.","Earlier Solana USDC tests covered deposits 5962, 5968 and 5970, browser claim recovery and returning unused funds to Solana."],"unverified":["A real fiat payment followed by payment proof and a USDC payout has not been verified in these PayHumans tests.","Taking a PayHumans order inside the Peer mobile app on a physical device, and delivery of its push alerts.","Arbitrum and Optimism ETH, EVM USDC source routes and direct Base USDC funding remain implemented but not funded-tested in this release."]},"docs":{"html":"https://payhumans.ai/docs","llms":"https://payhumans.ai/llms.txt","llmsFull":"https://payhumans.ai/llms-full.txt","npm":"https://www.npmjs.com/package/payhumans-ai-cli"},"attribution":"Independent project. Escrow, payment verification, SDKs and the mobile app are Peer's. Routing by Relay; NEAR Intents for external-wallet native bitcoin."}