Skip to main content

Expense contract

The expense contract links a fund to a vendor and declares the expense types that vendor provides to the fund. Expenses of those types can only be posted under an active contract.

Before it takes effect, the contract goes through automated reading, QI Tech review and signature.

Contract flow​

1. Create the contract​

Create the contract, which starts in pending_submission. Provide the name, vendor, signature method and expense types. Monthly recurrences and an expiration date are optional.

2. Upload the contract document​

Request an upload URL and upload the contract PDF straight to it.

While the contract is in pending_submission, you can correct its data and replace the document.

3. Submit for review​

Send the contract for review (sent_to_analysis). The document is frozen.

4. QI Tech review​

  1. The automated reading checks the document against the declared data.
  2. The QI Tech team reviews the contract (in_manual_analysis).
  3. If there is a possible conflict of interest between the vendor and the fund's parties, the contract moves on to compliance (in_compliance_analysis).

During these steps, you can only follow the contract or cancel it.

5. Signature​

Once approved, the contract waits in pending_vendor_approval if the vendor's registration has not been approved yet. Then:

  • certifiqi or qi_sign: QI Tech creates the signature batch with the manager's and the vendor's signers (pending_signature). The contract becomes active when everyone signs. During this step, the signature method can be switched.
  • external: the uploaded document is already considered signed, and the contract becomes active right away.

6. Maintenance​

An active or expired contract can receive:

  • attachments;
  • an amendment, which replaces it;
  • a termination request.

Track everything through the contract retrieval.

Consultant​

The consultant uses the same calls on consultant-api, with the fund permissions Read, Create and Update Expense Contracts. What changes:

  • After the QI Tech review, a consultant's contract waits for the manager's decision in pending_manager_approval.
  • A contract posted by the consultant carries the consultant's key in consultant_key.
  • Only the manager decides on the consultant's contract and requests the termination.
  • The list and summary of contracts across all funds include only the funds in which the consultant has the Read Expense Contracts permission.
  • The signers on the fund side are still the manager's.

Contract status​

StatusDescription
pending_submissionBeing filled in. The only status in which the data and the document can be changed.
sent_to_analysisSubmitted for review; document under automated reading.
in_manual_analysisUnder QI Tech review, with the automated reading result.
in_compliance_analysisUnder review by QI Tech compliance.
pending_manager_approvalPosted by a consultant, approved by QI Tech and awaiting the manager's decision.
pending_vendor_approvalApproved, awaiting approval of the vendor's registration.
pending_signatureAwaiting signatures.
activeIn effect. Accepts expenses.
expiredexpiration_date has passed. Does not accept new expenses; still accepts amendment, termination and attachments.
amendedReplaced by an amendment that took effect.
reprovedRejected or terminated. The reason is in reproval_reason.
canceledCanceled by the manager or the consultant, or signature batch declined or canceled.

In these pages, an in-progress contract is one in any status from pending_submission to pending_signature: it has not taken effect yet and can be canceled.

status_events also includes the transient status created, recorded at the same instant as pending_submission.

Rejection reasons​

reproval_reasonOrigin
invalid_documentQI Tech review: invalid document.
incorrect_informationQI Tech review: data does not match the document.
prohibited_clausesQI Tech review: prohibited clauses.
abusive_pricingQI Tech review: abusive pricing.
compliance_reprovalQI Tech compliance, or the vendor became inactive in the registry. Permanently blocks new contracts between the fund and the vendor.
manager_reprovalThe manager rejected a contract posted by the consultant.
termination_agreementQI Tech approved the termination request.
vendor_expiredThe vendor's registration expired while the contract was still in progress.

Rules​

  • Expense types. The contract accepts audit_tax, custody_tax, consulting_fee, lawyer_fee, bookkeeping_fee, distribution_fee, insurance_fee, collection_agent_fee, servicing_fee, rating_agency_fee, certifier_fee, fund_structuring_fee, origination_fee, sale_commission_tax, bankslip_fee and bank_account.
    • administration_tax, management_tax, performance_fee and credit_rights_registration_fee are contracted during fund structuring.
    • cvm_tax, anbima_tax, cetip_tax, selic_tax, notary and court_fee do not use a contract.
  • Vendor. Must belong to the manager, or to a consultant with the Create Expense Contracts permission on the fund. It cannot be inactive or expired. A vendor not yet approved is accepted: after the contract is approved, it waits in pending_vendor_approval until the vendor is approved.
  • One contract per type and vendor. In the same fund, an expense type with the same vendor can only be in one in-progress, active or expired contract. With a different vendor, it can.
  • Recurrence. recurrences creates an automatic monthly expense per expense type, paid to the vendor on the last business day of each month. When sent, it must have exactly one recurrence for each declared type.
  • Expiration. The contract moves to expired on the day after expiration_date.
  • Dates and times. created_at and event_datetime come in ISO 8601 without a time zone (2026-11-09T14:03:22.512345). Dates come as YYYY-MM-DD.
  • Tracking. There is no contract webhook: track through the retrieval. Actions taken through the API with an integration key appear in status_events with author_type: qitech.
  • Internal error. Failures in services queried during the call (signature, vendor registry, automated reading) come back as 500 (QIT000500).

Errors​

Authentication, permission and host errors: see API Errors. Contract errors have the ECT prefix and are listed on each call's page.