Um pedido contém as seguintes informações:
Campo | Tipo | Descrição |
---|---|---|
id | uuid | Identificador único do pedido |
displayId | string | Id amigável para facilitar a identificação do pedido pela loja. Deve ser exibido na interface do seu aplicativo. |
orderType | enum | tipo de pedido |
orderTiming | enum | momento de entrega do pedido |
salesChannel | string | canal de vendas pelo qual o pedido entra na plataforma (novos canais podem ser adicionados) |
createdAt | date | data de criação do pedido |
preparationStartDateTime | date | recomendação de início do preparo do pedido |
isTest | boolean | indica se é um pedido de teste ou não |
extraInfo | string | informações adicionais sobre o pedido |
Exemplo:
{
"id": "32c15e00-9861-4548-b5f0-15580defc999",
"displayId": "fc999",
"orderType": "DELIVERY / INDOOR / TAKEOUT",
"orderTiming": "IMMEDIATE/SCHEDULED",
"salesChannel": "IFOOD / DIGITAL_CATALOG / POS / ECONOMIC",
"createdAt": "2020-01-01T00:00:00.000Z",
"preparationStartDateTime": "2020-01-01T00:00:00.000Z",
"isTest": false,
"extraInfo": "Pago Online. NÃO LEVAR MÁQUINA",
...
}
Campo | Tipo | Descrição |
---|---|---|
id | uuid | identificador único do merchant (loja) |
name | string | nome do merchant (loja) |
Exemplo:
"merchant": {
"id": "50647eee-5eb6-41a2-b2d8-999998ed677f",
"name": "Nome da Loja"
}
Campo | Tipo | Descrição |
---|---|---|
id | uuid | identificador único do cliente |
name | string | nome do cliente |
documentNumber | -- | número do documento do cliente (cpf) que deve ser utilizado somente para emissão de documento fiscal quando o cliente solicitar, pois o campo é opcional. |
ordersCountOnMerchant | integer | quantidade de pedidos já feito por esse cliente nessa loja. Campo opcional (eventualmente pode ser nulo). |
phone.number | string | número de telefone do cliente ou do 0800 fornecido pelo iFood |
phone.localizer | string | código localizador que deve ser informado ao ligar para o número 0800 |
phone.localizerExpiration | date | data de expiração do localizador do 0800 |
segmentation | string | classificação do cliente quanto à Super-Segmentação (Explorer, Bronze, Silver, Gold, Platinum). Campo opcional. Eventualmente pode não ser retornado. |
Orientação Importante As informações sobre segmentação são confidenciais e não podem, em hipótese alguma, serem reveladas, reproduzidas ou fornecidas a terceiros não autorizados ou clientes finais.
Exemplo:
"customer": {
"id": "50647eee-5eb6-41a2-b2d8-999998ed677f",
"name": "Nome do Cliente",
"documentNumber": "07544829999",
"ordersCountOnMerchant": 8,
"phone": {
"number": "0800 608 1015",
"localizer": "27534642",
"localizerExpiration": "2020-01-01T00:00:00.000Z"
},
"segmentation": "Platinum"
}
Campo phone é opcional O campo phone é opcional, e deixará de ser enviado 3 horas após a data de entrega designada para o pedido. Note que, mesmo durante este período, em alguns pedidos pode acontecer do telefone não ser informado. Caso seja preciso entrar em contato com o cliente, é possível utilizar o chat.
Campo | Tipo | Descrição |
---|---|---|
index | integer | posição/ordem dos itens |
id | uuid | Identificador único do item no catálogo |
uniqueId | uuid | Identificador único do item no pedido (necessário, uma vez que o mesmo item pode aparecer várias vezes no pedido) |
imageUrl | string | url da imagem/foto do item |
externalCode | string | código do item no seu aplicativo (codPDV). É opcional e pode ser configurado no catálogo |
ean | string | código de barras (European Article Number) |
quantity | double | quantidade do item |
unit | string | unidade do item (Ex: UN, g, Kg, ml, L) |
unitPrice | double | preço unitário |
addition | double | Valor adicional que pode ser incluído no valor do item |
price | double | preço do item: price = quantity x (unitPrice + addition) |
scalePrices | object | informações de quantidades e preços para venda em atacado |
optionsPrice | double | preço dos complementos (options) |
totalPrice | double | preço total incluindo os complementos (totalPrice = price + optionsPrice) |
observations | string | observações do pedido. (Ex: "Retirar cebola") Tamanho máximo: 1024 caracteres |
Exemplo:
"items": [
{
"index": 1,
"id": "1bd9cbac-a4a6-497e-953d-e6d0661180d5",
"uniqueId": "092ce140-b809-4a13-b776-31d9792eee99",
"name": "Nome do Produto",
"imageUrl": "https://static-images.ifood.com.br/image/upload/t_high/pratos/4c714577-fe5d-4d31-9531-f9ebb7f89249/202104071957_0mfD_.jpeg",
"externalCode": "2331",
"ean": "7898903529999",
"quantity": 2,
"unit": "UN/G/KG/L/ML",
"unitPrice": 10,
"addition": 0,
"price": 20,
"scalePrices": {
...
},
"optionsPrice": 4,
"totalPrice": 24,
"observations": "Retirar cebola",
"options": [
...
]
}
]
Campo | Tipo | Descrição |
---|---|---|
index | integer | posição/ordem dos complementos |
id | uuid | identificador único do complemento |
name | string | nome do complemento |
externalCode | string | código do complemento no seu aplicativo (codPDV). É opcional e pode ser configurado no catálogo |
quantity | double | quantidade do item |
unit | string | unidade do item (Ex: UN, g, Kg, ml, L) |
unitPrice | double | preço unitário |
addition | double | Valor adicional que pode ser incluído no valor do complemento. (Ex: Para pizzas com mais de um sabor, é possível configurar o catálogo para que seja cobrado o valor do sabor de maior valor. Nesses casos essa é a diferença entre o valor original do sabor de menor valor e o sabor de maior valor). |
price | double | preço do complemento: price = quantity x (unitPrice + addition) |
Exemplo:
"options": [
{
"index": 1,
"id": "3dc09021-be6b-4be6-92a1-15a07b464141",
"name": "Nome do Complemento",
"externalCode": "ABC123",
"quantity": 2,
"unit": "UN/G/KG/L/ML",
"unitPrice": 2,
"addition": 1,
"price": 6
}
]
Campo | Tipo | Descrição |
---|---|---|
defaultPrice | double | Preço padrão do item sem alteração |
scales | array | lista contendo informações de quantidades e preços para venda em atacado |
Exemplo:
"scalePrices": {
"defaultPrice": 20,
"scales": [
...
]
}
Campo | Tipo | Descrição |
---|---|---|
price | double | Preço do item com desconto em atacado |
minQuantity | integer | Quantidade mínima de itens para aplicar desconto |
Exemplo:
"scales": [
{
"price": 15,
"minQuantity": 5
}
]
O usuário do iFood pode receber diversos tipos de cupons de desconto / vouchers para utilizar no aplicativo que chamamos de benefits.
Esses cupons de desconto podem ser subsidiados tanto pelo iFood quanto pelo parceiro. Eles aparecem nos detalhes dos pedidos no campo benefits e o valor do subsídio de cada parte aparece no campo "sponsorship".
Esses cupons podem ser aplicados tanto sobre um item específico, sobre o subtotal dos itens (carrinho) ou sobre a taxa de entrega (target).
Campo | Tipo | Descrição |
---|---|---|
value | double | valor do desconto/incentivo |
target | string | informação sobre onde o desconto será aplicado. |
targetId | string | index do item (items.index) sobre o qual o desconto deve ser aplicado. Somente para os casos em que o target é do tipo ITEM ou PROGRESSIVE_DISCOUNT_ITEM |
sponsorshipValues.name | string | nome do patrocinador desse benefício |
sponsorshipValues.value | double | valor subsidiado pelo patrocinador |
sponsorshipValues.description | double | descrição do patrocinador do desconto para ser exibido no aplicativo ou na comanda impressa |
campaign.id | uuid | identificador único da campanha do respectivo benefício |
campaign.name | string | nome da campanha do respectivo benefício |
Targets
target | Descrição |
---|---|
CART | Desconto é aplicado sobre o subtotal do carrinho (somatório dos itens do pedido). |
DELIVERY_FEE | Desconto é aplicado sobre a taxa de entrega. |
ITEM | Desconto é aplicado sobre um item específico do carrinho. O campo targetId específica sobre qual item o desconto foi aplicado. Essa especificação é feita na configuração da campanha. |
PROGRESSIVE_DISCOUNT_ITEM | Desconto progressivo em itens iguais do pedido, formando um combo. |
Sponsorship
sponsorship | Tratamento |
---|---|
IFOOD | O valor do(s) cupom(ns) deve(m) ser tratado(s) como um tipo de pagamento, pois o iFood fará o repasse desse valor para a loja. |
EXTERNAL | O valor do(s) cupom(ns) deve(m) ser tratado(s) como um tipo de pagamento, pois o iFood fará o repasse desse valor subsidiado pelo parceiro externo para a loja. |
MERCHANT | O valor do(s) cupom(ns) deve(m) ser tratado(s) como um desconto, pois o subsídio nesse caso é de responsabilidade do merchant (loja). |
Exemplo:
"benefits": [
{
"value": 10,
"target": "CART",
"sponsorshipValues": [
{
"name": "IFOOD",
"value": 0,
"description": "Incentivo do iFood"
},
{
"name": "MERCHANT",
"value": 10,
"description": "Incentivo da Loja"
}
],
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
},
{
"value": 4.99,
"target": "DELIVERY_FEE",
"sponsorshipValues": [
{
"name": "EXTERNAL",
"value": 4.99,
"description": "Incentivo da Indústria"
},
{
"name": "MERCHANT",
"value": 0,
"description": "Incentivo da Loja"
}
],
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
},
{
"value": 4.99,
"target": "ITEM",
"targetId": "1",
"sponsorshipValues": [
{
"name": "IFOOD",
"value": 4.99,
"description": "Incentivo do iFood"
},
{
"name": "MERCHANT",
"value": 0,
"description": "Incentivo da Loja"
}
],
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
}
]
Campo | Tipo | Descrição |
---|---|---|
type | string | tipo de taxa (novas taxas podem ser adicionadas e devem ser tratadas como string) |
description | string | descrição do tipo de taxa para ser exibida no aplicativo ou comanda impressa |
fullDescription | string | descrição completa do tipo de taxa para ser exibida no aplicativo ou comanda impressa |
value | double | valor da taxa de serviço |
liabilities | array | lista contendo informações dos responsáveis pela taxa e suas respectivas porcentagens |
liabilities.name | string | responsável por pagar a taxa |
liabilities.percentage | double | porcentagem que o responsável correspondente deve pagar |
Exemplo:
"additionalFees": [
{
"type": "SMALL_ORDER_FEE",
"description": "Taxa de Serviço",
"fullDescription": "Taxa de serviço cobrada quando o valor do pedido é inferior ao pedido mínimo.",
"value": 1.00,
"liabilities": [
{
"name": "IFOOD",
"percentage": 100
}
]
}
]
Tipos de taxas adicionais
type | Descrição |
---|---|
SMALL_ORDER_FEE | taxa de serviço para pedidos abaixo do valor mínimo |
Campo | Tipo | Descrição |
---|---|---|
subTotal | double | somatório do valor dos itens |
deliveryFee | double | valor da taxa de entrega |
benefits | double | somatório dos benefits (cupons de desconto) |
additionalFees | double | somatório das taxas adicionais |
orderAmount | double | valor total do pedido (orderAmount = subTotal + deliveryFee + additionalFees - benefits) |
Exemplo:
"total": {
"subTotal": 50,
"deliveryFee": 10,
"additionalFees": 2,
"benefits": 5,
"orderAmount": 57
}
Campo | Tipo | Descrição |
---|---|---|
prepaid | double | valor que já foi pago (ONLINE) |
pending | double | valor pendente que deve ser cobrado no ato da entrega (OFFLINE) |
methods.value | double | valor do pagamento |
methods.currency | string | moeda |
methods.type | string | tipo de pagamento: ONLINE (pagamento já foi feito online pelo aplicativo e não deve ser cobrado na entrega) ou OFFLINE (pagamento deve ser feito no ato da entrega do pedido) |
methods.method | string | método de pagamento (CASH / CREDIT / DEBIT / MEAL_VOUCHER / FOOD_VOUCHER / GIFT_CARD / DIGITAL_WALLET / PIX / OTHER) |
methods.wallet.name | string | nome da carteira (somente para pagamentos com carteira digital) |
methods.card.brand | string | nome da bandeira do cartão |
methods.cash.changeFor | double | valor do troco |
Valor do desconto maior que o valor total do pedido É possível que o cliente utilize algum benefício (voucher/cupom) de valor maior que o valor total do pedido. Quando isso acontece o valor a ser cobrado fica zerado. Exemplo: valor do pedido = R$ 40,00 e Valor dos cupons = R$ 50,00. Valor a ser cobrado do cliente: R$ 0,00.
Exemplo:
"payments": {
"prepaid": 20,
"pending": 45,
"methods": [
{
"value": 10,
"currency": "BRL",
"type": "ONLINE",
"method": "CREDIT / DEBIT / MEAL_VOUCHER / FOOD_VOUCHER",
"card": {
"brand": "Nome da Bandeira"
}
},
{
"value": 10,
"currency": "BRL",
"type": "ONLINE",
"method": "DIGITAL_WALLET",
"wallet": {
"name": "APPLE_PAY/GOOGLE_PAY/SAMSUNG_PAY"
},
"card": {
"brand": "Nome da Bandeira"
}
},
{
"value": 0.01,
"currency": "BRL",
"method": "PIX",
"type": "ONLINE",
"card": {
"brand": "PIX"
},
}
{
"value": 45,
"currency": "BRL",
"type": "OFFLINE",
"method": "CASH ",
"cash": {
"changeFor": 50
}
}
]
}
Esses campos são exclusivos para pedidos de mercado.
Campo | Tipo | Descrição |
---|---|---|
picker | string | responsável pela separação dos itens do pedido (Ex: DRIVER_SHOPPER). Quando não informado, o próprio merchant é responsável pela separação dos itens e preparo do pedido. |
replacementOptions | string | opções para substituir um item em caso de ruptura (Ex: STORE_CHOOSE_OTHER_ITEMS / STORE_CONTACT_CUSTOMER / STORE_CANCEL_ORDER / STORE_REMOVE_ITEMS) |
Exemplo:
"picking": {
"picker": "DRIVER_SHOPPER",
"replacementOptions": "STORE_CHOOSE_OTHER_ITEMS / STORE_CONTACT_CUSTOMER / STORE_CANCEL_ORDER / STORE_REMOVE_ITEMS"
}
Campo | Tipo | Descrição |
---|---|---|
mode | string | método de entrega do pedido. Valores possíveis: DEFAULT/EXPRESS. DEFAULT: método de entrega padrão; EXPRESS: método de entrega que seja considerada rápida. Atualmente, existem dois tipos: entregas em menos de 15 minutos exclusivas para Darkstores e a entrega prioritária em que o cliente escolhe pagar uma taxa de entrega um pouco maior para ter seu pedido entregue em menor tempo. |
deliveredBy | string | responsável por fazer a entrega: IFOOD (logística iFood) ou MERCHANT (entrega própria) |
pickupCode | string | código de segurança para conferir com o código informado pelo entregador no momento da coleta do pedido |
deliveryDateTime | date | data e horário da entrega |
observations | string | observações sobre a entrega (Ex: "Não tem porteiro. Favor interfonar.") |
deliveryAddress | -- | endereço onde o pedido deve ser entregue |
Exemplo:
"delivery": {
"mode": "DEFAULT / EXPRESS",
"deliveredBy": "IFOOD / MERCHANT",
"deliveryDateTime": "2020-01-01T00:00:00.000Z",
"observations": "Deixar na portaria",
"deliveryAddress": {...},
"pickupCode": "1234"
}
Campo | Tipo | Descrição |
---|---|---|
streetName | string | nome da rua ou avenida |
streetNumber | string | número (Obs: pode conter letras) |
formattedAddress | string | endereço formatado (Rua + Número) |
neighborhood | string | bairro ou setor |
complement | string | complemento (Ex: Apartamento, Quadra, Lote) |
reference | string | ponto de referência |
postalCode | string | código postal (CEP). Campo opcional, eventualmente pode ser enviado zerado |
city | string | cidade |
state | string | estado |
country | string | país |
coordinates.latitude | double | latitude |
coordinates.longitude | double | longitude |
Exemplo:
"deliveryAddress": {
"streetName": "RUA X",
"streetNumber": "20A",
"formattedAddress": "RUA X, 20A",
"neighborhood": "Bairro / Setor",
"complement": "Apto 101",
"reference": "perto da praça",
"postalCode": "99999999",
"city": "SAO PAULO",
"state": "SP",
"country": "BR",
"coordinates": {
"latitude": -26.999999,
"longitude": -48.999999
}
}
Campo | Tipo | Descrição |
---|---|---|
mode | string | modo de retirada: DEFAULT (cliente retira o pedido no balcão) / PICKUP_AREA (cliente vai esperar o pedido em uma vaga especial do estacionamento) |
takeoutDateTime | date | data e hora da retirada do pedido |
observations | string | observações sobre a retirada do pedido |
Exemplo:
"takeout": {
"mode": "DEFAULT / PICKUP_AREA:",
"takeoutDateTime": "2020-01-01T00:00:00.000Z",
"observations": "Observações sobre a retirada"
}
(Observação: serviço indisponível no momento)
Campo | Tipo | Descrição |
---|---|---|
mode | string | modo de retirada: DEFAULT (cliente retira o pedido no balcão) / TABLE (cliente vai esperar o pedido em uma mesa do estabelecimento) |
table | string | número ou código da mesa onde o cliente fez o pedido (somente quando mode = TABLE) |
deliveryDateTime | date | data e hora da entrega ou retirada do pedido |
observations | string | observações sobre a retirada do pedido |
Exemplo:
"indoor": {
"mode": "DEFAULT / TABLE:",
"table": "01",
"deliveryDateTime": "2020-01-01T00:00:00.000Z",
"observations": "Observações sobre a entrega ou retirada"
}
Campo | Tipo | Descrição |
---|---|---|
schedule.deliveryDateTimeStart | date | início do horário (intervalo) agendado |
schedule.deliveryDateTimeEnd | date | fim do horário (intervalo) agendado |
Exemplo:
"schedule": {
"deliveryDateTimeStart": "2020-01-01T00:20:00.000Z",
"deliveryDateTimeEnd": "2020-01-01T01:20:00.000Z"
}
Campo | Tipo | Descrição |
---|---|---|
metadata | map<string,string> | Campo aberto do tipo chave,valor que permite que merchants incluam informações de interesse próprio no pedido |
Pedidos POS
Esses campos geralmente são utilizados em pedidos realizados no canal de vendas próprio do merchant (PDV) e que são enviados para a plataforma via API (salesChannel=POS
)
Exemplo:
"additionalInfo": {
"metadata": {
"codigoInternoPdv": "18bf73f64715",
"nomeVendedor": "João"
}
}
{
"id": "63895716-37c3-4372-afd0-3240bfef708d",
"orderTiming": "IMMEDIATE",
"orderType": "DELIVERY",
"salesChannel": "IFOOD",
"delivery": {
"mode": "ECONOMIC",
"deliveredBy": "IFOOD",
"deliveryDateTime": "2021-02-09T18:10:32Z",
"deliveryAddress": {
"streetName": "Example",
"streetNumber": "1234",
"formattedAddress": "Example St., 1234, Apt. 1234",
"neighborhood": "Examplehood",
"complement": "Apt. 1234",
"reference": "perto da praça",
"postalCode": "12345678",
"city": "Example City",
"state": "Example State",
"country": "BR",
"coordinates": {
"latitude": -2.1059418202311173e141,
"longitude": -49545.71
}
},
"pickupCode": "1234"
},
"displayId": "XPTO",
"createdAt": "2021-02-16T18:10:27Z",
"preparationStartDateTime": "2021-02-09T20:15:13Z",
"merchant": {
"id": "c54bb20a-bce0-4e38-bd4a-fe5f0a7b6b5a",
"name": "Example Merchant"
},
"customer": {
"id": "22587f70-60b4-423c-8cd2-27d288f47f99",
"name": "Example Customer",
"documentNumber": "123456789",
"phone": {
"number": "123456789",
"localizer": "12345678",
"localizerExpiration": "2021-02-09T18:11:07Z"
},
"ordersCountOnMerchant": 1234,
"segmentation": "Gold"
},
"items": [
{
"index": 0,
"id": "f1e48636-4bf0-4656-bce8-0e2214fcd3d4",
"uniqueId": "092ce140-b809-4a13-b776-31d9792eee99",
"name": "Example Item",
"imageUrl": "https://static-images.ifood.com.br/image/upload/t_high/pratos/4c714577-fe5d-4d31-9531-f9ebb7f89249/202104071957_0mfD_.jpeg",
"externalCode": "ex01",
"ean": "12345678910",
"unit": "G",
"quantity": 12,
"unitPrice": 0.12,
"addition": 0,
"price": 1.44,
"optionsPrice": 1.69,
"totalPrice": 3.13,
"observations": "This is an example item.",
"options": [
{
"index": 0,
"id": "acea6ac1-f595-4a6b-af00-cc2f1fa0886a",
"name": "Example Option",
"externalCode": "ex02",
"ean": "12345678911",
"unit": "UN",
"quantity": 13,
"unitPrice": 0.13,
"addition": 0,
"price": 1.69
}
]
}
],
"benefits": [
{
"value": 1.0,
"sponsorshipValues": [
{
"name": "IFOOD",
"value": 0.5
},
{
"name": "MERCHANT",
"value": 0.5
}
],
"target": "CART",
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
},
{
"value": 0.5,
"sponsorshipValues": [
{
"name": "IFOOD",
"value": 0.5
},
{
"name": "MERCHANT",
"value": 0
}
],
"target": "ITEM",
"targetId": "1",
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
},
{
"value": 0.49,
"sponsorshipValues": [
{
"name": "IFOOD",
"value": 0
},
{
"name": "MERCHANT",
"value": 0.49
}
],
"target": "DELIVERY_FEE",
"campaign": {
"id": "42cea1aa-1e23-4741-b48a-300716de08de",
"name": "my campaign name"
}
}
],
"additionalFees": [
{
"type": "SMALL_ORDER_FEE",
"value": 1.0
}
],
"total": {
"subTotal": 3.13,
"deliveryFee": 5.99,
"additionalFees": 1,
"benefits": 1.99,
"orderAmount": 8.13
},
"payments": {
"prepaid": 2.13,
"pending": 5,
"methods": [
{
"value": 5,
"currency": "BRL",
"method": "CASH",
"type": "OFFLINE",
"prepaid": false
},
{
"value": 2.13,
"currency": "BRL",
"method": "MEAL_VOUCHER",
"type": "ONLINE",
"prepaid": true
}
]
},
"picking": {
"picker": "DRIVER_SHOPPER",
"replacementOptions": "STORE_REMOVE_ITEMS"
},
"test": false,
"additionalInfo": {
"metadata": {
"codigoInternoPdv": "18bf73f64715",
"nomeVendedor": "João"
}
}
}
A comanda (versão impressa do pedido) pode ser útil para a operação da loja durante o preparo do pedido e é essencial para que o entregador (entrega própria) possa localizar o endereço do cliente.
Segue template padrão da comanda:
Outros conteúdos que podem ser do seu interesse: