> ## 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.

# Listando faturas

> Liste a fatura do mês de cada loja, diretas e de revendas, com os blocos de preço a pagar e a receber.

`GET /partner/v2/{partnerId}/invoices` devolve uma fatura por loja para o mês consultado.

| `partnerId` | Lojas na resposta |
| - | - |
| ID do parceiro | Todas: as atendidas diretamente e as das revendas (essas com `resaleId`). |
| ID de uma revenda | Só as lojas da revenda. Preços na visão da revenda. |

Um token de parceiro aceita o próprio ID e o de qualquer revenda dele; um token de revenda, só o da revenda.

| Status | Quando |
| - | - |
| `200 OK` | Lista de faturas. |
| `204 No Content` | Nenhuma fatura no período (por exemplo, mês ainda não fechado). |
| `403 Forbidden` | `partnerId` fora do alcance do token. |

## Requisição

**partnerId** `uuid` *required*

ID do parceiro ou de uma revenda.

**year** `integer`

Ano. Sem ele, vale o ano corrente.

**month** `integer`

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

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

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

const payable = (prices) => prices?.find((price) => price.type === 'PAYABLE')
```

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

def payable(prices):
    return next((p for p in prices or [] if p["type"] == "PAYABLE"), None)
```

## Resposta

```json Resposta (200) theme={null}
[
  {
    "month": "4",
    "year": "2025",
    "merchantId": "2a710c93-ece1-4d57-9038-6fc714c0e81b",
    "planId": "aa67c98c-d81f-5a9c-b0bc-26caa0051aea",
    "resaleId": "6bbf7d1e-5563-4a09-aa30-809e8aa46d96",
    "totalPrice": [
      { "type": "PAYABLE", "value": 180.0, "usageTimeValue": 90.0, "currency": "BRL" },
      { "type": "RECEIVABLE", "value": 360.0, "usageTimeValue": 180.0, "currency": "BRL" }
    ],
    "items": [
      {
        "itemType": "DELIVERY_TAKEOUT",
        "quantity": 1,
        "totalPrice": [
          { "type": "PAYABLE", "value": 100.0, "usageTimeValue": 50.0, "currency": "BRL" },
          { "type": "RECEIVABLE", "value": 200.0, "usageTimeValue": 100.0, "currency": "BRL" }
        ]
      },
      {
        "itemType": "INDOOR_QRCODE",
        "quantity": 6,
        "totalPrice": [
          { "type": "PAYABLE", "value": 60.0, "usageTimeValue": 30.0, "currency": "BRL" },
          { "type": "RECEIVABLE", "value": 120.0, "usageTimeValue": 60.0, "currency": "BRL" }
        ]
      },
      {
        "itemType": "DELIVERYBOT_NOTIFICATION",
        "quantity": 1,
        "totalPrice": [
          { "type": "PAYABLE", "value": 20.0, "usageTimeValue": 10.0, "currency": "BRL" },
          { "type": "RECEIVABLE", "value": 40.0, "usageTimeValue": 20.0, "currency": "BRL" }
        ]
      }
    ]
  }
]
```

Todos os campos estão em [Definições de faturas](/docs/guides/partner/invoices/definicoes.md).

> [!WARNING]
>
> `RECEIVABLE` só vem quando a tabela de preços de recebíveis está habilitada para o parceiro. Procure os blocos pelo `type`, nunca pela posição. Consultando com o ID de uma revenda e sem essa tabela, as faturas vêm sem `totalPrice` e os itens sem preço.


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