get_payment_options
Fetch the live payment options for the current Instamart cart. Renders a payment picker (UPI apps + scan-QR, plus Cash when available) that auto-detects the user's device. Call this when the user is ready to pay.
Fetch the live payment options for the current Instamart cart — the source of truth for what the user can pay with. A single call fetches BOTH device surfaces (mobile UPI apps + desktop scan-QR) and merges them into one payment picker widget that auto-detects the user's device. You do NOT need to ask the user which device they're on. If UPI isn't available for this cart, only Cash is offered.
Example
const result = await client.callTool({
name: "get_payment_options",
arguments: {},
});Parameters
| Parameter | Type | Required | Description |
|---|
This tool takes no parameters — cart context is resolved server-side. get_cart does NOT return the UPI payment methods, so this is the only source of them for Instamart.
Session credentials (user identity, access token) are supplied automatically by the authenticated MCP session - you do not pass them in the tool call. See Authenticate.
Response
All Swiggy MCP tools return:
{
"success": true,
"data": { /* tool-specific payload */ },
"message": "optional human-readable message"
}
The data payload carries the picker model:
{
"success": true,
"data": {
"platforms": {
"mobile": { "methods": [ { "id": "com.google.android.apps.nbu.paisa.user", "label": "Google Pay" } ] },
"desktop": { "methods": [ { "id": "PayWithQR", "label": "Scan QR to pay" } ] }
},
"cod": { "paymentMethod": "Cash", "label": "Cash on Delivery" },
"allMethods": [ /* flat list across surfaces, for text rendering */ ]
},
"message": "human-readable list of payment options"
}
platforms.mobile.methods[]— UPI apps (intent). Each methodidMUST be echoed byte-for-byte intocheckout'sintentAppargument.platforms.desktop.methods[]— desktop scan-QR. SetgenerateUPIQR=trueoncheckout(nointentApp).platformsis omitted when UPI isn't available for this cart; only Cash is then offered viaallMethods.
On failure:
{
"success": false,
"error": { "message": "description of what went wrong" }
}
See Error codes for the full catalogue.
Details
| Field | Value |
|---|---|
| Name | get_payment_options |
| MCP Server | Instamart |
| Endpoint | POST mcp.swiggy.com/im |
| Stage | Payment |
| Behaviour | read-only |
Agent guidance
How Swiggy agents and orchestration logic use this tool. Surface these expectations in your prompts or tool-selection policies.
WHEN TO CALL:
- ALWAYS call this when the user is ready to pay — it renders the picker widget. For Instamart,
get_cartdoes NOT return the UPI payment methods, so this is the ONLY way to obtain them. - When the user explicitly asks "what payment options are available?", wants UPI, or mentions GPay, PhonePe, Paytm, etc.
HANDOFF TO CHECKOUT: The user picks a method in the widget. Pass their choice straight into checkout:
- UPI app →
intentApp= the selected methodid, byte-for-byte. - Desktop scan-QR →
generateUPIQR=true(nointentApp). - Cash → the Cash method from
cod/allMethods.
NPCI compliance: UPI Collect and saved VPAs are not surfaced. Do not attempt to collect a VPA from the user.
Next in this journey →
Continue with checkout to place the order with the selected payment method.