For pickup (Takeout) Let customers pick up orders at counter, drive-thru, or special spot instead of delivery to optimize logistics and improve customer experience.
What is takeout Takeout is when a customer picks up their order at your establishment instead of delivery. It works with: Counter: Customer picks up at front counter (mode = "DEFAULT")Drive-thru: Customer picks up without leaving carParking spot: Customer parks in designated area (mode = "PICKUP_AREA")Critical difference: Don't use /dispatch for takeout. Use /readyToPickup when ready.
Identify takeout Check orderType in order structure:
{
"orderType" : "TAKEOUT" ,
"takeout" : {
"mode" : "DEFAULT" ,
"takeoutDateTime" : "2024-04-25T18:30:00Z"
}
} Field Meaning orderType = "TAKEOUT"Customer picks up (no delivery) mode = "DEFAULT"Counter pickup mode = "PICKUP_AREA"Reserved spot or drive-thru takeoutDateTimeEstimated pickup time
Complete flow 1. Receive and confirm Confirm within 8 minutes. See confirmation deadline .
curl -X POST "https://merchant-api.ifood.com.br/order/v1.0/orders/{id}/confirm" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" Response: 202 Accepted
2. Prepare by timing Check orderTiming to know when to prepare:
{
"orderTiming" : "IMMEDIATE" // or "SCHEDULED"
} IMMEDIATE: Prepare immediately after confirming (for soon pickup)SCHEDULED: Respect takeoutDateTime — don't start early. Learn more about scheduled orders
3. Notify ready When preparation is done:
curl -X POST "https://merchant-api.ifood.com.br/order/v1.0/orders/{id}/readyToPickup" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" Response: 202 AcceptedSystem notifies customer order is ready via push/SMS.
4. Manage pickup spots (PICKUP_AREA only) If mode = "PICKUP_AREA", you'll receive event:
{
"code" : "PICKUP_AREA_ASSIGNED" ,
"metadata" : {
"pickupAreaCode" : "A5" ,
"pickupAreaDescription" : "Reserved spot near entrance"
}
} Actions: Print/display spot number on receipt Tell customer which spot to use Place clear signage at spot
Timing and deadlines Action Deadline Receive CONFIRMED Immediately Confirm 8 minutes max Prepare After confirming Notify ready When done Customer picks up No limit (after notified)
If you don't confirm in 8 minutes, iFood cancels automatically even for takeout.
For SCHEDULED For scheduled orders, respect customer's time:
{
"orderTiming" : "SCHEDULED" ,
"takeout" : {
"takeoutDateTime" : "2024-04-25T19:30:00Z"
},
"scheduled" : {
"preparationStartDateTime" : "2024-04-25T19:15:00Z"
}
} Rule: Call /readyToPickup near takeoutDateTime, not before.
POS integration Print receipt Include on receipt:
═════════════════════════
ORDER FOR PICKUP
═════════════════════════
ID: #12345
Customer: John Silva
[ITEMS]
- Burger x1
- Soft Drink x1
- Fries x1
Pickup time: 18:30
Spot: A5 (if applicable)
═════════════════════════
Printed at: HH:MM
Ready at: HH:MM
═════════════════════════ Map states to your POS iFood State Your POS Action PLACED Awaiting confirmation Show on screen CONFIRMED Preparing Send to kitchen READY_TO_PICKUP Ready Notify counter DISPATCHED Picked up Mark done CONCLUDED Finished Archive
Self-service (Totem/Kiosk) For category = "FOOD_SELF_SERVICE" (kiosks, totems): TAKEOUT: Customer takes order
{
"category" : "FOOD_SELF_SERVICE" ,
"orderType" : "TAKEOUT"
} → Pack for takeaway DINE_IN: Customer eats on-site
{
"category" : "FOOD_SELF_SERVICE" ,
"orderType" : "DINE_IN"
} → Prepare for on-site consumption Both follow same confirm and readyToPickup flow.
Cancellation Customer wants to cancel pickup?
curl -X POST "https://merchant-api.ifood.com.br/order/v1.0/orders/{id}/requestCancellation" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "504"
}' You'll receive CANCELLED event confirming:
{
"code" : "CANCELLED" ,
"metadata" : {
"reason" : "504" ,
"cancelReason" : "Cancelled by customer"
}
}
Common scenarios
18:00 → Customer orders via app
18:01 → You receive CONFIRMED
18:02 → Confirm order
18:03 → Receipt prints to kitchen
18:10 → Preparation done
18:11 → Notify /readyToPickup
18:12 → Customer gets push "your order is ready"
18:15 → Customer picks up at counter Scenario 2: Scheduled takeout at drive-thru
16:00 → Customer schedules for 19:00
16:01 → You receive CONFIRMED + PICKUP_AREA_ASSIGNED (spot D2)
16:02 → Confirm order
18:55 → System alerts: start prep for 19:00
18:55 → Receipt prints
19:10 → Preparation done
19:15 → Notify /readyToPickup (15 min early to be ready)
19:00 → Customer arrives at spot D2 and picks up Scenario 3: Self-service totem
17:30 → Customer buys at totem for pickup
17:31 → CONFIRMED arrives automatically
17:32 → Confirm
17:33 → System sends to assembly area
17:40 → Customer picks up directly from totem tray
Was this page helpful? Yes No
Rate your experience in the new Developer portal: Rate now