Expense creation
Creates a fund expense. Without submit, it stays in pending_submission until you submit it through submission; with submit: true, it is submitted for analysis in the same call.
Before creating, check in Expense types which types require a contract and which contracts accept the type. The full flow is in Expense lifecycle. A management fee rebate uses this same call, with its own rules in Management fee rebate.
Create an expense
| Profile | Host | Required permission |
|---|---|---|
| Manager | manager-api | Write |
| Consultant | consultant-api | Create and Edit Expenses or Submit Consolidations |
Base URL for each host: Environments (Hosts).
Path parameters
| Parameter | Type | Description |
|---|---|---|
fund_class_key | string | Fund class key (UUID). |
{
"expense_key": "b7f1c8e2-5a7d-4c7f-9a0e-2c3d4e5f6a7b",
"expense_type": "audit_tax",
"contract_key": "0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"description": "Auditoria do exercício 2026",
"payment_value": 15000.00,
"payment_date": "2026-11-24",
"payment_method": "transfer",
"payment": {
"target": {
"name": "AUDITORES EXEMPLO S.A.",
"document_number": "44.555.666/0001-81"
},
"vendor_bank_account_key": "0f9e8d7c-6b5a-4f3e-2d1c-0b9a8f7e6d5c"
},
"documents": [
{
"name": "memoria_de_calculo.pdf",
"document_type": "calculation_memory",
"document_b64": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
],
"consolidation_analysis_documents": [
{
"name": "nfe_001234.pdf",
"document_type": "invoice",
"document_b64": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
],
"submit": true
}
{
"expense_type": "notary",
"description": "Registro de ata em cartório",
"payment_value": 850.00,
"payment_date": "2026-11-30",
"start_deferral_date": "2026-11-03",
"end_deferral_date": "2026-11-30",
"payment_method": "pix",
"payment": {
"target": {
"name": "CARTORIO EXEMPLO",
"document_number": "11.222.333/0001-81"
},
"target_pix_key": "11222333000181"
}
}
Body attributes
| Field | Type | Required | Description |
|---|---|---|---|
expense_key | string | No | Expense key (UUID) chosen by you. Use it to retry safely: a key already used in the fund returns 409 (EXP000080). Without it, QI Tech generates one. |
expense_type | string | Conditional | Expense type. See types. Required, except on a rebate, which is always distribution_fee. Does not accept pass_through_agent_fee. The types calculated by QI Tech (cetip_tax, selic_tax, custody_tax, administration_tax, management_tax and performance_fee) are refused with EXP000218. |
contract_key | string | Conditional | Vendor contract (UUID). Required on types with a contract. Forbidden on notary, court_fee, cvm_tax, anbima_tax and on a rebate. The contracts that accept the type are in Expense types. |
description | string | Yes | Description, from 1 to 200 characters. |
payment_value | number | Yes | Amount, greater than zero. |
payment_date | string | Conditional | Payment date, YYYY-MM-DD, on a business day, from today on. Required, except on a rebate, where it is forbidden. |
start_deferral_date | string | No | Provision start, YYYY-MM-DD, on a business day. Send it together with end_deferral_date, or send neither. Forbidden on a rebate. |
end_deferral_date | string | No | Provision end, YYYY-MM-DD, on a business day, on or after the start. |
payment_method | string | Yes | transfer (TED), pix, bank_slip (bank slip) or automatic_debit (automatic debit). |
payment | object | Yes | Payee and payment destination. See Payment details. |
is_reimbursement | boolean | No | true when the expense reimburses the manager or the consultant for a payment they already made. Forbidden on a rebate. Default: false. |
reimbursement_recipient | string | Conditional | manager or consultant. Required with is_reimbursement: true. |
rebated_expense_key | string | No | Key of the fund's management fee (management_tax) that the rebate offsets. Makes the expense a rebate. See Management fee rebate. |
documents | array | No | From 1 to 20 expense documents. See documents on creation. |
consolidation_analysis_documents | array | No | From 1 to 20 consolidation analysis documents (invoice and receipts). |
submit | boolean | No | true submits the expense for analysis in the same call. A rebate is always submitted. Default: false. |
No other field is accepted.
Documents on creation
Each item of documents and consolidation_analysis_documents has:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | File name, from 1 to 255 characters. |
document_type | string | Yes | Type. In documents: invoice, calculation_memory, contract, bank_slip, payment_receipt, evidence, extra_document, settlement_term or variance_justification. In consolidation_analysis_documents, the same except contract and evidence. |
document_b64 | string | Yes | Base64 content, up to 20 MB per file. |
The whole body accepts up to 100 MB.
Documents required on submission, here or through submission:
- Calculation memory (
calculation_memory), in either list: always, including on a rebate. - Payment receipt (
payment_receipt), inconsolidation_analysis_documents: on a reimbursement with the invoice (or the bank slip, on types without a contract) and on a reimbursement ofcvm_taxoranbima_tax.
The invoice (invoice) is optional on creation. Sent in consolidation_analysis_documents, it removes the need to submit the invoice later: the consolidation analysis is submitted together with the expense. On types without a contract and on a rebate, the bank slip (bank_slip) also works, in either list. cvm_tax and anbima_tax do not require an invoice.
Response
The expense, in the structure of retrieval by key, with permission_type: owner, without status_events and consolidation_status_events. The status is pending_submission, or the result of the submission when submit is true:
| Situation on submission | Expense status |
|---|---|
No provision, contract active or no contract | pre_approved |
With provision (start_deferral_date and end_deferral_date) | in_manual_analysis |
| No provision, contract still under analysis | pending_contract_analysis |
When the expense becomes pre_approved or in_manual_analysis, the consolidation analysis (consolidation_analysis.status) also moves to in_manual_analysis if:
- the invoice (or the bank slip, on types without a contract) has already been sent; or
- the type is
cvm_taxoranbima_tax.
The rebate stays pre_approved, and its analysis only moves forward with the management fee's analysis. See Management fee rebate.
Errors
| Status | code | When it happens |
|---|---|---|
| 400 | QIT000001 | Invalid body: missing required field, date in the wrong format, field forbidden for the case (a rebate with a date, for example) or unexpected field. |
| 400 | EXP000069 | The fund class does not belong to the manager. |
| 400 | EXP000136 | A document is not valid Base64. |
| 400 | EXP000137 | A document exceeds 20 MB. |
| 400 | EXP000218 | The type is calculated by QI Tech: cetip_tax, selic_tax, custody_tax, administration_tax, management_tax or performance_fee. |
| 400 | EXP000120 | The type requires a contract and contract_key was not sent. |
| 400 | EXP000125 | contract_key sent on a type without a contract. |
| 400 | EXP000134 | is_reimbursement: true without reimbursement_recipient. |
| 400 | EXP000121 | payment_date is before today. |
| 400 | EXP000122 | payment_date is not a business day. |
| 400 | EXP000161 | Only one of the provision dates was sent. |
| 400 | EXP000009 | end_deferral_date is before start_deferral_date. |
| 400 | EXP000027 | A provision date is not a business day. |
| 400 | EXP000126 | The contract does not exist in the fund. |
| 400 | EXP000128 | The contract does not cover the expense type. |
| 400 | EXP000130 | The contract is rejected or canceled. |
| 400 | EXP000129 | The contract is expired, amended or in another status that does not accept expenses. |
| 400 | EXP000131 | On this contract, the type is calculated automatically. |
| 400 | EXP000159 | The contract expires before the provision end (without provision, before the payment date). |
| 400 | EXP000178 to EXP000183, EXP000208 to EXP000211 and other payment errors | See Payment details. |
| 400, 404 | EXP000087, EXP000089, EXP000090, EXP000133, EXP000166, EXP000206, EXP000010 and other rebate errors | See Management fee rebate. |
| 400 | EXP000138 | Submission without a calculation memory. |
| 400 | EXP000135 | Submission of a reimbursement without a payment receipt, with the invoice (or the bank slip, on types without a contract) already sent or with type cvm_tax or anbima_tax. |
| 400 | EXP000153 | Submission: the contract no longer accepts the expense. |
| 403 | EXP000124 | The consultant has no active link with the fund. Usually consultant-api rejects the request earlier, with 401 (CIT000018). |
| 404 | EXP000001 | The fund class does not exist. |
| 409 | EXP000080 | The expense_key has already been used in the fund. Retrieve the existing expense. |
| 413 | EXP000177 | The body exceeds 100 MB. |
| 503 | EXP000132 | The API could not read the contract. Try again. |
{
"title": "Payment Target Must Be Contract Vendor",
"description": "The payment target must be the vendor of the contract 0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d (document 44.555.666/0001-81).",
"translation": "O favorecido do pagamento deve ser o fornecedor do contrato 0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d (documento 44.555.666/0001-81).",
"code": "EXP000208"
}
Authentication, permission and host errors: see API Errors.
Next step
- Expense in
pending_submission: Submission. - Expense
pre_approvedwithout an invoice: Consolidation analysis, to submit the invoice.