Get paid in UPI.
Prove it.
Your app or your AI agent creates a payment, the customer pays and sends a screenshot, and a bank alert confirms it. No payment gateway, no fees.
{
"mcpServers": {
"upiagent": {
"command": "npx",
"args": ["-y", "upiagent", "mcp"],
"env": { "UPIAGENT_API_KEY": "upi_ak_..." }
}
}
}pay to shop@upi
₹499.37
expires in 20:00
Illustrative. Try a real payment in the demo below.
One payment, four states.
01 · Create the payment
→ upiagent_create_payment({ amount: 499, addPaisa: true })
← pending · pay exactly ₹499.37 · expires in 20 minutes
A unique paisa amount makes this payment matchable against the bank alert later.
02 · Customer pays, sends proof
→ upiagent_submit_payment_proof(paymentId, screenshot)
← checks: success status, exact amount, right payee, after creation, unused UTR
A screenshot is always required first. It is checked, not trusted.
03 · Claimed
→ upiagent_get_payment_status(paymentId)
← claimed · UTR 4128 •••• 9021
The screenshot passed its checks (payee and time count when visible on it). Fine to release low-value goods.
04 · Verified by the bank
→ upiagent_get_payment_status(paymentId)
← verified · bank alert matched UTR and amount
Confirmed by Gmail bank alert or the Android app. Fine for anything.
One payment,
four states.
- 01 Create the payment
- 02 Customer pays, sends proof
- 03 Claimed
- 04 Verified by the bank
- 01 Create the payment. Call upiagent_create_payment({ amount: 499, addPaisa: true }), result pending · pay exactly ₹499.37 · expires in 20 minutes. A unique paisa amount makes this payment matchable against the bank alert later.
- 02 Customer pays, sends proof. Call upiagent_submit_payment_proof(paymentId, screenshot), result checks: success status, exact amount, right payee, after creation, unused UTR. A screenshot is always required first. It is checked, not trusted.
- 03 Claimed. Call upiagent_get_payment_status(paymentId), result claimed · UTR 4128 •••• 9021. The screenshot passed its checks (payee and time count when visible on it). Fine to release low-value goods.
- 04 Verified by the bank. Call upiagent_get_payment_status(paymentId), result verified · bank alert matched UTR and amount. Confirmed by Gmail bank alert or the Android app. Fine for anything.
Let your agent take payments.
upiagent is an MCP server. Add it to Claude, Cursor or any MCP client and your agent can charge, check proof and confirm, without ever holding a bank login.
{
"mcpServers": {
"upiagent": {
"command": "npx",
"args": ["-y", "upiagent", "mcp"],
"env": { "UPIAGENT_API_KEY": "upi_ak_..." }
}
}
}upiagent_create_payment
Create a UPI payment request for the merchant.
upiagent_submit_payment_proof
Check the customer's UPI payment screenshot against a pending payment: success status, exact amount, paid to this merchant, paid after the request was created, and a UTR never used before.
upiagent_get_payment_status
Current status of a payment and its evidence trail (which sources — gmail, notification, screenshot — matched and with what confidence).
upiagent_list_payments
List the merchant's payments, newest first, optionally filtered by status or creation time.
upiagent_cancel_payment
Cancel a pending payment request, e.g. when the customer abandons checkout.
upiagent_get_usage
Today's LLM token usage against the merchant's daily limit.
Illustrative transcript
youCharge ₹499 for the Pro plan.
→upiagent_create_payment { amount: 499, addPaisa: true }
←pending · pay exactly ₹499.37 · expires in 20 minutes
youPaid. Screenshot attached.
→upiagent_submit_payment_proof
←accepted · claimed
→upiagent_get_payment_status
←verified · sending the license key
Release rule: deliver on verified, or on claimed for low-value orders. Never deliver when a proof comes back accepted: false.
Know how much to trust it.
A screenshot is evidence, not proof. upiagent tells you which one you have.
| Status | What it means | Release goods? |
|---|---|---|
| pending | Created, not paid yet. Expires 20 minutes after creation. | Do not release. |
| claimed | A payment screenshot passed its checks: success status, exact amount, unused 12-digit UTR, image never submitted before, and paid to your UPI ID and after the request was created whenever those show on the screenshot. | Fine for low-value goods. |
| verified | Confirmed by bank evidence (Gmail bank alert or the Android notification app). A claimed payment is upgraded to verified when bank evidence arrives. | Fine for anything. |
| expired | Final. The pending payment was not paid within 20 minutes. | Do not release. |
| cancelled | Final. Cancelled before it was paid. | Do not release. |
Two ways the bank says yes.
Gmail bank alerts
Connect the inbox that receives your bank's credit alerts. upiagent matches the alert's UTR and exact amount to a claimed payment and upgrades it to verified.
Android notification app
Install the app on the phone that gets your bank and UPI notifications. It forwards credit notifications, so verification works without email.
You just want to get paid.
A payment gateway
- Business registration
- Current account
- KYC review before you can charge
- A fee on every payment
upiagent
- Your existing UPI ID
- Your existing bank account
- An API key from the dashboard
- 0% fee per payment