---
title: "Resumo de pedidos"
description: "GET /v1/orders/summary — quantidade, faturamento e ticket médio dos pedidos do período na API BeeFood."
method: "GET"
path: "/v1/orders/summary"
url: "https://developer.beefood.com.br/docs/pedidos/resumo"
group: "Relatórios"
scope: "orders:read"
lang: "pt"
---
# Resumo de pedidos

`GET /v1/orders/summary`

- Produção: `https://api.beefood.app/v1/orders/summary`
- Sandbox: `https://api-sandbox.beefood.app/v1/orders/summary`

Retorna quantidade, faturamento e ticket médio dos pedidos do período, sem a lista.

## Autenticação

Envie o access token no header `Authorization: Bearer <accessToken>`. Escopo necessário: `orders:read`. Limite: 15 requisições por minuto.



## Parâmetros de query

- `saleDateFrom` *string (yyyy-mm-dd)* **obrigatório** — Início do período da data de venda. O intervalo entre saleDateFrom e saleDateTo não pode passar de 6 meses. Exemplo: `"2026-03-01"`.

- `saleDateTo` *string (yyyy-mm-dd)* **obrigatório** — Fim do período da data de venda. O intervalo entre saleDateFrom e saleDateTo não pode passar de 6 meses. Exemplo: `"2026-03-31"`.

- `orderType` *string* — Tipo do pedido. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:DELIVERY"`.
  - *Valores:* `TABLE`, `DELIVERY`, `PDV`

- `orderStatus` *string* — Status do pedido; sem filtro, entram OPEN, RECEIVED e CLOSED. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"notIn:CANCELLED"`.
  - *Valores:* `OPEN`, `RECEIVED`, `CLOSED`, `GROUPED`, `CANCELLED`

- `deliveryType` *string* — Modalidade da entrega. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:TAKEOUT"`.
  - *Valores:* `DELIVERY`, `TAKEOUT`, `DINE_IN`

- `deliveryStatus` *string* — Status da entrega. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"notIn:CANCELLED"`.
  - *Valores:* `WAITING`, `ACCEPTED`, `PREPARING`, `READY`, `DISPATCHED`, `DELIVERED`, `CANCELLED`

- `salesChannel` *string* — Canal de venda. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"notIn:IFOOD,99FOOD"`.
  - *Valores:* `IFOOD`, `99FOOD`, `KEETA`, `AIQFOME`, `RAPPI`, `DELIVERYMUCH`, `UAIRANGO`, `TOTEM`, `WHATSAPP`, `DIGITAL_MENU`, `MANUAL`, `EXTERNAL`

- `merchantId` *string* — IDs de filial (inteiros maior ou igual a 1). Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:10,11"`.

- `customerId` *string* — IDs de cliente (inteiros maior ou igual a 1). Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"notIn:77"`.

- `documentNumber` *string* — CPF/CNPJ; só os dígitos contam. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:12345678900"`.

- `email` *string* — E-mail do cliente, sem diferenciar maiúsculas. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:ana@exemplo.com,bia@exemplo.com"`.

- `phone` *string* — Telefone do cliente; só dígitos, busca por trecho. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"in:11999990000"`.

- `couponCode` *string* — Código do cupom, sem diferenciar maiúsculas. Formato `in:v1,v2` ou `notIn:v1,v2`; sem operador vale `in`. Exemplo: `"notIn:BEMVINDO"`.

- `commandCode` *integer | integer[]* — Filtra pelo código da comanda. Exemplo: `12`.

- `tableCode` *integer | integer[]* — Filtra pelo código da mesa. Exemplo: `5`.




## Exemplos de requisição

### cURL

```bash
curl -X GET "https://api.beefood.app/v1/orders/summary?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&orderType=DELIVERY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```


## Exemplos de resposta

### 200 OK

```json
{
  "orderCount": 2,
  "totalRevenue": 150,
  "averageOrderValue": 75
}
```


## Campos da resposta

- `orderCount` *integer* — Quantidade de pedidos.

- `totalRevenue` *number* — Soma de orderAmount, 2 casas.

- `averageOrderValue` *number* — Ticket médio; 0 sem pedidos.


## Filtros

Todo filtro segue o formato `campo=operador:valor1,valor2`. Sem operador, vale `in`: `orderStatus=OPEN,CANCELLED` é o mesmo que `orderStatus=in:OPEN,CANCELLED`.

| Operador | Significado | Exemplo |
|---|---|---|
| `in` (padrão) | o campo é um dos valores (OU) | `orderStatus=in:OPEN,CANCELLED` |
| `notIn` | o campo não é nenhum dos valores | `orderStatus=notIn:CLOSED,RECEIVED` |

Campos: `orderStatus`, `orderType`, `deliveryType`, `deliveryStatus`, `salesChannel`, `customerId`, `merchantId`, `documentNumber`, `email`, `phone` e `couponCode` — todos aceitam `in` e `notIn`.

### Regras

- Cada campo aparece uma vez só; chave repetida responde `400`. Por isso não dá para usar `in` e `notIn` no mesmo campo.
- A vírgula sempre separa valores; não é possível filtrar um valor com vírgula.
- O operador é o trecho antes do primeiro `:`. Para um valor com `:`, informe o operador: `couponCode=in:PROMO:10`.
- Operador e enums não diferenciam maiúsculas (`IN:open` = `in:OPEN`).
- Valor vazio (`orderStatus=` ou `orderStatus=in:`) equivale a não enviar o filtro.
- Valores do mesmo campo combinam com OU; campos diferentes, com E.
- `notIn` em `customerId`, `documentNumber`, `email`, `phone` e `couponCode` mantém pedidos sem cliente ou sem cupom.

### Status do pedido

- Sem `orderStatus`, entram só `OPEN`, `RECEIVED` e `CLOSED`.
- `orderStatus=in:…` substitui o padrão; `orderStatus=notIn:…` parte de todos os status.
- Pedidos `GROUPED` nunca entram.

### Exemplos de filtros

`GET /v1/orders/summary?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&orderType=DELIVERY` — `in` implícito: só pedidos de delivery.

`GET /v1/orders/summary?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&orderStatus=in:OPEN,CANCELLED` — pedidos abertos ou cancelados.

`GET /v1/orders/summary?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&orderStatus=notIn:CANCELLED` — todos os status menos cancelados.

`GET /v1/orders/summary?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&salesChannel=notIn:IFOOD,99FOOD` — todos os canais menos iFood e 99Food.

`GET /v1/orders/summary/grouped?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&groupBy=salesChannel&orderType=in:DELIVERY&deliveryStatus=notIn:CANCELLED` — delivery e não cancelado na entrega, agrupado por canal.

`GET /v1/orders/summary/sectors?saleDateFrom=2026-09-01&saleDateTo=2026-09-30&merchantId=in:10,11&customerId=notIn:77` — filial 10 ou 11, e cliente diferente de 77.

### Quero → Query

| Quero | Query |
|---|---|
| Padrão (abertos, recebidos e fechados) | sem `orderStatus` |
| Só cancelados | `orderStatus=CANCELLED` |
| Abertos e cancelados | `orderStatus=in:OPEN,CANCELLED` |
| Tudo, inclusive cancelados | `orderStatus=in:OPEN,RECEIVED,CLOSED,CANCELLED` |
| Tudo menos cancelados | `orderStatus=notIn:CANCELLED` |
| Delivery, exceto iFood e 99Food | `orderType=DELIVERY&salesChannel=notIn:IFOOD,99FOOD` |
| Duas filiais | `merchantId=in:10,11` |
| Todas as filiais menos uma | `merchantId=notIn:12` |
| Pedidos sem o cupom X | `couponCode=notIn:BEMVINDO` |


## Erros

| Status | Mensagem |
| --- | --- |
| 400 | 'saleDateFrom' is required |
| 400 | 'saleDateFrom' must be a date (yyyy-mm-dd) |
| 400 | 'saleDateFrom'..'saleDateTo' must span at most 6 months |
| 400 | 'orderStatus' must be sent once; use orderStatus=in:value1,value2 |
| 400 | 'orderStatus' operator must be one of: in, notIn |
| 400 | 'orderStatus' must be one of: OPEN, RECEIVED, CLOSED, GROUPED, CANCELLED |
| 400 | 'merchantId' must be a positive integer |
| 401 | Authentication token is missing |
| 401 | Invalid or expired access token |
| 403 | This credential does not include the orders:read scope |
| 429 | Too Many Requests |


## Vocabulários usados neste endpoint

## Pedidos · orderStatus

| Valor | Significado | Uso |
| --- | --- | --- |
| `OPEN` | Aberto | Lista e detalhe de pedidos |
| `RECEIVED` | Recebido | Lista e detalhe de pedidos |
| `GROUPED` | Agrupado a outro pedido | Pedido somado a outro; orderIdGrouped indica o pedido principal |
| `CLOSED` | Fechado | Lista e detalhe de pedidos |
| `CANCELLED` | Cancelado | Lista e detalhe de pedidos |

## Pedidos · deliveryStatus

Situação operacional do pedido. Aparece na lista e no detalhe e é espelhada nos webhooks de status.

| Valor | Significado | Uso |
| --- | --- | --- |
| `WAITING` | Aguardando | Pedidos e webhooks |
| `ACCEPTED` | Aceito | Pedidos e webhooks |
| `PREPARING` | Em preparo | Pedidos e webhooks |
| `READY` | Pronto | Pedidos e webhooks |
| `DISPATCHED` | Despachado | Pedidos e webhooks |
| `DELIVERED` | Entregue | Pedidos e webhooks |
| `CANCELLED` | Cancelado | Pedidos e webhooks |

## Pedidos · deliveryType

| Valor | Significado | Uso |
| --- | --- | --- |
| `DELIVERY` | Entrega | Lista e detalhe de pedidos |
| `TAKEOUT` | Retirada | Lista e detalhe de pedidos |
| `DINE_IN` | Consumo no local | Lista e detalhe de pedidos |

## Pedidos · orderType

Outros literais vindos do PDV podem aparecer sem tradução.

| Valor | Significado | Uso |
| --- | --- | --- |
| `DELIVERY` | Pedido delivery | Detalhe do pedido |
| `PDV` | Pedido lançado no PDV | Detalhe do pedido |
| `TABLE` | Mesa / presencial | Detalhe do pedido |

## Pedidos · salesChannel

| Valor | Significado | Uso |
| --- | --- | --- |
| `IFOOD` | iFood | Detalhe, listagem (filtro), polling e webhooks |
| `99FOOD` | 99Food | Detalhe, listagem (filtro), polling e webhooks |
| `KEETA` | Keeta | Detalhe, listagem (filtro), polling e webhooks |
| `AIQFOME` | Aiqfome | Detalhe, listagem (filtro), polling e webhooks |
| `RAPPI` | Rappi | Detalhe, listagem (filtro), polling e webhooks |
| `DELIVERYMUCH` | Delivery Much | Detalhe, listagem (filtro), polling e webhooks |
| `UAIRANGO` | UaiRango | Detalhe, listagem (filtro), polling e webhooks |
| `TOTEM` | Totem | Detalhe, listagem (filtro), polling e webhooks |
| `EXTERNAL` | Integração externa | Detalhe, listagem (filtro), polling e webhooks |
| `WHATSAPP` | Cardápio digital via WhatsApp | Detalhe, listagem (filtro), polling e webhooks |
| `DIGITAL_MENU` | Cardápio digital | Detalhe, listagem (filtro), polling e webhooks |
| `MANUAL` | Lançamento manual / PDV | Detalhe, listagem (filtro), polling e webhooks |

