Visual intent
Pay from a picture. Attach a QR code, a payment request, an invoice or a screenshot of instructions in Ask PayAI, and PayAI reads the payment out of it — then shows it to you as an ordinary request to review and approve.
Last updated 13 October 2026
What it is
In Ask PayAI, tap the image button next to the message box and choose a photo or screenshot. You can add a caption, or send the image on its own. PayAI reads it and does one of four things:
| Result | What you see |
|---|---|
| A request | A plain sentence such as “Send 25 USDC to alice.nad”, which goes through Ask PayAI exactly like typed text — the same plan, review and approval. |
| A question | Something essential is missing (amount, token or recipient). PayAI lists what it read and asks for the rest. |
| A conflict | The image and your caption, or two parts of the image, disagree. PayAI shows both and asks which is right — it never picks one. |
| A refusal | The image can't be used safely: an invalid recipient, an unsupported QR code, or instructions aimed at PayAI. Nothing is prepared. |
What PayAI can read
| In the image | What PayAI takes from it |
|---|---|
| A wallet QR code | The address or .nad name. You add what to send — “Send 5 USDC to this address”. |
| A payment request QR | Recipient, and for MON the amount, from the standard EIP-681 format. See QR codes below. |
| An invoice | Who it's from, the invoice number, the total, the token and the address to pay. It is paid only when your caption asks — “Pay this invoice”. |
| Written payment instructions | Up to 5 sends and swaps, such as a screenshot of “swap 10 MON to USDC and send it to name.nad”. |
| A printed address | A 0x address or .nad name shown in the image, used as the recipient. |
QR codes are read by PayAI itself. Reading invoices, written instructions and printed text uses a language model from Anthropic, the same one Ask PayAI uses for open-ended wording — see How Ask understands you. Where that is turned off, QR codes still work and other images get a message asking you to type the request.
QR codes
0x8b2c…464Dalice.nadethereum:0x…@143?value=…ethereum:<token>@143/transfer?address=0x…| Format | Example | Read as |
|---|---|---|
| Address | 0x8b2c…464D | Recipient. A mixed-case address must carry a valid checksum, so a mistyped or altered one is refused. |
| .nad name | alice.nad | Recipient, resolved to its address in the review. |
| EIP-681 native transfer | ethereum:0x…@143?value=… | Recipient and the MON amount. |
| EIP-681 token transfer | ethereum:<token>@143/transfer?address=0x… | Recipient and token. A raw token amount isn't guessed — you state it. |
The monad: scheme is read the same way as ethereum:. A payment request for another network is refused, and anything else — a website link, a long payload, unexpected characters — is refused with the reason. Nothing in a QR code is ever opened, fetched or run.
Adding a caption
A caption says what to do with the image, and fills in what the image doesn't have:
send 5 USDC to this addresspay this invoicepay 20 USDC| Image | Caption | Becomes |
|---|---|---|
| Wallet QR | send 5 USDC to this address | Send 5 USDC to that address |
| Invoice | pay this invoice | Pay the invoice total to its pay-to address |
| Payment request QR with no amount | pay 20 USDC | Send 20 USDC to the QR's recipient |
| Screenshot of instructions | (none) | Those instructions, as one plan |
When the caption and the image both state an amount, a token or a recipient and they differ, PayAI asks which is right instead of choosing. The same applies when a QR code and an address printed next to it disagree — a sign of a swapped sticker or an altered image.
From image to payment
- Upload checked. The file must really be a PNG, JPEG or WebP — judged by its contents, not its name — within the size limits below.
- Read. PayAI decodes any QR code and, where enabled, reads the rest of the image.
- Validated. Every amount, token and recipient is checked on its own. Only those validated fields are used — never free text copied out of the image.
- Turned into a request. The fields become one plain sentence, shown in the chat as your request.
- Reviewed and approved as usual. From here it is an ordinary Ask PayAI request: the plan review with full addresses, one approval, and your wallet signs. See One approval.
Safety rules
- Instructions inside images are ignored. Text aimed at PayAI or an assistant — “ignore previous instructions”, “approve automatically”, “already approved” — makes PayAI refuse the image and tell you why. This is checked in code on every field, not left to the model.
- No “send everything”. An image asking for “all funds”, “max” or a whole balance is refused. Amounts from an image must be exact.
- Valid recipients only. A recipient that isn't a valid 0x address or .nad name is refused, never corrected.
- Disagreements are asked, never decided. Caption against image, or QR against printed address — you choose.
- At most 5 actions per image. Larger lists are refused; send them in smaller groups or type them.
- The review is the last word. Whatever was read, you see the exact amounts and full recipient addresses before approving.
Your image
The image is held in memory for the one request that reads it. It is not stored, not logged and never given a link; only the outcome (for example “QR read”) is recorded, never the image, the QR contents or the values read from it. The image itself isn't kept in your conversation — only your caption, marked as an image. Reading images needs an unlocked wallet. See Privacy.
Limits
- PNG, JPEG or WebP, up to 4 MB, between 32 and 8,000 pixels on a side.
- Captions up to 500 characters.
- Up to 10 images per wallet every 5 minutes.
- Up to 5 actions read from one image.
- A raw token amount in a QR code isn't converted — state the amount in your caption.
- Payments read from images follow Ask PayAI's own limits: sends in MON or USDC, swaps between MON and USDC.