Kitchen

Portal do Desenvolvedor

Bem vindo!

Aqui, você vai conhecer o Programa iFood Integra e acessar as documentações de que precisa para iniciar sua integração com nossa plataforma de maneira rápida e segura.

Além disso, vai ter acesso a guias práticos e ao nosso Suporte.

Documentação    

Cadastro    
Suggest Edits

Bem vindo!

 

Atenção!

Se o seu serviço for hospedado em cloud (Google Cloud, AWS, entre outros) Sugerimos que use um endereço de IP fixo. Caso contrario poderá sofrer com bloqueios indesejaveis pela quantidade de chamadas.

Duvidas na nossa API?

Temos uma sessão de suporte! Para acessa-la, você pode clicar aqui ou entrar através da barra acima!

Obrigado pelo interesse em desenvolver com a nossa API de integrações e ajudar a facilitar o dia a dia operação de restaurantes parceiros, que por muitas vezes, tem um fluxo muito grande de pedidos e é necessário uma automação, para uma melhor operação interna e evitar possíveis erros humanos.

Fica a dica!

Para uma melhor navegação entre os tópicos, organizamos a API em níveis. Você pode encontrar as informações facilmente usando a barra de navegação do lado esquerdo da página.

Vamos começar?

 

Getting started

Antes de mais nada, todas as chamadas na nossa API são feitas usando um token Oauth2. Caso você não possua as credenciais para autenticação, basta realizar o cadastro do seu sistema em nossa página de cadastro.

Possuo uma credencial | Não possuo uma credencial

Dica!

Use a barra de navegação a esquerda para encontrar as sessões na documentação facilmente.

Suggest Edits

Credenciais - Client_id, usernames e merchant_id's

 

Credenciais da Software-house (SH)

As credenciais da software deverão ser sempre as mesmas, nunca alterando entre os restaurantes.

Não possui credencial?

Realize o cadastro da sua software-house clicando aqui! Entraremos em contato via e-mail.

Fique de olho!

A credencial identifica a sua Software-house ao iFood, portanto, mantenha sempre a senha segura.

Credenciais do restaurante

As credenciais de restaurante são definidas por grupo. Geralmente elas possuem um único restaurante associado, mas podem ser adicionados mais restaurantes conforme solicitação.

Exemplo:

As credenciais do restaurante podem ser obtidas diretamente com o nosso suporte. Liberamos mediante solicitação e a sua SH esteja classificada como em Produção em nossa base.

Merchant_ID

O merchant_id não é necessário no endpoint oauth/token. Porem seu uso se faz necessário em alguns métodos, como por exemplo o de alteração de preços.

O merchant_id é o identificador único de loja no iFood, ou seja, é o numero que irá identificar um estabelecimento dentro do iFood e está contido dentro do username/password do restaurante.

Exemplo

Merchant_id Usuário
1111 Usuário X
2222 Usuário X
3333 Usuário Y
4444 Usuário Z

No exemplo acima, a credencial de restaurante Usuário X irá receber pedidos dos Merchant's 1111 e 2222 enquanto o Usuário Y receberá do Merchant 3333 e o Usuário Z irá receber do Merchant 4444.

Como conseguir o Merchant_ID de uma loja?

Atualmente, para conseguir obter um merchant_id, existem dois métodos.

  1. Via suporte
    O merchant_id pode ser obtido previamente com o suporte quando solicitar a integração a um determinado restaurante.

  2. Via /order
    É possível receber o merchant_id via order, ele virá em uma string como "id" dentro do array "merchants"

Suggest Edits

Fluxo de confirmação/rejeição de um pedido

 

Confirmação e rejeição de um pedido

No iFood, queremos que o cliente tenha sempre a melhor experiência de compra possível, por isso, temos uma central de apoio exclusiva para tratar os pedidos de forma manual, ou seja, repassar os pedidos em caso de problemas com a transmissão do pedido.

Para que isso ocorra de maneira eficiente, todo pedido novo inserido (PLACED) é esperado que seja confirmado em até 15 minutos, após isso, ele fica disponível para atendimento manual.

Atenção!

15 minutos é um tempo padrão para maioria dos restaurantes, esse tempo pode ser maior, menor ou não existir!

Preferencialmente, o PDV deve realizar a confirmação/rejeição do pedido assim que ele é consumido pelo statuses/order

CUIDADO!

O endpoint events/rejection NÃO cancela o pedido!

Fluxo demonstrando o processo de um pedido dentro da API.

Rejeição de pedidos

Imprevistos acontecem, e temos que estar sempre preparados para eles certo? No caso de um imprevisto na integração do pedido, temos o endpoint para rejeição de pedidos.

Ele funciona como um aviso para a plataforma de que houve um problema ao integrar o pedido, e nesse caso, ele será encaminhado a central de apoio e repassado ao restaurante por telefone, para que o restaurante não perca aquele cliente e o cliente fique satisfeito com o restaurante.

Fique de olho!

O endpoint de rejeição permite inserir o motivo da rejeição para que seja sinalizado e corrigido. Muitas das correções irão acontecer real-time na transmissão do pedido para o restaurante.

Fluxo demonstrando o processo de um pedido dentro da API.

Suggest Edits

Order

Representa um pedido realizado pelo cliente no IFood.

 
{
    "id": "Id de referencia interno",
    "reference": "Id de referencia do pedido",
    "shortReference": "Extranet Id",
    "createdAt": "Timestamp do pedido",
    "type": "Tipo do pedido('DELIVERY' ou 'TOGO')",
    "merchant": {
        "id": "Identificador unico do restaurante⁎",
        "name": "Nome do restaurante",
        "phones": [
            "Telefone do restaurante"
        ],
        "address": {
            "formattedAddress": "Endereço formatado",
            "country": "Pais",
            "state": "Estado",
            "city": "Cidade",
            "neighborhood": "Bairro",
            "streetName": "Endereço (Tipo logradouro + Logradouro)",
            "streetNumber": "Numero",
            "postalCode": "CEP"
        }
    },
    "payments": [   //Forma de pagamento⁎⁎
        {
            "name": "Nome da forma de pagamento",
            "code": "Codigo da forma de pagamento⁎⁎⁎",
            "value": "Valor pago na forma",
            "prepaid": "Pedido pago ('true' ou 'false')",
            "externalCode": "Codigo da forma de pagamento⁎⁎⁎⁎",
            "issuer": "Bandeira"
        },
        {
            "name": "Nome da forma de pagamento",
            "code": "Codigo da forma de pagamento⁎⁎⁎",
            "value": "Valor pago na forma",
            "prepaid": "Pedido pago ('true' ou 'false')",
            "collector": "Recebedor da forma",
            "issuer": "Bandeira"
        }
    ],
    "customer": {
        "id": "Id do cliente",
        "name": "Nome do cliente",
        "taxPayerIdentificationNumber": "CPF/CNPJ do cliente ",
        "phone": "Telefone do cliente",
        "email": "Email do cliente"
    },
    "items": [
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "externalCode": "Código do e-PDV",
            "subItems": [
                {
                    "name": "Nome do item",
                    "quantity": "Quantidade",
                    "price": "Preço",
                    "totalPrice": "Preço total",
                    "discount": "Desconto",
                    "addition": "Adição",
                    "externalCode": "Código do e-PDV"
                }
            ]
        },
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "subItems": [
                {
                    "name": "Nome do item",
                    "quantity": "Quantidade",
                    "price": "Preço",
                    "totalPrice": "Preço total",
                    "discount": "Desconto",
                    "addition": "Adição",
                    "externalCode": "Código e-PDV"
                }
            ]
        },
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "externalCode": "Código do e-PDV",
            "observations": "Observação do item"
        }
    ],
    "subTotal": "Total do pedido(Sem taxa de entrega)",
    "totalPrice": "Total do pedido(Com taxa de entrega)",
    "deliveryFee": "Taxa de entrega",
    "deliveryAddress": {
        "formattedAddress": "Endereço completo do cliente",
        "country": "Pais",
        "state": "Estado",
        "city": "Cidade",
        "coordinates": {
            "latitude": "Latitude do endereço",
            "longitude": "Longitude do endereço"
        },
        "neighborhood": "Bairro",
        "streetName": "Endereço(Tipo logradouro + Logradouro)",
        "streetNumber": "Numero",
        "postalCode": "CEP",
        "reference": "Referencia",
        "complement": "Complemento do endereço"
    },
    "deliveryDateTime": "Timestamp do pedido"
}
{
    "id": "ff80808161091d9601610adffc211dbf",   //Id de referencia interno
    "reference": "5101428012317050",    // Id de referencia do pedido
    "shortReference": "3409",   //Extranet Id
    "createdAt": "2018-01-18T20:05:06.177Z",    //Timestamp do pedido
    "type": "DELIVERY", //Tipo do pedido("DELIVERY" ou "TOGO")
    "merchant": {   //Dados do restaurante
        "id": "10487",  //Identificador unico do restaurante⁎
        "name": "Modelo Area",  //Nome do restaurante
        "phones": [ //Telefone do restaurante
            "(11) 12345679"
        ],
        "address": {    //Endereço
            "formattedAddress": "R Teste",  //Endereço formatado
            "country": "BR",    //Pais
            "state": "AC",  //Estado
            "city": "BUJARI",   //Cidade
            "neighborhood": "OUTROS",   //Bairro
            "streetName": "R Teste",    //Endereço (Tipo logradouro + Logradouro)
            "streetNumber": "100",  //Numero
            "postalCode": "12345678"    //CEP
        }
    },
    "payments": [   //Forma de pagamento⁎⁎
        {
            "name": "VISA", //Nome da forma de pagamento
            "code": "VIS",  //Codigo da forma de pagamento⁎⁎⁎
            "value": 28,    //Valor pago na forma
            "prepaid": true,    //Pedido pago ("true" ou "false")
            "externalCode": "40",   //Codigo da forma de pagamento⁎⁎⁎⁎
            "issuer": "VISA"    //Bandeira
        },
        {
            "name": "Voucher",  //Nome da forma de pagamento
            "code": "VOUCHER",  //Codigo da forma de pagamento⁎⁎⁎
            "value": 8, //Valor pago na forma
            "prepaid": true,    //Pediod pago ("true" ou "false")
            "collector": "IFood",   //Recebedor da forma
            "issuer": "Voucher" //Bandeira
        }
    ],
    "customer": {   //Dados do cliente
        "id": "1751813",    //Id do cliente
        "name": "Teste ifood",  //Nome do cliente
        "taxPayerIdentificationNumber": "01234567890",  //CPF/CNPJ do cliente 
        "phone": "11 - 12345678",  //Telefone do cliente
        "email": "TESTECOMERCIAL@IFOOD.COM.BR"  //Email do cliente
    },
    "items": [  //Itens do pedido
        {
            "name": "X-salada", //Nome do item
            "quantity": 1,  //Quantidade
            "price": 8, //Preço
            "subItemsPrice": 3, //Preço dos subitens
            "totalPrice": 11,   //Preço total
            "discount": 0,  //Desconto
            "addition": 0,  //Adição
            "externalCode": "8",    //Código do e-PDV
            "subItems": [
                {
                    "name": "Bacon",    //Nome do item
                    "quantity": 1,  //Quantidade
                    "price": 3, //Preço
                    "totalPrice": 3,    //Preço total
                    "discount": 0,  //Desconto
                    "addition": 0,  //Adição
                    "externalCode": "13"    //Código do e-PDV
                }
            ]
        },
        {
            "name": "Refrigerante lata",    //Nome do item
            "quantity": 1,  //Quantidade
            "price": 0, //Preço
            "subItemsPrice": 5, //Preço dos subitens
            "totalPrice": 5,    //Preço total
            "discount": 0,  //Desconto
            "addition": 0,  //Adição
            "subItems": [
                {
                    "name": "Coca Cola",    //Nome do item
                    "quantity": 1,  //Quantidade
                    "price": 5, //Preço
                    "totalPrice": 5,    //Preço total
                    "discount": 0,  //Desconto
                    "addition": 0,  //Adição
                    "externalCode": "18"    //Código e-PDV
                }
            ]
        },
        {
            "name": "Pastel de carne",  //Nome do item
            "quantity": 1,  //Quantidade
            "price": 12,    //Preço
            "subItemsPrice": 0, //Preço dos subitens
            "totalPrice": 12,   //Preço total
            "discount": 0,  //Desconto
            "addition": 0,  //Adição
            "externalCode": "6",    //Código do e-PDV
            "observations": "BEM CAPRICHADO!"   //Observação do item
        }
    ],
    "subTotal": 28, //Total do pedido(Sem taxa de entrega)
    "totalPrice": 36,   //Total do pedido(Com taxa de entrega)
    "deliveryFee": 8,   //Taxa de entrega
    "deliveryAddress": {    //Endereço do cliente
        "formattedAddress": "R TESTE, 100", //Endereço completo do cliente
        "country": "BR",    //Pais
        "state": "AC",  //Estado
        "city": "BUJARI",   //Cidade
        "coordinates": {    //Coordenadas do endereço
            "latitude": -9.824359,
            "longitude": -67.950572
        },
        "neighborhood": "OUTROS",   //Bairro
        "streetName": "R TESTE",    //Endereço(Tipo logradouro + Logradouro)
        "streetNumber": "100",  //Numero
        "postalCode": "12345678",   //CEP
        "reference": "teste",   //Referencia
        "complement": "casa x"  //Complemento do endereço
    },
    "deliveryDateTime": "2018-01-18T20:35:06.177Z"  //Timestamp do pedido
}
{
    "id": "ff8080816325fbbe01632770edda09fe",
    "reference": "1618620938441010",
    "shortReference": "8957",
    "createdAt": "2018-05-03T19:18:21.517Z",
    "type": "DELIVERY",
    "merchant": {
        "id": "137086",
        "name": "MODELO AREA 3",
        "address": {
            "formattedAddress": "R Teste",
            "country": "BR",
            "state": "AC",
            "city": "BUJARI",
            "neighborhood": "OUTROS",
            "streetName": "R Teste",
            "streetNumber": "100",
            "postalCode": "12345678"
        }
    },
    "payments": [
        {
            "name": "DINHEIRO",
            "code": "DIN",
            "value": 29.5,
            "prepaid": false,
            "externalCode": "24",
            "changeFor": 100
        }
    ],
    "customer": {
        "id": "1751813",
        "name": "Teste - ifood",
        "taxPayerIdentificationNumber": "12345678901",
        "phone": "11 - 12345678",
        "email": "TESTECOMERCIAL@IFOOD.COM.BR",
        "ordersCountOnRestaurant": 10
    },
    "items": [
        {
            "name": "Pastel de queijo",
            "quantity": 1,
            "price": 5,
            "subItemsPrice": 0,
            "totalPrice": 5,
            "discount": 0,
            "addition": 0,
            "externalCode": "1"
        },
        {
            "name": "Pastel de palmito",
            "quantity": 1,
            "price": 5,
            "subItemsPrice": 0,
            "totalPrice": 5,
            "discount": 0,
            "addition": 0,
            "externalCode": "2"
        },
        {
            "name": "X-burguer bacon",
            "quantity": 1,
            "price": 8,
            "subItemsPrice": 1.5,
            "totalPrice": 9.5,
            "discount": 0,
            "addition": 0,
            "externalCode": "7",
            "subItems": [
                {
                    "name": "Alface",
                    "quantity": 1,
                    "price": 1.5,
                    "totalPrice": 1.5,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "13"
                }
            ]
        }
    ],
    "subTotal": 19.5,
    "totalPrice": 29.5,
    "deliveryFee": 10,
    "deliveryAddress": {
        "formattedAddress": "R TESTE, 100",
        "country": "BR",
        "state": "AC",
        "city": "BUJARI",
        "coordinates": {
            "latitude": -9.824966,
            "longitude": -67.949965
        },
        "neighborhood": "OUTROS",
        "streetName": "R TESTE",
        "streetNumber": "100",
        "postalCode": "12345678",
        "reference": "teste"
    },
    "deliveryDateTime": "2018-05-03T19:38:21.517Z"
}
{
    "id": "ff8080816325fd8d016327739b6e6c02",
    "reference": "1118021938198010",
    "shortReference": "9246",
    "createdAt": "2018-05-03T19:21:17.478Z",
    "type": "DELIVERY",
    "merchant": {
        "id": "137086",
        "name": "MODELO AREA 3",
        "address": {
            "formattedAddress": "R Teste",
            "country": "BR",
            "state": "AC",
            "city": "BUJARI",
            "neighborhood": "OUTROS",
            "streetName": "R Teste",
            "streetNumber": "100",
            "postalCode": "12345678"
        }
    },
    "payments": [
        {
            "name": "VISA",
            "code": "VIS",
            "value": 65.98,
            "prepaid": true,
            "externalCode": "32",
            "issuer": "VISA"
        }
    ],
    "customer": {
        "id": "1751813",
        "name": "Teste - ifood",
        "phone": "11 - 12345678",
        "email": "TESTECOMERCIAL@IFOOD.COM.BR",
        "ordersCountOnRestaurant": 10
    },
    "items": [
        {
            "name": "GRANDE 3 SABORES",
            "quantity": 1,
            "price": 0,
            "subItemsPrice": 55.98,
            "totalPrice": 55.98,
            "discount": 0,
            "addition": 0,
            "externalCode": "25",
            "subItems": [
                {
                    "name": "MASSA TRADICIONAL",
                    "quantity": 1,
                    "price": 6,
                    "totalPrice": 6,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "1000"
                },
                {
                    "name": "1/3 3 QUEIJOS",
                    "quantity": 1,
                    "price": 16.66,
                    "totalPrice": 16.66,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "30"
                },
                {
                    "name": "1/3 MUSSARELA",
                    "quantity": 1,
                    "price": 10,
                    "totalPrice": 16.66,
                    "discount": 0,
                    "addition": 6.66,
                    "externalCode": "32"
                },
                {
                    "name": "1/3 PALMITO",
                    "quantity": 1,
                    "price": 14,
                    "totalPrice": 16.66,
                    "discount": 0,
                    "addition": 2.66,
                    "externalCode": "33"
                }
            ]
        }
    ],
    "subTotal": 55.98,
    "totalPrice": 65.98,
    "deliveryFee": 10,
    "deliveryAddress": {
        "formattedAddress": "R TESTE, 100",
        "country": "BR",
        "state": "AC",
        "city": "BUJARI",
        "coordinates": {
            "latitude": -9.824966,
            "longitude": -67.949965
        },
        "neighborhood": "OUTROS",
        "streetName": "R TESTE",
        "streetNumber": "100",
        "postalCode": "12345678",
        "reference": "teste"
    },
    "deliveryDateTime": "2018-05-03T19:41:17.478Z"
}
{
    "id": "ff8080816325fbbe0163277558bc0ad7",
    "reference": "2718221938434020",
    "shortReference": "9418",
    "createdAt": "2018-05-03T19:23:11.597Z",
    "type": "DELIVERY",
    "merchant": {
        "id": "137086",
        "name": "MODELO AREA 3",
        "address": {
            "formattedAddress": "R Teste",
            "country": "BR",
            "state": "AC",
            "city": "BUJARI",
            "neighborhood": "OUTROS",
            "streetName": "R Teste",
            "streetNumber": "100",
            "postalCode": "12345678"
        }
    },
    "payments": [
        {
            "name": "VISA",
            "code": "VIS",
            "value": 56,
            "prepaid": true,
            "externalCode": "32",
            "issuer": "VISA"
        },
        {
            "name": "Voucher",
            "code": "VOUCHER",
            "value": 10,
            "prepaid": true,
            "collector": "IFood",
            "issuer": "Voucher"
        }
    ],
    "customer": {
        "id": "1751813",
        "name": "Teste - ifood",
        "phone": "11 - 12345678",
        "email": "TESTECOMERCIAL@IFOOD.COM.BR",
        "ordersCountOnRestaurant": 10
    },
    "items": [
        {
            "name": "GRANDE",
            "quantity": 1,
            "price": 0,
            "subItemsPrice": 56,
            "totalPrice": 56,
            "discount": 0,
            "addition": 0,
            "externalCode": "25",
            "subItems": [
                {
                    "name": "BORDA DE CATURPIRY",
                    "quantity": 1,
                    "price": 6,
                    "totalPrice": 6,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "2000"
                },
                {
                    "name": "3 QUEIJOS",
                    "quantity": 1,
                    "price": 50,
                    "totalPrice": 50,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "30"
                }
            ]
        }
    ],
    "subTotal": 56,
    "totalPrice": 66,
    "deliveryFee": 10,
    "deliveryAddress": {
        "formattedAddress": "R TESTE, 100",
        "country": "BR",
        "state": "AC",
        "city": "BUJARI",
        "coordinates": {
            "latitude": -9.824966,
            "longitude": -67.949965
        },
        "neighborhood": "OUTROS",
        "streetName": "R TESTE",
        "streetNumber": "100",
        "postalCode": "12345678",
        "reference": "teste"
    },
    "deliveryDateTime": "2018-05-03T19:43:11.597Z"
}
{
    "id": "ff8080816325fbbe016327768b3e0b16",
    "reference": "5918421938111050",
    "shortReference": "9547",
    "createdAt": "2018-05-03T19:24:29.919Z",
    "type": "DELIVERY",
    "merchant": {
        "id": "137086",
        "name": "MODELO AREA 3",
        "address": {
            "formattedAddress": "R Teste",
            "country": "BR",
            "state": "AC",
            "city": "BUJARI",
            "neighborhood": "OUTROS",
            "streetName": "R Teste",
            "streetNumber": "100",
            "postalCode": "12345678"
        }
    },
    "payments": [
        {
            "name": "CRÉDITO - DINERS (MÁQUINA)",
            "code": "DNREST",
            "value": 50,
            "prepaid": false,
            "externalCode": "3"
        }
    ],
    "customer": {
        "id": "1751813",
        "name": "Teste - ifood",
        "phone": "11 - 12345678",
        "email": "TESTECOMERCIAL@IFOOD.COM.BR",
        "ordersCountOnRestaurant": 10
    },
    "items": [
        {
            "name": "Refrigerante 2 litros",
            "quantity": 1,
            "price": 10,
            "subItemsPrice": 0,
            "totalPrice": 10,
            "discount": 0,
            "addition": 0,
            "externalCode": "17",
            "subItems": [
                {
                    "name": "Coca Cola",
                    "quantity": 1,
                    "price": 0,
                    "totalPrice": 0,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "20"
                }
            ]
        },
        {
            "name": "Marmitex do dia",
            "quantity": 1,
            "price": 15,
            "subItemsPrice": 0,
            "totalPrice": 15,
            "discount": 0,
            "addition": 0,
            "externalCode": "21",
            "subItems": [
                {
                    "name": "Bife grelhado",
                    "quantity": 1,
                    "price": 0,
                    "totalPrice": 0,
                    "discount": 0,
                    "addition": 0,
                    "externalCode": "23"
                },
                {
                    "name": "Sim, por favor",
                    "quantity": 1,
                    "price": 0,
                    "totalPrice": 0,
                    "discount": 0,
                    "addition": 0
                }
            ]
        },
        {
            "name": "Pastel de carne",
            "quantity": 3,
            "price": 5,
            "subItemsPrice": 0,
            "totalPrice": 5,
            "discount": 0,
            "addition": 0,
            "externalCode": "6"
        }
    ],
    "subTotal": 40,
    "totalPrice": 50,
    "deliveryFee": 10,
    "deliveryAddress": {
        "formattedAddress": "R TESTE, 100",
        "country": "BR",
        "state": "AC",
        "city": "BUJARI",
        "coordinates": {
            "latitude": -9.824966,
            "longitude": -67.949965
        },
        "neighborhood": "OUTROS",
        "streetName": "R TESTE",
        "streetNumber": "100",
        "postalCode": "12345678",
        "reference": "teste"
    },
    "deliveryDateTime": "2018-05-03T19:44:29.919Z"
}

⁎ O identificador do restaurante é único. Caso a loja opere como iFood ou Spoonrocket, usarão dois identificadores diferentes
⁎⁎ Pode existir mais de uma. Ex: DIN + CRE
⁎⁎⁎ Ver Formas de pagamento
⁎⁎⁎⁎ Recomendamos usar os nossos, porem, pode ter um código do e-PDV associado

Suggest Edits

Events

Representa um evento no IFood.

 

Pode estar relacionado a várias áreas: orders (confirmação, cancelamento,...), etc

[
  {
    "code": "string", //  e.g: PLACED, CONFIRMED, DELIVERED, DISPATCHED
    "correlationId": "string", // e.g : 784516516548484  
    "createdAt": "2017-04-26T16:43:52.264Z",
    "id": "string" // 51sdw15454fwf1515
  }
]
Suggest Edits

Formas de pagamento

Lista com as formas de pagamento disponiveis.

 

As formas de pagamentos disponíveis no site, lembrando que o campo externalCode em payments pode ser preenchido com a forma disponível no seu e-PDV.

Fique ligado!

O uso dos vouchers é controlado. Para realizar testes com voucher, envie uma solicitação para integracoes@ifood.com.br ou através da nossa página de suporte.

cod_condicao_pgto
descr
nome

VR_SMA

VALE - VR SMART (CARTÃO)

VALE REFEICAO

DNREST

CRÉDITO - DINERS (MÁQUINA)

CARTAO OFFLINE

MEREST

DÉBITO - MASTERCARD (MÁQUINA)

CARTAO OFFLINE

TRE

VALE - TICKET RESTAURANTE (CARTÃO)

VALE REFEICAO

VIREST

DÉBITO - VISA (MÁQUINA)

CARTAO OFFLINE

VVREST

VALE - ALELO REFEIÇÃO / VISA VALE (CARTÃO)

VALE REFEICAO

VOUCHER

VOUCHER

VOUCHER*

DNR

DINERS

CARTAO ONLINE

DIN

DINHEIRO

DINHEIRO

VIS

VISA

CARTAO ONLINE

CHE

CHEQUE

CHEQUE

AM

AMEX

CARTAO ONLINE

MC

MASTERCARD

CARTAO ONLINE

BON

DESCONTO

DESCONTO

RAM

CRÉDITO - AMERICAN EXPRESS (MÁQUINA)

CARTAO OFFLINE

GRNCAR

VALE - GREEN CARD (CARTÃO)

VALE REFEICAO

RSODEX

VALE - SODEXO (CARTÃO)

VALE REFEICAO

VSREST

CRÉDITO - VISA (MÁQUINA)

CARTAO OFFLINE

RDREST

CRÉDITO - MASTERCARD (MÁQUINA)

CARTAO OFFLINE

RHIP

CRÉDITO - HIPERCARD (MÁQUINA)

CARTAO OFFLINE

REC

CRÉDITO - ELO (MÁQUINA)

CARTAO OFFLINE

RED

DÉBITO - ELO (MÁQUINA)

CARTAO OFFLINE

ELO

ELO

CARTAO ONLINE

VALECA

VALE - VALE CARD

VALE REFEICAO

TVER

VALE - VEROCARD (CARTÃO)

VALE REFEICAO

RSELE

VALE - REFEISUL (CARTÃO)

VALE REFEICAO

BANRC

CRÉDITO - BANRICOMPRAS (MÁQUINA)

CARTAO OFFLINE

BANRD

DÉBITO - BANRICOMPRAS (MÁQUINA)

CARTAO OFFLINE

GOODC

CRÉDITO - GOODCARD (MÁQUINA)

CARTAO OFFLINE

VERDEC

CRÉDITO - VERDECARD (MÁQUINA)

CARTAO OFFLINE

PAY

PAYPAL

APP ONLINE

CPRCAR

VALE - COOPER CARD CARTÃO)

VALE REFEICAO

GER_CT

TERMINAL BANCARIA - PAGO CONTRA ENTREGA

CARTAO OFFLINE

GRNCPL

VALE - GREEN CARD (PAPEL)

VALE REFEICAO

VISE

VISA ELECTRON

CARTAO ONLINE

MCMA

MASTERCARD MAESTRO

CARTAO ONLINE

HIPER

HIPERCARD ONLINE

CARTAO ONLINE

  • Pagamento utilizado pelos vouchers.
Suggest Edits

Transição do status dos eventos

 

Ao receber os eventos na API, os pedidos podem passar por diversos status e os mesmos são recebidos no events:polling como forma de confirmação que o evento foi recebido com sucesso. Abaixo segue o fluxo dos eventos.

*O endpoint /order/{reference}/rejection não gera evento.

Suggest Edits

HTTP Status Code

 

Para auxilio na utilização da API, segue a legenda dos status HTTP que podem ser recebidas pelo Client. Para ter uma base de cada evento recebido pela API, você pode se basear nos seguintes códigos.

400 - Bad Request

Geralmente ocorre quando o cliente envia uma requisição contendo um JSON inválido no body, order ou reference inválido ou ausência de campos obrigatórios. (exemplo: event sem o id).

Solução

Verifique o body da requisição, campos obrigatórios e a estrutura da requisição. Caso tenha alguma duvida sobre a composição, pode olhar nos exemplos disponíveis nos próprios endpoints.


401 - Unauthorized

O Unauthorized ocorre por estar tentando realizar uma ação que o e-PDV não tem permissão, no geral, a chamada está correta e faltam as credenciais corretas. O mais comum é que as requisições para as APIs estejam sem o token de acesso ou o token está expirou.

Solução

Obtenha um novo token via /oauth/token antes da utilização das APIs. Caso ainda persista, verifique se o seu token possui permissão para acessar a loja informada.


403 - Forbidden

Ocorre quando o e-PDV não possui permissão de realizar a operação e nova requisição não resultará em sucesso. Exemplo: e-PDV tenta recuperar detalhes de um pedido que não pertence a nenhum restaurante sob seu controle

Solução

Verifique o body da requisição e seus parâmetros. Caso todos os parametros estejam corretos, entre em contato conosco via suporte.


404 - Not found

Não é necessariamente um erro. O servidor pode responder com status 404 quando todos eventos já foram consumidos pelo e-PDV (events:polling). Outra situação onde 404 pode ocorrer é quando o servidor recebe um requisição sobre detalhes de um pedido não existente.

Solução

No caso da referência do pedido ser inválida, reenvie a requisição com a referência correta.

Atenção ao polling!

O endpoint events:polling irá retornar status 404 caso não existam eventos novos.


429 - Too many requests

O e-PDV excedeu o limite de requisições permitidas pelo IFood. Isto é necessário para assegurar a disponibilidade das APIs para todos os e-PDVs. O tempo recomendado para consultas via polling é a cada 45 segundos.

Solução

Reduza a quantidade de requisições e tente novamente.

500 - Internal server error

Mensagem de erro genérica quando uma condição inesperada foi encontrada.

Solução

Contate os administradores do sistema IFood através da página de suporte.


503 - Service unavailable

Indica que a API IFood está tendo problemas para responder as requisições dentro do tempo esperado ou está fora de serviço para manutenção.

Solução

Provavelmente deve-se tratar de uma indisponibilidade temporária e você pode tentar reenviar a requisição. Caso o problema ocorra por mais de 30 minutos, você pode nos contatar através da página de suporte.

200 - Ok

Indica que a requisição foi processada com sucesso, geralmente retornada no events:polling.

201 - Created

Indica que os novos parâmetros foram recebido com sucesso.

202 - Accepted

Indica que o endpoint foi recebido e suas informações foram inseridas com sucesso.

Suggest Edits

Endpoints

 
Suggest Edits

/oauth/token

Emite um token de acesso para comunicação de todos os endpoints, necessário em todas as chamadas da API.

Os parametros do oauth/token são definidos em:

Parâmetro Detalhe Exemplo
client_id A credencial da SH, identifica a SH que está chamando a API. softwarehouse
client_secret Senha da SH •••••••••••••
grant_type Tipo de acesso que está sendo concedido a credencial. Sempre 'password' password
username Credencial do restaurante restaurante
password Senha do restaurante •••••••••••••
 
posthttps://pos-api.ifood.com.br/oauth/token
curl --request POST \
  --url 'https://pos-api.ifood.com.br/oauth/token?client_id=client_id&client_secret=client_secret&grant_type=password'
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/oauth/token',
  qs: 
   { client_id: 'client_id',
     client_secret: 'client_secret',
     grant_type: 'password' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/oauth/token?client_id=client_id&client_secret=client_secret&grant_type=password")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/oauth/token?client_id=client_id&client_secret=client_secret&grant_type=password");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/oauth/token"

querystring = {"client_id":"client_id","client_secret":"client_secret","grant_type":"password"}

response = requests.request("POST", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJzdWIiOiI1MzdmZTc2NC0zMjJkLTQzZGQtOTk2MS00YTdkNjFhMzYxNjMiLCJ1c2VyX25hbWUiOiJQT1MtMzY5NDA3NjU0IiwicHJvZmlsZXMiOiJbe1wiaWRcIjpcIlwiLFwibmFtZVwiOlwiUE9TXCJ9XSIsImlzcyI6ImlGb29kIiwiY2xpZW50X2lkIjoibGVhbmRyb2dvbWVzIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9DTElFTlQiLCJST0xFX1RSVVNURURfQ0xJRU5UIl0sImF1ZCI6WyJraXRjaGVuIiwib2F1dGgtc2VydmVyIl0sInVzZXJfbWV0YWRhdGEiOiIxNjI2NzMiLCJiYWNrb2ZmaWNlcyI6IltdIiwic2NvcGUiOlsidHJ1c3QiLCJyZWFkIiwid3JpdGUiXSwidGVuYW50SWQiOiI1OGQ5MjIxMC00NzYyLTExZTYtYmViOC05ZTcxMTI4Y2FlNzciLCJtZXJjaGFudHMiOiJbe1wibWVyY2hhbnRVdWlkXCI6XCI2YzFmMWM5OS02OGJjLTQ5Y2QtYjk4My1mNjY0ZWZlMGY2ZGJcIixcIm1lcmNoYW50SWRcIjoxMjI5MzN9XSIsImV4cCI6MTUzNjc2MjkwNiwiaWF0IjoxNTM2NzU5MzA2fQ.qhK8SJGkc3vSn-0W9wnzHtfmxjWRk2q9AnavwfWgNEUF8zeqVoVEnA-zdPJh4hck6EmJAQJNmyD7eej5Cz6KRXJeeoCr-pLpa25FyPHGUGhw5cO6wUexogAGMfS0G61lwCn4dlhP6LNXOn_0jZl7IfWiGtMB7gzu0eXKtpE0-PA",
  "token_type": "bearer",
  "expires_in": 3599,
  "scope": "trust read write"
}

Query Params

client_id
string
required
client_secret
string
required
username
string
password
string
grant_type
string
required
 

Não possui credenciais?

Realize o cadastro da sua softwarehouse clicando aqui! Entraremos em contato via e-mail.

Suggest Edits

/events:polling

Obtém todos os eventos ainda não recebidos.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://pos-api.ifood.com.br/v1.0/events%3Apolling
curl --request GET \
  --url https://pos-api.ifood.com.br/v1.0/events%3Apolling
var request = require("request");

var options = { method: 'GET',
  url: 'https://pos-api.ifood.com.br/v1.0/events%3Apolling' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/events%3Apolling")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://pos-api.ifood.com.br/v1.0/events%3Apolling");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/events%3Apolling"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

[
  {
    "code": "PLACED",
    "correlationId": "1234567890012",
    "createdAt": "2017-05-02T16:01:16.567Z",
    "id": "abc-456-afge-451-n15484"
  },
  {
    "code": "CANCELLED",
    "correlationId": "9876543210123",
    "createdAt": "2017-05-02T16:01:16.567Z",
    "id": "kfg-234-34fg-3523-jkf1515"
  }
]
 

Os possiveis status que o polling pode receber são:

code
Descrição

PLACED

Indica um pedido foi colocado no sistema.

CONFIRMED

Indica um pedido confirmado.

INTEGRATED

Indica um pedido que foi recebido pelo e-PDV.

CANCELLED

Indica um pedido que foi cancelado.

DISPATCHED

Indica um pedido que foi despachado ao cliente.

DELIVERED

Indica um pedido que foi entregue.

CONCLUDED

Indica um pedido que foi concluído (Em até duas horas do fluxo normal)*.

*O CONCLUDED é um status automático.

Atenção!

O events:polling recebe apenas o ultimo evento de um pedido! Caso ele receba um novo status, o ultimo será retirado do polling. (Não confundir com um evento de cada vez!)

Suggest Edits

/events/acknowledgment

Após o e-PDV receber os eventos do IFood, para cada evento que o e-PDV conseguiu realizar o parse e integrá-lo com sucesso, o e-PDV deve enviar uma requisição confirmando o recebimento dos eventos.

Recomenda-se que o e-PDV envie uma lista de todos os eventos recebidos com sucesso de uma única vez. Importante salientar que apenas o id do evento é obrigatório.

O IFood processará as notificações e removê-los da fila de eventos do e-PDV.

Na próxima requisição que o e-PDV consulta por novos eventos, os eventos previamente confirmados não farão mais parte da resposta.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/events/acknowledgment
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/events/acknowledgment \
  --header 'Authorization: bearer {acess_token}' \
  --header 'Cache-Control: no-cache' \
  --header 'Content-Type: application/json' \
  --data '[{"id":"Event_id1"},{"id":"Event_id2"},{"id":"Event_id3"},{"id":"Event_id4"}]'
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/events/acknowledgment")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'bearer {acess_token}'
request["Content-Type"] = 'application/json'
request["Cache-Control"] = 'no-cache'
request.body = "[{\"id\":\"Event_id1\"},{\"id\":\"Event_id2\"},{\"id\":\"Event_id3\"},{\"id\":\"Event_id4\"}]"

response = http.request(request)
puts response.read_body
var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://pos-api.ifood.com.br/v1.0/events/acknowledgment",
  "method": "POST",
  "headers": {
    "Authorization": "bearer {acess_token}",
    "Content-Type": "application/json",
    "Cache-Control": "no-cache"
  },
  "processData": false,
  "data": "[{\"id\":\"Event_id1\"},{\"id\":\"Event_id2\"},{\"id\":\"Event_id3\"},{\"id\":\"Event_id4\"}]"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
import requests

url = "https://pos-api.ifood.com.br/v1.0/events/acknowledgment"

payload = "[{\"id\":\"Event_id1\"},{\"id\":\"Event_id2\"},{\"id\":\"Event_id3\"},{\"id\":\"Event_id4\"}]"
headers = {
    'Authorization': "bearer {acess_token}",
    'Content-Type': "application/json",
    'Cache-Control': "no-cache"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/events/acknowledgment',
  headers: 
   { 'Cache-Control': 'no-cache',
     'Content-Type': 'application/json',
     Authorization: 'bearer {access_token}' },
  body: 
   [ { id: 'Event_id1' },
     { id: 'Event_id2' },
     { id: 'Event_id3' },
     { id: 'Event_id4' } ],
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
    "timestamp": "Timestamp",
    "status": 400,
    "error": "Bad Request",
    "exception": "Exception",
    "message": "Bad Request",
    "path": "/events/acknowledgment"
}

Body Params

string

Conteudo recebido em events:polling

Headers

Content-Type
string
required

application/json

 
Suggest Edits

/orders/{reference}

Geralmente, após o e-PDV receber um evento com o código 'PLACED', é necessário obter os detalhes do pedido.

Neste cenário, o campo correlationId do evento refere-se à referência do pedido e deve ser fornecido a este endpoint.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://pos-api.ifood.com.br/v1.0/orders/reference
curl --request GET \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference
var request = require("request");

var options = { method: 'GET',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://pos-api.ifood.com.br/v1.0/orders/reference");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
    "id": "Id de referencia interno",
    "reference": "Id de referencia do pedido",
    "shortReference": "Extranet Id",
    "createdAt": "Timestamp do pedido",
    "type": "Tipo do pedido('DELIVERY' ou 'TOGO')",
    "merchant": {
        "id": "Identificador unico do restaurante⁎",
        "name": "Nome do restaurante",
        "phones": [
            "Telefone do restaurante"
        ],
        "address": {
            "formattedAddress": "Endereço formatado",
            "country": "Pais",
            "state": "Estado",
            "city": "Cidade",
            "neighborhood": "Bairro",
            "streetName": "Endereço (Tipo logradouro + Logradouro)",
            "streetNumber": "Numero",
            "postalCode": "CEP"
        }
    },
    "payments": [   //Forma de pagamento⁎⁎
        {
            "name": "Nome da forma de pagamento",
            "code": "Codigo da forma de pagamento⁎⁎⁎",
            "value": "Valor pago na forma",
            "prepaid": "Pedido pago ('true' ou 'false')",
            "externalCode": "Codigo da forma de pagamento⁎⁎⁎⁎",
            "issuer": "Bandeira"
        },
        {
            "name": "Nome da forma de pagamento",
            "code": "Codigo da forma de pagamento⁎⁎⁎",
            "value": "Valor pago na forma",
            "prepaid": "Pedido pago ('true' ou 'false')",
            "collector": "Recebedor da forma",
            "issuer": "Bandeira"
        }
    ],
    "customer": {
        "id": "Id do cliente",
        "name": "Nome do cliente",
        "taxPayerIdentificationNumber": "CPF/CNPJ do cliente ",
        "phone": "Telefone do cliente",
        "email": "Email do cliente"
    },
    "items": [
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "externalCode": "Código do e-PDV",
            "subItems": [
                {
                    "name": "Nome do item",
                    "quantity": "Quantidade",
                    "price": "Preço",
                    "totalPrice": "Preço total",
                    "discount": "Desconto",
                    "addition": "Adição",
                    "externalCode": "Código do e-PDV"
                }
            ]
        },
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "subItems": [
                {
                    "name": "Nome do item",
                    "quantity": "Quantidade",
                    "price": "Preço",
                    "totalPrice": "Preço total",
                    "discount": "Desconto",
                    "addition": "Adição",
                    "externalCode": "Código e-PDV"
                }
            ]
        },
        {
            "name": "Nome do item",
            "quantity": "Quantidade",
            "price": "Preço",
            "subItemsPrice": "Preço dos subitens",
            "totalPrice": "Preço total",
            "discount": "Desconto",
            "addition": "Adição",
            "externalCode": "Código do e-PDV",
            "observations": "Observação do item"
        }
    ],
    "subTotal": "Total do pedido(Sem taxa de entrega)",
    "totalPrice": "Total do pedido(Com taxa de entrega)",
    "deliveryFee": "Taxa de entrega",
    "deliveryAddress": {
        "formattedAddress": "Endereço completo do cliente",
        "country": "Pais",
        "state": "Estado",
        "city": "Cidade",
        "coordinates": {
            "latitude": "Latitude do endereço",
            "longitude": "Longitude do endereço"
        },
        "neighborhood": "Bairro",
        "streetName": "Endereço(Tipo logradouro + Logradouro)",
        "streetNumber": "Numero",
        "postalCode": "CEP",
        "reference": "Referencia",
        "complement": "Complemento do endereço"
    },
    "deliveryDateTime": "Timestamp do pedido"
}

Path Params

reference
string
required

A referência do pedido

 
Suggest Edits

/orders/{reference}/statuses/integration

Informa ao IFood que o pedido foi integrado pelo e-PDV.

Integração significa que o e-PDV foi capaz de realizar o parse do pedido e integrar em seu sistema.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/integration"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

reference
string
required

A referência do pedido

 
Suggest Edits

/orders/{reference}/statuses/confirmation

Informa ao IFood que o pedido foi confirmado pelo e-PDV.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/confirmation"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

reference
string
required

A referência do pedido

 
Suggest Edits

/orders/{reference}/statuses/dispatch

Informa ao IFood que o pedido saiu para ser entregue ao cliente.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/dispatch"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

reference
string
required

A referência do pedido

 
Suggest Edits

/orders/{reference}/statuses/delivery

Informa ao IFood que o pedido foi entregue ao cliente.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/delivery"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

reference
string
required

A referência do pedido

 
Suggest Edits

/orders/{reference}/statuses/rejection

Informa ao IFood que o pedido foi rejeitado pelo e-PDV.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection
curl --request POST \
  --url https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection
var request = require("request");

var options = { method: 'POST',
  url: 'https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/orders/reference/statuses/rejection"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

reference
string
required

A referência do pedido

Body Params

details
string
required

Detalhes sobre a rejeição do pedido pelo e-PDV.

 
Suggest Edits

/skus/{externalCode}/prices

Este endpoint deve ser usado para atualização de preço de um item do cardápio para N restaurantes.

Atualização de preço funciona por agendamento e cada item deve ter somente um agendamento.
Para aplicar o preço imediatamente a data de inicio deve estar em branco.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
patchhttps://pos-api.ifood.com.br/v1.0/skus/externalCode/prices
curl --request PATCH \
  --url https://pos-api.ifood.com.br/v1.0/skus/externalCode/prices
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://pos-api.ifood.com.br/v1.0/skus/externalCode/prices' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/skus/externalCode/prices")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://pos-api.ifood.com.br/v1.0/skus/externalCode/prices");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/skus/externalCode/prices"

response = requests.request("PATCH", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

externalCode
string
required

Código que identifica o SKU para o restaurante.

Body Params

merchantIds
array of integers
required

Lista com os ids dos restaurantes que terão o preço alterado.

externalCode
string
required

Código que identifica o SKU para o restaurante.

price
double
required

Novo preço do SKU.

startDate
date

Data de vigência do novo preço

 

Duvidas sobre o Merchant_id?

Veja em Credenciais! Lá existe alguns exemplos sobre como funciona.

Suggest Edits

/merchants/{id}/statuses

Altera o status de uma loja especifica.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
puthttps://pos-api.ifood.com.br/v1.0/merchants/id/statuses
curl --request PUT \
  --url https://pos-api.ifood.com.br/v1.0/merchants/id/statuses
var request = require("request");

var options = { method: 'PUT',
  url: 'https://pos-api.ifood.com.br/v1.0/merchants/id/statuses' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/merchants/id/statuses")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://pos-api.ifood.com.br/v1.0/merchants/id/statuses");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/merchants/id/statuses"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

id
string
required

Merchant_id do restaurante a ser indidsponibilizado

Body Params

status
string

Status que será aplicado. Status disponíveis: AVAILABLE, UNAVAILABLE

reason
string

Motivo do status, obrigatório quando o status for UNAVAILABLE.

 

Duvidas sobre o merchant_id?

Veja em Credenciais! Lá existe alguns exemplos sobre como funciona.

Suggest Edits

/merchants/{merchantId}/skus/{externalCode}

Muda status de um produto na plataforma.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
patchhttps://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode
curl --request PATCH \
  --url https://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode");

xhr.send(data);
import requests

url = "https://pos-api.ifood.com.br/v1.0/merchants/merchantId/skus/externalCode"

response = requests.request("PATCH", url)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Path Params

merchantId
string
required

Identificação do restaurante.

externalCode
string
required

Código que identifica o SKU para o restaurante.

Body Params

status
string
required

Valor que representa o status do SKU, valores suportados (AVAILABLE, UNAVAILABLE)

Headers

Content-Type
string
 

Fique atento!

O parametro status só aceita os valores AVAILABLE e UNAVAILABLE; Os mesmos devem ser passados sempre em caixa alta

Duvidas sobre o merchant_id?

Veja em Credenciais! Lá existe alguns exemplos sobre como funciona.