Pular para o conteúdo principal

Documentos de despesas consolidadas

Anexe comprovantes (nota fiscal, memória de cálculo, contrato, boleto) a uma despesa da classe de fundo e consulte os documentos já anexados. A expense_key vem da consulta de despesas consolidadas.

O envio do arquivo acontece em duas etapas: a API registra o documento e devolve uma URL de upload; em seguida, você envia o arquivo diretamente para essa URL.

Anexar documento​

Disponível em
PerfilHostPermissão exigida
Gestoramanager-apiEscrita

URL base de cada host: Ambientes (Hosts).

ENDPOINT
/expense/fund_class/{fund_class_key}/expense/{expense_key}/document
MÉTODO
POST

Path params​

ParâmetroTipoDescrição
fund_class_keystringChave da classe de fundo (UUID).
expense_keystringChave da despesa (UUID).

Atributos do body​

CampoTipoObrigatoriedadeDescrição
namestringobrigatórioNome do documento. Máximo de 255 caracteres.
document_typestringobrigatórioinvoice (nota fiscal), calculation_memory (memória de cálculo), contract (contrato) ou bank_slip (boleto).

Nenhum outro campo é aceito.

Request Body
{
"name": "NF-e 001234 - Auditoria jun/2026",
"document_type": "invoice"
}

Response​

STATUS
201
Response Body
{
"name": "NF-e 001234 - Auditoria jun/2026",
"document_key": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"expense_key": "3571e292-3a83-4011-904d-20ee963022ef",
"document_type": "invoice",
"upload_url": {
"url": "https://<link-temporario-de-envio>",
"fields": {
"key": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"policy": "<policy>",
"x-amz-algorithm": "AWS4-HMAC-SHA256",
"x-amz-credential": "<credential>",
"x-amz-date": "20260701T120000Z",
"x-amz-signature": "<signature>"
}
}
}
CampoTipoDescrição
document_keystringChave do documento (UUID). Use-a para consultar o documento depois.
expense_keystringChave da despesa à qual o documento pertence.
upload_url.urlstringEndereço para onde o arquivo deve ser enviado.
upload_url.fieldsobjectCampos que precisam acompanhar o arquivo. Envie todos, sem alterar nomes nem valores; o conjunto exato de campos pode variar.

Envio do arquivo​

Faça um POST multipart/form-data para upload_url.url, com todos os campos de upload_url.fields e o arquivo no campo file (o último do formulário). A URL expira em 10 minutos e aceita arquivos de até 50 MB. Essa chamada vai direto para o armazenamento: não leva cabeçalhos de autenticação da QI Tech.

import requests

upload = response_body["upload_url"]

with open("nfe_001234.pdf", "rb") as arquivo:
resposta = requests.post(
upload["url"],
data=upload["fields"],
files={"file": arquivo},
)

resposta.raise_for_status() # 204 indica upload concluído

Se a URL expirar antes do envio, anexe o documento de novo para receber outra URL.

Listar documentos de uma despesa​

Um expense_key que não existe na classe de fundo devolve data vazio, não 404.

Disponível em
PerfilHostPermissão exigida
Gestoramanager-apiLeitura

URL base de cada host: Ambientes (Hosts).

ENDPOINT
/expense/fund_class/{fund_class_key}/expense/{expense_key}/documents
MÉTODO
GET

A listagem não é paginada e não traz a URL de download; para baixar um arquivo, consulte o documento pela chave.

Response Body
{
"data": [
{
"name": "NF-e 001234 - Auditoria jun/2026",
"document_key": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"expense_key": "3571e292-3a83-4011-904d-20ee963022ef",
"document_type": "invoice"
}
]
}

Consultar documento por chave​

Disponível em
PerfilHostPermissão exigida
Gestoramanager-apiLeitura

URL base de cada host: Ambientes (Hosts).

ENDPOINT
/expense/fund_class/{fund_class_key}/expense/{expense_key}/document/{document_key}
MÉTODO
GET
Response Body
{
"name": "NF-e 001234 - Auditoria jun/2026",
"document_key": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"expense_key": "3571e292-3a83-4011-904d-20ee963022ef",
"document_type": "invoice",
"document_url": "https://<link-temporario-de-download>"
}
CampoTipoDescrição
document_urlstringURL pré-assinada para baixar o arquivo, válida por 24 horas. Consulte o documento de novo para obter outra.

Erros​

StatusCódigoQuando acontece
400EXP000069A classe de fundo não pertence à gestora da sua chave de API.
400QIT000001Body inválido: falta name ou document_type, document_type fora da lista ou campo não previsto.
404EXP000072A despesa está cancelada (canceled) e não aceita novos documentos.
404EXP000071O document_key não existe para essa despesa.
500QIT000500Anexar documento: o expense_key não existe nessa classe de fundo. Confira a chave na consulta de despesas.

Erros de autenticação, permissão e host: veja Erros da API.