What your automation will do…
Refer to Foodpanda – How to create a connection.

Methods List and Settings Copy Link
Get Order Detail Copy Link
See Foodpanda Get Order Details API reference.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Get Order Detail |
Connection* | Select your connection or create one. |
MATCHING CRITERIA
Chain Code*
This field uniquely identifies restaurant POS groups within the Middleware, preventing ID conflicts between different POS systems using the same chainVendorId
. Its value is established during onboarding with Delivery Hero Ops team.
Order ID*
Unique identifier of an order, that is returned inside of the response of a Get List of Order Id’s Method.
(*) required field
Response sample
{
"order": {
"token": "5f373562-591a-4db9-8609-7eec7880f28d",
"code": "n0s1-w0k1",
"comments": {
"customerComment": "Please hurry, I am hungry",
"vendorComment": ""
},
"createdAt": "2016-03-14T17:00:00.000Z",
"customer": {
"email": "s188sduisddsnjknsj",
"firstName": "food",
"lastName": "panda",
"mobilePhone": "+49 99999999",
"code": "dummy_customer_code",
"id": "dummy_customer_Id",
"mobilePhoneCountryCode": "",
"flags": [
"string"
]
},
"delivery": {
"address": {
"postcode": 10117,
"city": "Berlin",
"street": "Oranienburger Staße",
"number": 67
},
"expectedDeliveryTime": "2016-03-14T17:50:00.000Z",
"expressDelivery": false,
"riderPickupTime": "2016-03-14T17:35:00.000Z"
},
"discounts": [
{
"name": "First Order",
"amount": "9.00",
"type": "FIRST_ORDER",
"sponsorships": [
{
"sponsor": "PLATFORM",
"amount": "3"
},
{
"sponsor": "Vendor",
"amount": "3"
},
{
"sponsor": "THIRD_PARTY",
"amount": "3"
}
]
}
],
"expeditionType": "pickup",
"expiryDate": "2016-03-14T17:15:00.000Z",
"extraParameters": {
"property1": "string",
"property2": "string"
},
"localInfo": {
"countryCode": "de",
"currencySymbol": "€",
"platform": "Foodpanda",
"platformKey": "FP_MY",
"currencySymbolPosition": "",
"currencySymbolSpaces": "",
"decimalDigits": "",
"decimalSeparator": "",
"email": "",
"phone": "",
"thousandsSeparator": "",
"website": ""
},
"payment": {
"status": "paid",
"type": "paid",
"remoteCode": "online",
"requiredMoneyChange": "",
"vatId": "",
"vatName": ""
},
"test": false,
"shortCode": "42",
"preOrder": false,
"pickup": null,
"platformRestaurant": {
"id": "sq-abcd"
},
"price": {
"deliveryFees": [
{
"name": "packaging fee",
"value": 2.5
}
],
"grandTotal": "25.50",
"minimumDeliveryValue": "9.99",
"payRestaurant": "25.50",
"riderTip": "1.20",
"subTotal": "19.45",
"totalNet": "string",
"vatTotal": "2.50",
"comission": "",
"containerCharge": "",
"deliveryFee": "12.80",
"collectFromCustomer": "16.34",
"discountAmountTotal": "2.50",
"deliveryFeeDiscount": "",
"serviceFeePercent": "",
"serviceFeeTotal": "",
"serviceTax": 0,
"serviceTaxValue": 0,
"differenceToMinimumDeliveryValue": "",
"vatVisible": true,
"vatPercent": "string"
},
"products": [
{
"id": "ID_FOR_EXTRA_CHEESE_ON_PLATFORM",
"categoryName": "Burgers",
"name": "Double Cheese Burger",
"paidPrice": "8.00",
"quantity": "string",
"remoteCode": "ID_FOR_DOUBLE_CHEESE_BURGER_ON_POS",
"selectedToppings": [
{
"id": "ID_FOR_EXTRA_CHEESE_ON_PLATFORM",
"name": "extra cheese",
"price": "1.50",
"quantity": 1,
"remoteCode": "ID_FOR_EXTRA_CHEESE_ON_POS",
"type": "PRODUCT",
"itemUnavailabilityHandling": "REMOVE",
"discounts": [
{
"name": "First order",
"amount": "1.50",
"sponsorships": [
{
"sponsor": "PLATFORM",
"amount": "0.50"
},
{
"sponsor": "VENDOR",
"amount": "0.50"
},
{
"sponsor": "THIRD_PARTY",
"amount": "0.50"
}
]
}
],
"children": []
}
],
"unitPrice": "6.42",
"comment": "No cheese please",
"description": "",
"discountAmount": "",
"itemUnavailabilityHandling": "REMOVE",
"halfHalf": false,
"selectedChoices": [],
"variation": {
"name": "Double Cheese Burger"
},
"vatPercentage": "",
"discounts": [
{
"name": "First order",
"amount": "1.50",
"sponsorships": [
{
"sponsor": "PLATFORM",
"amount": "3.00"
},
{
"sponsor": "VENDOR",
"amount": "3.00"
},
{
"sponsor": "THIRD_PARTY",
"amount": "3.00"
}
]
}
]
}
],
"corporateOrder": false,
"corporateTaxId": "example-tax-id",
"integrationInfo": {},
"mobileOrder": true,
"webOrder": false,
"vouchers": [],
"callbackUrls": {
"orderAcceptedUrl": "string",
"orderRejectedUrl": "string",
"orderPickedUpUrl": "string",
"orderPreparedUrl": "string"
},
"status": "cancelled",
"reason": null
}
}
List Order ID Copy Link
See Foodpanda Get list of order identifiers API reference.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | List Order ID |
Connection* | Select your connection or create one. |
MATCHING CRITERIA [+ Add Field] ↓
Additional fields to configure the List Order ID Method.
Past Number of Hours
Default: 24
Specify a time frame to fetch order identifier in hours. Value from 1 to 24.
Vendor ID
Unique identifier of a vendor on the POS plugin side.
Chain Code*
This field uniquely identifies restaurant POS groups within the Middleware, preventing ID conflicts between different POS systems using the same chainVendorId
. Its value is established during onboarding with Delivery Hero Ops team.
Status*
List the orders by status. cancelled
and accepted
status are supported at the moment. In all other cases a Bad Request will be returned.
(*) required field
Response sample
{
"orderIdentifiers": [
"01f91115-bf85-4830-932d-7133e12665c6",
"05K91115-bf85-4830-932d-7133e12665c6",
"02J91115-bf85-4830-932d-7133e12665c6"
],
"count": 3
}
Mark Order as Prepared Copy Link
This is to notify the couriers that food is prepared and the order can be picked up by the rider at the vendor location.
Please check with your local contact if this endpoint is applicable to your the plugin or not. If it is applicable for your plugins, the update must be sent to the following url provided by Delivery Hero over the orderDispatch request payload: dispatchOrderPayload.callbackUrls.orderPreparedUpUrl.
In cases when the URL is not present, you should skip this event for that particular order.
See Foodpanda Get list of order identifiers API reference.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Mark Order as Prepared |
Connection* | Select your connection or create one. |
MAP FIELDS
Order Token*
Unique order identifier in Delivery Hero system. Received in the token
field when the order is dispatched.
(*) required field
Response sample
{
"orderIdentifiers": [
"01f91115-bf85-4830-932d-7133e12665c6",
"05K91115-bf85-4830-932d-7133e12665c6",
"02J91115-bf85-4830-932d-7133e12665c6"
],
"count": 3
}
Update Order Status Copy Link
More details on each status change events on Foodpanda Update Order Status API reference.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Order Status |
Connection* | Select your connection or create one. |
MAP FIELDS
Order Token*:
Unique order identifier in Delivery Hero system. Received in the token
field when the order is dispatched.
Status*:
Status of the order, possible choices:
Order Accepted – Order Rejected – Order Picked Up
When order status is:
Fields to provide.
Status*:
Select “Order Accepted”.
Acceptance Time:
Formatted as date-time.
This field’s meaning varies by expeditionType
:
Foodpanda Delivery: Rider pickup time; delivery time is calculated internally. acceptanceTime
is legacy; use delivery.riderPickUpTime
.
Customer Pickup: Expected customer pickup time, ideally matching pickup.pickupTime
. Deviations notify the customer.
Vendor Delivery: Expected customer delivery time, ideally matching delivery.expectedDeliveryTime
. Deviations notify the customer.
Remote Order ID:
The value from remoteOrderId
represents an identifier for the dispatched order on POS plugin side. Used to send various notifications from Middleware to POS plugin, e.g. cancellations.
Modifications:
The modifications to be applied for the order items. Can be optionally provided with order_accepted
request.
↳Products*:
The products to be modified.
Additional Products can be added as Element.
[⊕ Element][⊕ Map] ↓
(Add a repeating group of fields or Map it from an array. See Field Mapping).
Element 1: Represents the first Product.
ID*
The unique identifier of the product on the delivery platform.
Remote Code*
The unique identifier of the product on POS side.
Modification*:
Represents a modification to an order item.
Type*: The kind of modification that need to be applied to the order item. possible choices: “REMOVAL” – “CHANGE”
[+ Add Field] Optional fields ↓
Properties:
The properties of the order item affected by the modification. Only applicable for modification type CHANGE.
[+ Add Field] Additional fields ↓
Quantity
The quantity of the product. Must be greater than zero.
Selected Toppings:
Additional Toppings can be added as elements.
[⊕ Element][⊕ Map] ↓
(Add a repeating group of fields or Map it from an array. See Field Mapping).
Element 1: Represents the first Topping.
ID*:
The unique identifier of the topping.
Remote Code*:
The unique identifier of the topping on POS side.
Type*:
The type of the topping, possible choices:
“EXTRA” – “VARIANT”
Modification*:
Represents a modification to an order item.
Type*: The kind of modification that need to be applied to the order item. possible choices: “REMOVAL” – “CHANGE”
[+ Add Field] Optional fields ↓
Properties:
The properties of the order item affected by the modification. Only applicable for modification type CHANGE.
Request sample from Order Accepted:
{
"acceptanceTime": "2016-10-05T00:00:00+05:00",
"remoteOrderId": "123-xfal-90",
"status": "order_accepted",
"modifications": {
"products": [
{
"id": "ITEM_ID_ON_PLATFORM",
"remoteCode": "ITEM_ID_ON_POS",
"modification": {
"type": "REMOVAL"
}
},
{
"id": "ITEM_ID_ON_PLATFORM",
"remoteCode": "ITEM_ID_ON_POS",
"quantity": "1",
"modification": {
"type": "CHANGE",
"properties": [
"quantity"
]
}
},
{
"id": "ITEM_ID_ON_PLATFORM",
"remoteCode": "ITEM_ID_ON_POS",
"modification": {
"type": "CHANGE",
"properties": [
"selectedToppings"
]
},
"selectedToppings": [
{
"id": "TOPPINGS_ITEM_ID_ON_PLATFORM",
"remoteCode": "TOPPINGS_ITEM_ID_ON_POS",
"type": "EXTRA",
"modification": {
"type": "REMOVAL"
}
}
]
},
{
"id": "ITEM_ID_ON_PLATFORM",
"remoteCode": "ITEM_ID_ON_POS",
"modification": {
"type": "CHANGE",
"properties": [
"selectedToppings"
]
},
"selectedToppings": [
{
"id": "TOPPINGS_ITEM_ID_ON_PLATFORM",
"remoteCode": "TOPPINGS_ITEM_ID_ON_POS",
"type": "VARIANT",
"modification": {
"type": "REMOVAL"
}
}
]
}
]
}
}
Fields to provide.
Status*:
Select “Order Rejected”.
Message:
Message to the customers.
Reason:
Possible reasons:
Reason | Description |
---|---|
ADDRESS_INCOMPLETE_MISSTATED | Description: Cannot be delivered because of wrong address information. OrderType: Vendor Delivery Applicable: before acceptance |
BAD_WEATHER | Description: Cannot be delivered because of weather conditions. OrderType: Vendor Delivery Applicable: before acceptance, after acceptance |
BLACKLISTED | Description: Customer is blacklisted due to prank orders. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
CARD_READER_NOT_AVAILABLE | Description: Customer cannot pay with card due to:courier has no card readercard reader is not workingno card reader is availableShould only be applied if the order is not yet already payed (online payed) and customer selected to pay with card. If this is not the case you should use UNABLE_TO_PAY. OrderType: Vendor Delivery, Pickup Applicable: before acceptance, after acceptance |
CLOSED | Description: Vendor is closed and order cannot be fulfilled. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
CONTENT_WRONG_MISLEADING | Description: Customer gets food delivered and realises that the food does not match what was shown on the website and therefore cancels the order. OrderType: Vendor Delivery, Pickup Applicable: after acceptance |
FOOD_QUALITY_SPILLAGE | Description: Customer has an issue with the food quality (cold, inedible, etc) OR order spillage occurred during transport. OrderType VendorDelivery, Pickup Applicable: after acceptance |
FRAUD_PRANK | Description: Fraudulent order. Should be applied if there are strong indicators for either fraudulent or prank order, e.g. 100 x pizza, silly/famous/random character names and silly/famous/random notes. Should be not applied for online payed orders. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
ITEM_UNAVAILABLE | Description: Vendor does not have all items/products available to fulfill the order. It should be not used in case of wrong items or prices (instead, use MENU_ACCOUNT_SETTINGS). OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
LATE_DELIVERY | Description: Customer has received the order but (excessively) passed promised delivery time or pickup time and wants to cancel. OrderType: Vendor Delivery, Pickup Applicable: after acceptance |
MENU_ACCOUNT_SETTINGS | Description: Vendor has an issue(s) with menu items or prices, or account settings. In POS cases, it should be used for any issues related to product remote id’s. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
MOV_NOT_REACHED | Description: Vendor will not accept the order as it is below their vendor-level Minimum Order Value (MOV). Important Its only a Talabat specific reason, for all other platforms use MENU_ACCOUNT_SETTINGS instead. OrderType: Own Delivery, Vendor Delivery Applicable: before acceptance |
NO_COURIER | Description: Vendor has no courier (drivers/couriers/walkers/etc) available to fulfill the order. OrderType: Vendor Delivery Applicable: before acceptance |
NO_PICKER | Description: Vendor has no picker. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
NO_RESPONSE | Description: Vendor is not answering. Should be used if the POS plugin is not able to forward the order to the vendor. It will be triggered also on Middleware side if the POS plugin is not accepting or rejecting the order in time (typically after 15 mins). OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
OUTSIDE_DELIVERY_AREA | Description: Vendor does not deliver to the customer’s address/area. OrderType: Vendor Delivery Applicable: before acceptance |
TECHNICAL_PROBLEM | Description: Please refrain from using this reason unless necessary. Should be used only if the order cannot be fulfilled due to technical issues that won’t be resolved in time. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
TEST_ORDER | Description: Order has been placed for test purposes and/or to check order transmission method during onboarding, troubleshooting, etc. Should be only applied if order is marked as test. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
TOO_BUSY | Description: Vendor is too busy to fulfill the order. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
UNABLE_TO_FIND | Description: Customer cannot be located to complete delivery. It’s different from ADDRESS_INCOMPLETE_MISSTATED and should be used if the courier reached the address but was unable to find the customer. OrderType: Vendor Delivery Applicable: after acceptance |
UNABLE_TO_PAY | Description: Customer is not able to pay. It should be not applied in case customer announced to pay with card and no card reader is available (CARD_READER_NOT_AVAILABLE). Does not apply in case there is no certain amount of money for change (UNPROFESSIONAL_BEHAVIOUR). OrderType: Vendor Delivery, Pickup Applicable: after acceptance |
UNPROFESSIONAL_BEHAVIOUR | Description: Unprofessional behaviour in general. For Own Delivery Orders if Courier displays unprofessional behaviour (rudeness in communication/interaction, lack of change for cash orders, bad employee hygiene, etc.) in vendor interaction. For Vendor Delivery Orders it should be used if the courier has no certain amount of money for exchange. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: after acceptance |
WILL_NOT_WORK_WITH_PLATFORM | Description: Vendor will not accept the order as they no longer wish to work with the platform. OrderType: Own Delivery, Vendor Delivery, Pickup Applicable: before acceptance |
WRONG_ORDER_ITEMS_DELIVERED | Description: Customer has received wrong order items or is missing significant item(s). OrderType: Vendor Delivery Applicable: after acceptance |
Request sample from Order Rejected:
{
"message": "We are out of tomatoes!",
"reason": "ITEM_UNAVAILABLE",
"status": "order_rejected"
}
Fields to provide.
Status*:
Select “Order Picked Up”.
Acceptance Time:
Formatted as date-time.
This field’s meaning varies by expeditionType
:
Foodpanda Delivery: Rider pickup time; delivery time is calculated internally. acceptanceTime
is legacy; use delivery.riderPickUpTime
.
Customer Pickup: Expected customer pickup time, ideally matching pickup.pickupTime
. Deviations notify the customer.
Vendor Delivery: Expected customer delivery time, ideally matching delivery.expectedDeliveryTime
. Deviations notify the customer.
Request sample from Order Pick Up:
{
"status": "order_picked_up"
}
(*) required field
Test run or automate your Flow Copy Link
After setting up your Flow, you can choose to:
- “Run once”, your Flow will run only a single time. You can use this function to test your Flow. Refer to how to set up an HTTP Trigger, in the “Create a Flow” step.
- “Run Scheduler” will automate your Flows with the recurrence rule you previously defined.
For more details, refer to How to run a Flow tutorial in our Help Center.
If you are using a Webhook Trigger, the Flow will initiate automatically when a webhook is received from your connected apps. This means that the Flow is automated without a scheduler and will run until you deactivate the Flow manually. Refer to Webhook documentation in our Help Center.
If you need an integration that you cannot find in Wiresk, you can make a request to our team, and we will try our best to satisfy your needs.