Contract Creation
This is the first step of the expense submission flow performed by the integrating agent. The contract defines the business relationship between the fund and a vendor, establishing the expense type and the payment conditions.
Before creating a contract, you need to have at hand:
fund_class_key— unique key of the fund, provided by QI Techvendor_key— key of the registered vendor. See the vendor listing to obtain it
For more details about the complete flow, see the introduction page.
The submission_nature = rebate field can only be used together with expense_type = distribution_fee. For all other expense types, use submission_nature = manual_submission.
Request
Path params
| Parameter | Type | Description |
|---|---|---|
fund_class_key | string | Unique key of the fund (UUID) |
{
"name": "Contrato de Auditoria - Exercício 2026",
"vendor_key": "3571e292-3a83-4011-904d-20ee963022ef",
"expense_type": "audit_tax",
"submission_nature": "manual_submission",
"contract_value": 50000.00,
"validity_date": "2026-12-31",
"contract_key": "contrato-auditoria-2026"
}
Body attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | Contract name. Maximum of 255 characters. |
vendor_key | string | required | Unique key of the vendor (maximum 255 characters). |
expense_type | string | required | Expense type. See Expense types. |
submission_nature | string | required | Submission nature: manual_submission or rebate. |
contract_value | number | optional | Maximum contract value. When provided, the sum of the expenses cannot exceed this value. Minimum: 0. |
validity_date | string | optional | Contract validity date in the YYYY-MM-DD format. After this date, no new expense can be created. |
contract_key | string | optional | Custom identifier of the contract in the partner's system. Maximum of 255 characters. When not provided, a UUID is generated automatically. |
Expense types
| Value | Description |
|---|---|
cvm_tax | CVM fee |
cetip_tax | CETIP fee |
anbima_tax | ANBIMA fee |
notary | Notary |
audit_tax | Audit fee |
administration_tax | Administration fee |
management_tax | Management fee |
bank_account | Bank account |
selic_tax | SELIC fee |
consulting_fee | Consulting fees |
custody_tax | Custody fee |
performance_fee | Performance fee |
bankslip_fee | Bankslip fee |
sale_commission_tax | Sales commission |
certifier_fee | Certifier fees |
rating_agency_fee | Rating agency fee |
lawyer_fee | Legal fees |
bookkeeping_fee | Bookkeeping fee |
distribution_fee | Distribution fee |
insurance_fee | Insurance fee |
collection_agent_fee | Collection agent fees |
servicing_fee | Servicing fee |
fund_structuring_fee | Fund structuring fee |
credit_rights_registration_fee | Credit rights registration fee |
origination_fee | Origination fee |
Response
{
"name": "Contrato de Auditoria - Exercício 2026",
"contract_key": "contrato-auditoria-2026",
"fund_class": {
"name": "FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS EXEMPLO",
"manager": {
"name": "EXEMPLO GESTORA LTDA",
"manager_key": "a7498c6c-1893-42ec-a8f3-bc6ad0c6b52c",
"document_number": "45.585.471/0001-47"
},
"fund_class_key": "4b8377d0-58ec-479f-8ee9-9f963d5c47ad",
"document_number": "60.910.091/0001-24"
},
"vendor": {
"vendor_key": "3571e292-3a83-4011-904d-20ee963022ef",
"name": "AUDITORES EXEMPLO S.A.",
"document_number": "12.345.678/0001-90",
"requires_invoice": "True"
},
"expense_type": "audit_tax",
"status": "created",
"contract_value": 50000.00,
"validity_date": "2026-12-31",
"submission_nature": "manual_submission"
}
Response attributes
| Field | Type | Description |
|---|---|---|
name | string | Contract name. |
contract_key | string | Unique key of the contract. Store this value for the next steps. |
fund_class | object | Data of the associated fund. See fund_class attributes. |
vendor | object | Vendor data. See vendor attributes. |
expense_type | string | Expense type of the contract. |
status | string | Initial status of the contract. Always returns created. |
contract_value | number | Maximum contract value, or null when not provided. |
validity_date | string | Validity date in the YYYY-MM-DD format, or null when not provided. |
submission_nature | string | Submission nature of the contract. |
fund_class attributes
| Field | Type | Description |
|---|---|---|
name | string | Fund name. |
manager | object | Data of the fund manager. |
manager.name | string | Manager name. |
manager.manager_key | string | Unique key of the manager (UUID). |
manager.document_number | string | Manager's CNPJ. |
fund_class_key | string | Unique key of the fund (UUID). |
document_number | string | Fund's CNPJ. |
vendor attributes
| Field | Type | Description |
|---|---|---|
vendor_key | string | Unique key of the vendor. |
name | string | Vendor name. |
document_number | string | Vendor's CPF or CNPJ. |
requires_invoice | string | Indicates whether the vendor requires an invoice ("True" or "False"). |
Possible errors
Fund not found
The fund_class_key provided in the URL does not correspond to any registered fund.
{
"title": "Fund Class Not Found",
"description": "Fund Class with key {fund_class_key} was not found.",
"translation": "O Fundo com chave {fund_class_key} nao foi encontrado.",
"code": "ESB000005"
}
Vendor not found
The vendor_key provided in the body does not correspond to any registered vendor.
{
"title": "Vendor Not Found",
"description": "Vendor with key {vendor_key} was not found.",
"translation": "O fornecedor com a chave {vendor_key} nao foi encontrado.",
"code": "ESB000008"
}
Duplicate contract key
A contract with the provided contract_key already exists in this fund. Use a different identifier or omit the field to generate a UUID automatically.
{
"title": "Contract Key Already Exists",
"description": "A Contract with key {contract_key} already exists.",
"translation": "Um contrato com a chave {contract_key} já existe.",
"code": "ESB000012"
}
Expense type incompatible with the submission nature
The rebate value in submission_nature is only valid when expense_type is distribution_fee.
{
"title": "Invalid Expense Type",
"description": "The expense type {expense_type} is not valid for submission nature {submission_nature}.",
"translation": "O tipo de despesa {expense_type} não é válido para a natureza de submissão {submission_nature}.",
"code": "ESB000031"
}
Next steps
After creating the contract, the flow continues with:
- Contract submission — send the contract for analysis and approval by QI Tech.
- Contract update — edit the contract data while it is still in the
createdstatus.