> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Documentação das APIs da DeliveryVip, em português. Regras que mais quebram integrações: (1) Merchant API: faça polling em GET /merchant/v3/events:polling no máximo a cada 30 s por token; confirme todo evento recebido com POST /merchant/v3/events/acknowledgment e corpo [{"id": "<eventId>"}] (o campo lido é id, não eventId), inclusive eventos repetidos ou que o sistema não trata; deduplique por eventId; o evento é só um aviso, busque o pedido na orderURL. (2) Tokens client_credentials valem 24 h e não têm refresh_token: peça outro ao receber 401. (3) Webhooks: valide a assinatura HMAC sobre o corpo bruto e responda 2xx rápido; o polling é a reconciliação. (4) Open Delivery: host od.deliveryvip.com.br, um client_secret por loja, datas em UTC. (5) Fidelidade: o operador implementa 5 rotas assinadas com HMAC e chama o config push; o estorno precisa ser idempotente. (6) Partner API: scope dv.partner. Não invente endpoints: use a referência gerada das specs OpenAPI.

# Listar vendas das lojas

> Consulte a quantidade de pedidos e o valor vendido por loja em um mês.

`GET /partner/v2/merchants/sales` devolve, para cada loja que o token alcança, quantos pedidos ela recebeu no mês e quanto vendeu. Lojas sem pedidos no período aparecem com zero. A lista vem ordenada pelo valor vendido, do maior para o menor.

| Status | Quando |
| - | - |
| `200 OK` | Lista de vendas por loja. |
| `204 No Content` | Nenhuma loja encontrada. |
| `403 Forbidden` | `subscriptionStatus` inválido ou `x-partners` fora do alcance do token. |

> [!NOTE]
>
> Entram no cálculo os pedidos **criados** no mês com status `pending`, `completed`, `preparing` ou `delivering`. Pedidos cancelados ficam de fora.

## Requisição

```bash cURL theme={null}
curl 'https://api.deliveryvip.com.br/partner/v2/merchants/sales?year=2025&month=10' \
  --header 'Authorization: Bearer {token}'
```

```js Node.js theme={null}
const response = await fetch(
  'https://api.deliveryvip.com.br/partner/v2/merchants/sales?year=2025&month=10',
  { headers: { Authorization: `Bearer ${token}` } },
)
const sales = response.status === 204 ? [] : await response.json()
```

```python Python theme={null}
response = requests.get(
    "https://api.deliveryvip.com.br/partner/v2/merchants/sales",
    params={"year": 2025, "month": 10},
    headers={"Authorization": f"Bearer {token}"},
)
sales = [] if response.status_code == 204 else response.json()
```

```json Resposta (200) theme={null}
[
  { "merchantId": "2a710c93-ece1-4d57-9038-6fc714c0e81b", "ordersCount": 815, "ordersTotal": 78457.0 },
  { "merchantId": "466caa37-ab0b-4f9d-b583-896681627367", "ordersCount": 0, "ordersTotal": 0.0 }
]
```

**merchantId** `uuid`

ID da loja.

**ordersCount** `integer`

Quantidade de pedidos no mês.

**ordersTotal** `number`

Valor total vendido no mês, em reais.

## Filtros

**year** `integer`

Ano. Sem ele, vale o ano corrente.

**month** `integer`

Mês, de 1 a 12. Sem ele, vale o mês corrente.

**subscriptionStatus\[]** `string[]`

Status da assinatura das lojas, repetido uma vez por valor: `TRIAL`, `TRIAL_EXPIRED`, `ACTIVATED`, `CANCELLED` ou `DEMO`.

```text theme={null}
/partner/v2/merchants/sales?subscriptionStatus[]=TRIAL&subscriptionStatus[]=ACTIVATED
```

**subscriptionAgreementCode** `string`

Código do contrato da assinatura.

**merchantIdentifier** `string`

CNPJ ou CPF da loja, formatado.

**x-partners** `string[]`

Restringe a parceiros ou revendas específicos. Funciona como em [Filtrar por Partners](/docs/guides/partner/merchant/utilizando-a-api/listar-merchants.md#filtrar-por-partners).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.