Select
First step in the ONDC transaction flow. Get a quote and pricing for selected items before checkout. Sends a select request to the seller's server. Must be called before init.
Select Items
POST
/ret11/select
Auth Required
Include a Bearer token. See Authentication.
Transaction ID
Generate a unique transactionId (UUID) before calling /select. This same ID must be passed unchanged through /select, /init, and /create-order.
Request Body
| Field | Type | Required | Description & Source |
|---|---|---|---|
| providerId | string | required | From nearby-restaurants response |
| sellerId | string | required | From nearby-restaurants response |
| transactionId | string | required | Client-generated unique transaction ID (UUID format). This same transactionId must be used for all subsequent calls (init, create-order) in this flow. |
| locationIds | string[] | required | Provider location IDs. Example: ["SSL1"] |
| items | array | required | Items to order. See below. |
| gps | string | required | Delivery location GPS. Format: "lat,lng". Example: "12.453534,77.928323" |
| areaCode | string | required | Delivery area pincode. Example: "560001" |
items[]
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | required | Item ID from menu |
| location_id | string | required | Location ID. Example: "SSL1" |
| quantity | number | required | Quantity to order |
| parentItemId | string | optional | For customizable items: parent item grouping ID. Example: "DI1" |
| type | string | optional | "item" or "customization". Required when using customizations. |
| parentCategoryId | string | optional | Customization group ID. Example: "CG11". Required when type is "customization". |
Request Example (simple item)
{
"providerId": "pramaan_provider_1",
"sellerId": "019b9e8e-baeb-7158-8090-14afa4db5c46",
"transactionId": "123f090-48b9-a9c5-6db5be6621dh",
"locationIds": ["SSL1"],
"items": [
{
"id": "id_1cctu3_9_0",
"location_id": "SSL1",
"quantity": 1
}
],
"gps": "12.453534,77.928323",
"areaCode": "560001"
}
Request Example (customizable item)
{
"providerId": "pramaan_provider_1",
"sellerId": "019b9e8e-baeb-7158-8090-14afa4db5c46",
"transactionId": "123f090-48b9-a9c5-6db5be6621dh",
"locationIds": ["SSL1"],
"items": [
{ "id": "id_ancc5_0_0", "parentItemId": "DI1", "location_id": "SSL1", "quantity": 1, "type": "item" },
{ "id": "id_1bai73_1_0", "parentItemId": "DI1", "location_id": "SSL1", "quantity": 1, "type": "customization", "parentCategoryId": "CG11" },
{ "id": "id_55vxa_5_0", "parentItemId": "DI1", "location_id": "SSL1", "quantity": 1, "type": "customization", "parentCategoryId": "CG21" }
],
"gps": "12.453534,77.928323",
"areaCode": "560001"
}
Response
Returns the full ONDC on_select callback data including context, fulfillment options, confirmed items with fulfillment IDs, and a complete price quote.
| Field | Type | Description |
|---|---|---|
| context.transaction_id | string | The transaction ID echoed back |
| context.bpp_id | string | Seller BPP identifier |
| context.bpp_uri | string | Seller BPP URI |
| message.order.fulfillments[] | array | Fulfillment options. Save fulfillments[0].id — required for init. |
| fulfillments[].id | string | Fulfillment ID to pass to init |
| fulfillments[].type | string | "Delivery" or "Self-Pickup" |
| fulfillments[].@ondc/org/TAT | string | Turnaround time. ISO 8601 duration. Example: "PT45M" |
| fulfillments[].@ondc/org/category | string | Fulfillment category. E.g., "Immediate Delivery" |
| fulfillments[].tracking | boolean | Whether real-time tracking is available |
| fulfillments[].state.descriptor.code | string | "Serviceable" = delivery available to your location |
| message.order.items[] | array | Confirmed items, each with an assigned fulfillment_id |
| items[].fulfillment_id | string | Matches fulfillments[].id — echoed back per item |
| message.order.quote.price.value | string | Total order value in INR |
| message.order.quote.breakup[] | array | Line-item price breakdown. Each entry has @ondc/org/title_type: "item", "delivery", or "misc" |
| breakup[].@ondc/org/item_id | string | Item ID this breakup line corresponds to |
| breakup[].item.quantity.available.count | string | Available stock for this item |
| breakup[].item.quantity.maximum.count | string | Maximum orderable quantity |
| message.order.quote.ttl | string | Quote validity duration. Example: "P1D" |
| error | object | undefined | Present only on error. Contains type, code, message. |
Response Example
{
"data": {
"dto": {
"context": {
"country": "IND",
"city": "std:080",
"core_version": "1.2.5",
"domain": "ONDC:RET11",
"timestamp": "2026-06-11T11:29:21.244Z",
"bap_id": "ondc.preprod.highwaydelite.com",
"action": "on_select",
"bap_uri": "https://ondc.preprod.highwaydelite.com/ret11",
"transaction_id": "123f090-48b9-a9c5-6db5be6621dh",
"message_id": "e704ec9d-d031-4502-9b8a-775e0a48b70e",
"bpp_id": "pramaan.ondc.org/beta/preprod/mock/seller",
"bpp_uri": "https://pramaan.ondc.org/beta/preprod/mock/seller"
},
"message": {
"order": {
"fulfillments": [
{
"id": "311249ae-f540-441e-8012-8a19c93561ef",
"type": "Delivery",
"@ondc/org/provider_name": "Pramaan Store 1",
"tracking": true,
"@ondc/org/category": "Immediate Delivery",
"@ondc/org/TAT": "PT10M",
"state": {
"descriptor": {
"code": "Serviceable"
}
},
"end": {
"time": {
"range": {
"start": "2026-06-11T12:29:21.156Z",
"end": "2026-06-11T13:29:21.156Z"
}
}
}
},
{
"id": "f2fd350f-d7ac-4f86-81a1-a9a6be7825d6",
"type": "Delivery",
"@ondc/org/provider_name": "Pramaan Store 1",
"tracking": true,
"@ondc/org/category": "Immediate Delivery",
"@ondc/org/TAT": "PT24H",
"state": {
"descriptor": {
"code": "Serviceable"
}
},
"end": {
"time": {
"range": {
"start": "2026-06-11T13:29:21.156Z",
"end": "2026-06-11T14:29:21.156Z"
}
}
}
},
{
"id": "901e0a57-74f7-49aa-b842-873cded5da79",
"type": "Self-Pickup",
"@ondc/org/provider_name": "Pramaan Store 1",
"tracking": false,
"@ondc/org/category": "Takeaway",
"@ondc/org/TAT": "PT24H",
"state": {
"descriptor": {
"code": "Serviceable"
}
}
},
{
"id": "3c60c72b-5f3b-4117-9331-5de17aaf3e2e",
"type": "Buyer-Delivery",
"@ondc/org/provider_name": "Pramaan Store 1",
"tracking": false,
"@ondc/org/category": "Immediate Delivery",
"@ondc/org/TAT": "PT15M",
"state": {
"descriptor": {
"code": "Serviceable"
}
},
"tags": [
{
"code": "order_details",
"list": [
{
"code": "weight_unit",
"value": "kilogram"
},
{
"code": "weight_value",
"value": "3.0"
},
{
"code": "dim_unit",
"value": "centimeter"
},
{
"code": "length",
"value": "1.0"
},
{
"code": "breadth",
"value": "1.0"
},
{
"code": "height",
"value": "1.0"
}
]
}
]
}
],
"items": [
{
"id": "id_1cctu3_9_0",
"quantity": {
"count": 1
},
"fulfillment_id": "311249ae-f540-441e-8012-8a19c93561ef"
}
],
"quote": {
"price": {
"currency": "INR",
"value": "362.00"
},
"breakup": [
{
"@ondc/org/item_id": "id_1cctu3_9_0",
"title": "Double Patty Cheese Burger",
"@ondc/org/item_quantity": {
"count": 1
},
"@ondc/org/title_type": "item",
"price": {
"currency": "INR",
"value": "265.00"
},
"item": {
"quantity": {
"available": {
"count": "99"
},
"maximum": {
"count": "99"
}
},
"price": {
"currency": "INR",
"value": "265"
}
}
},
{
"@ondc/org/item_id": "311249ae-f540-441e-8012-8a19c93561ef",
"title": "Delivery charges",
"@ondc/org/title_type": "delivery",
"price": {
"currency": "INR",
"value": "40"
}
},
{
"@ondc/org/item_id": "311249ae-f540-441e-8012-8a19c93561ef",
"title": "Tax",
"@ondc/org/title_type": "tax",
"price": {
"currency": "INR",
"value": "5"
},
"item": {
"tags": [
{
"code": "quote",
"list": [
{
"code": "type",
"value": "fulfillment"
}
]
}
]
}
},
{
"@ondc/org/item_id": "901e0a57-74f7-49aa-b842-873cded5da79",
"title": "Delivery charges",
"@ondc/org/title_type": "delivery",
"price": {
"currency": "INR",
"value": "0"
}
},
{
"@ondc/org/item_id": "901e0a57-74f7-49aa-b842-873cded5da79",
"title": "Packing charges",
"@ondc/org/title_type": "packing",
"price": {
"currency": "INR",
"value": "25"
}
},
{
"@ondc/org/item_id": "901e0a57-74f7-49aa-b842-873cded5da79",
"title": "Tax",
"@ondc/org/title_type": "tax",
"price": {
"currency": "INR",
"value": "2"
},
"item": {
"tags": [
{
"code": "quote",
"list": [
{
"code": "type",
"value": "fulfillment"
}
]
}
]
}
},
{
"@ondc/org/item_id": "3c60c72b-5f3b-4117-9331-5de17aaf3e2e",
"title": "Delivery charges",
"@ondc/org/title_type": "delivery",
"price": {
"currency": "INR",
"value": "0"
}
},
{
"@ondc/org/item_id": "3c60c72b-5f3b-4117-9331-5de17aaf3e2e",
"title": "Packing charges",
"@ondc/org/title_type": "packing",
"price": {
"currency": "INR",
"value": "25"
}
}
],
"ttl": "PT6H"
},
"provider": {
"id": "pramaan_provider_1",
"locations": [
{
"id": "SSL1"
}
]
}
}
}
},
"status": "ACK"
}
}
Save the Fulfillment ID
The fulfillments[].id from this response must be passed to the init endpoint in both the fulfillment.fulfillmentId field and each item's fulfillmentId field.