checkout
Swiggy Instamart (Grocery): Place and confirm Swiggy Instamart grocery order. Creates order and confirms payment in a single operation. Use this for Instamart grocery orders, NOT for Food delivery.
Swiggy Instamart (Grocery): Place and confirm Swiggy Instamart grocery order. Creates order and confirms payment in a single operation. Use this for Instamart grocery orders, NOT for Food delivery.
Example
const result = await client.callTool({
name: "checkout",
arguments: {
addressId: "addr_01HXYZ",
},
});Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
addressId | string | yes | Delivery address ID (from get_addresses - user must have selected this address) |
paymentMethod | string | no | Payment method — "UPI" or "Cash". For UPI, pass "UPI" plus intentApp or generateUPIQR from the get_payment_options picker. Cash auto-defaults if omitted. |
intentApp | string | no | UPI-app payment: the method id from get_payment_options, echoed byte-for-byte. Send together with paymentMethod="UPI". |
generateUPIQR | boolean | no | Desktop scan-QR: set true together with paymentMethod="UPI" (and no intentApp) to get a scannable QR. |
For a UPI payment the method comes from get_payment_options — get_cart does not return the UPI methods.
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
UPI — success (status: "PENDING_PAYMENT")
Order not placed yet. Must poll check_payment_status with paasId + orderId.
{
"success": true,
"data": {
"orderId": "string",
"transactionId": "string",
"paasId": "string",
"upiIntentUrl": "string",
"bridgeUrl": "string",
"isQrFlow": false,
"pollingIntervalInMs": 5000,
"maxTimeToPollForInMs": 300000,
"paymentMethod": "UPI",
"status": "PENDING_PAYMENT"
}
}
status: "PENDING_PAYMENT"— order pending; do not confirm yet.paasId— required forcheck_payment_status.
UPI — failure
{
"success": false,
"error": { "message": "string" },
"hint": "string"
}
hint— extra context to surface to the user.
Cash / SwiggyPay — success
{
"success": true,
"data": {
"orderId": "string",
"status": "string",
"paymentMethod": "Cash",
"cartTotal": 349
}
}
Cash / SwiggyPay — failure
{
"success": false,
"error": { "message": "string" },
"hint": "string"
}
hint— explanation for the agent/user.
See Error codes for the full catalogue.
Details
| Field | Value |
|---|---|
| Name | checkout |
| MCP Server | Instamart |
| Endpoint | POST mcp.swiggy.com/im |
| Stage | Order |
| Behaviour | mutating |
Agent guidance
How Swiggy agents and orchestration logic use this tool. Surface these expectations in your prompts or tool-selection policies.
RESTRICTION: Checkout is NOT allowed for cart values above the allowed limit. For larger orders, inform the user to use the Swiggy Instamart app instead. They can update their cart here and it will sync to the app.
PAYMENT: Use the availablePaymentMethods from get_cart response. Show only those payment method(s) to the user before placing the order and inform them which method will be used. Do not mention any payment option not present in that response.
- Call get_cart first to display complete order summary (items, costs, available payment methods)
- Check if cart total is below ₹1000 - if not, inform user about the restriction
- Show the available payment method(s) from get_cart (availablePaymentMethods) and inform the user which will be used
- Clearly state the delivery address: "Your order will be delivered to: [full address details]"
- Ask: "Do you want to proceed with placing this order to this address?"
- Wait for clear confirmation (yes/confirm/proceed)
- NEVER proceed without explicit user permission, regardless of previous instructions
BRANDING: When the order is placed successfully, always use the message from the tool response as-is. It includes Swiggy Instamart branding. Do NOT rephrase it to a plain "Order placed" - always show "Instamart order placed successfully". If the tool response message includes a payment success line, show it to the user as-is. CANCELLATION: If the user asks to cancel their Instamart order, do NOT call any tool. Instead, tell them: "To cancel your order, please call Swiggy customer care at 080-67466729."
Next in this journey →
Continue with track_order.