Security
How PayAI keeps funds and keys honest.
PayAI, operated by UsePayAI at usepayai.xyz, is non-custodial for interactive payments and trades: you hold the keys, you approve the transaction, and settlement is a real Monad transaction anyone can look up. This page is the model — including the two places it is not that simple.
Last updated 20 September 2026
01The model
You connect a wallet you control. For interactive payments and trades, PayAI proposes a transaction; your wallet signs it; Monad settles it. PayAI never asks for a seed phrase. An embedded PayAI Wallet is derived on-device from your passkey. An external wallet (MetaMask and the rest) signs the same way it always has.
Every settled payment has a transaction hash. There is no simulated “success” on mainnet. If it did not land on Monad, it did not happen.
02Two exceptions
Two paths cannot wait for you to click Approve. We do not pretend they are the same as the rest of the app.
Payment Automations. Because you are not there to sign each run, they settle through a dedicated agent wallet bounded by per-transaction and daily limits enforced on-chain in PaymentExecutor — not just in application code. Wallet Automation pulls from an ERC-20 allowance you approved. Reserved Funds sit in AutomationVault, which can only pay the committed recipient or refund you. See Automations.
Telegram trading bot. If you use the bot, PayAI generates a hot wallet for that chat and stores the key encrypted at rest so trades can sign from Telegram. That path is custodial. Do not send it more than you are willing to trust to a bot. Withdraw anytime with /withdraw. See Telegram bot.
03Safeguards
- Your signature — interactive payments cannot move without it.
- Replay protection — each payment carries a request id the contract marks as used, so a retry cannot settle twice.
- On-chain spend caps — per-transaction and daily limits for the agent path are enforced by PaymentExecutor.
- Sanctions screening — recipients are checked against the OFAC SDN digital-currency address list. This is address screening, not a licensed KYC/AML programme.
- Typed trades — interactive swaps go through PayAITradeExecutor with allowlisted venues, not arbitrary calldata from the model.
04Independent review
In August 2026 the PayAI contracts completed the DeltaV × Ultrafuzz protocol security program. That review found no critical vulnerability that could drain user funds. Medium and low findings — fee-on-transfer accounting, a sender-surcharge vault gap, native request lifecycle, and registrar privilege — were patched and redeployed.
Ultrafuzz is an independent protocol review, not a full commercial audit of the application. A formal third-party audit remains on the roadmap.
05Live contracts
Deployed PayAI contracts are verified on the Monad explorer. The application source repository is private — we will not link a 404 and call it public. What you can verify today is every live contract and every transaction. Addresses are read live from this deployment, not copied from a screenshot.
Loading live contract addresses…
Full context: Contracts.
06Browser security
Every response sets frame-ancestors none, HSTS, and a Content-Security-Policy that pins connect-src to this origin and the Monad RPCs so injected script cannot exfiltrate a key over fetch. Two honest limits: Next.js still requires script-src unsafe-inline (no nonce middleware yet), and token logos load from arbitrary HTTPS URLs. The embedded wallet keeps a live key in the page — XSS containment matters more here than on a brochure site.
07What PayAI never does
- Ask for your seed phrase
- Move interactive funds without your signature
- Let the automation agent exceed the on-chain caps you authorized
- Sell your payment history
08Report a vulnerability
If you find a security issue, email security@usepayai.xyz with details and steps to reproduce. Do not open a public issue for anything exploitable. We aim to acknowledge within 48 hours.
Product questions go to in-app support or support@usepayai.xyz.