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

# Invoices

> Notas fiscais: envio multipart, validação, rejeição e download.

`repass.invoices` gerencia as notas fiscais do fluxo [fiscal](/docs/conceitos/fiscal), com envio do arquivo (PDF/XML), validação ou rejeição e download por URL pré-assinada.

## Envio

`submit` envia um upload **multipart** (PDF/XML) junto dos campos declarados e **não é re-tentado automaticamente**; em caso de falha, reenvie de forma controlada. O arquivo pode ser um `Blob`/`File` ou um descritor `{ data, filename?, contentType? }`, onde `data` é um `Blob`, `Uint8Array` ou `ArrayBuffer`.

```ts theme={null}
await repass.invoices.submit("inv_…", fileBlob, {
  nfNumber: "12345",
  issuerCnpj: "12.345.678/0001-90",
  declaredAmountCents: 25000, // R$ 250,00
  recipientName: "Repass Tecnologia LTDA",
}); // → Invoice
```

## Consulta

```ts theme={null}
// Listar (RepassPage; filtros por status e por competência)
await repass.invoices.list({ status: "validated" }); // → RepassPage<Invoice>

// Recorte por competência (mês): criadas em [created_after, created_before)
await repass.invoices.list({
  created_after: "2026-06-01T00:00:00.000Z",
  created_before: "2026-07-01T00:00:00.000Z",
}); // → RepassPage<Invoice>

// Buscar uma nota
await repass.invoices.retrieve("inv_…"); // → Invoice
```

## Validação, rejeição e cobrança

`remind` cobra novamente a NF **pendente** (lembrete ao afiliado); só vale enquanto a nota está `pending`.

```ts theme={null}
await repass.invoices.validate("inv_…");                  // → Invoice (aprova a nota)
await repass.invoices.reject("inv_…", { reason: "valor diverge" }); // → Invoice (rejeita com motivo)
await repass.invoices.remind("inv_…");                    // → Invoice (cobra novamente a NF pendente)
```

## Download

`file` retorna uma URL pré-assinada (com expiração) para baixar o arquivo enviado.

```ts theme={null}
await repass.invoices.file("inv_…"); // → InvoiceFile ({ url, expiresAt })
```

<Note>
  Para o schema completo de cada corpo (campos declarados, tipos de arquivo aceitos e status) e os campos de cada objeto retornado, consulte a [Referência da API](/docs/convencoes/ids-e-recursos). As regras de negócio estão em [Fiscal](/docs/conceitos/fiscal).
</Note>
