Send Investor Document
Introduction
This resource uploads a document that is part of the investor's registration analysis. The required documents vary according to the investor's person_type and investor_sub_type, as well as their category (retail, qualified, professional).
- This endpoint must be called once for each required document
- The registration analysis must be in the
pending_registry_datastatus. In any other status, the call is rejected withIVR000026 - The same
typeonly accepts one successful upload: see Retry and duplicate document
fund_class) — step skippedFund classes do not send investor documents. There is no required documents matrix for this sub-type, and their absence never blocks the submit. Skip this step — see Legal Entity — Investment Fund below.
Input / Output
As input, send the file content in base64, the document type and the extension.
As output, the representation of the created document is returned, identified by investor_analysis_document_key, along with the full representation of the registration analysis it belongs to.
Request
/investor_registry/investor/{investor_key}/investor_analysis/{investor_analysis_key}/documentPOST201Query params
| Field | Type | Description | Required |
|---|---|---|---|
force | boolean | If true, forces the upload even when a prior validation has failed. The document necessarily goes to manual analysis. | No |
Request body
Example: CNH (Natural Person)
{
"type": "cnh",
"document_b64": "base64_encoded_document_content",
"file_extension": "pdf",
"document_data": {
"document_type": "CNH",
"issuer_entity": "DETRAN"
}
}
Example: RG (front and back)
{
"type": "rg_front",
"document_b64": "base64_encoded_document_content",
"file_extension": "jpeg",
"document_data": {
"document_type": "RG",
"issuer_entity": "SSP",
"document_number": "20.932.206-8"
}
}
{
"type": "rg_back",
"document_b64": "base64_encoded_document_content",
"file_extension": "jpeg"
}
Example: CNPJ Card (Legal Entity)
{
"type": "cnpj_card",
"document_b64": "base64_encoded_document_content",
"file_extension": "pdf"
}
Body params
| Field | Type | Description | Characters | Required |
|---|---|---|---|---|
type | string | Document Type enumerator | - | Yes |
document_b64 | string | File content encoded in base64 | - | Yes |
file_extension | string | File extension. Accepted values: pdf, jpeg | - | Yes |
document_data | object | Free-form document metadata (e.g. number, issuing body) | - | No |
observation | string | Free-form note about the document | up to 500 | No |
Document Type
Natural person identification and proofs
| Enumerator | Description | Extensions |
|---|---|---|
cnh | CNH (driver's license) | pdf, jpeg |
rg_front | RG — front | pdf, jpeg |
rg_back | RG — back | pdf, jpeg |
passport | Passport (foreigner identification) | pdf, jpeg |
foreign_id | Foreign identity document (e.g. RNE) | pdf, jpeg |
proof_of_residence | Proof of residence | pdf, jpeg |
billing_statement | Invoice / statement | pdf, jpeg |
Legal entity corporate documents
| Enumerator | Description | Extensions |
|---|---|---|
cnpj_card | CNPJ card | pdf, jpeg |
social_contract | Articles of association | pdf, jpeg |
company_statute | Bylaws | pdf, jpeg |
board_election_record | Statutory election minutes | pdf, jpeg |
financial_statements | Financial statements | pdf, jpeg |
organizational_chart | Corporate organizational chart | pdf, jpeg |
Representation, qualification and contracts
| Enumerator | Description | Extensions |
|---|---|---|
power_of_attorney | Power of attorney | pdf, jpeg |
investor_qualification_proof | Proof of qualification / classification | pdf, jpeg |
wallet_manager_contract | Managed portfolio / intermediation contract | pdf, jpeg |
extra_document | Standalone document, with no specific type | pdf, jpeg |
Non-resident investor
| Enumerator | Description | Extensions |
|---|---|---|
custody_contract | Custody contract | pdf, jpeg |
representation_contract | Representation contract | pdf, jpeg |
simplified_declaration | Simplified declaration | pdf, jpeg |
final_departure_tax_return | Final tax return for permanent departure from the country | pdf, jpeg |
The qualified_investor_term, professional_investor_term, natural_person_registry_form, legal_person_registry_form, investor_suitability_form, adhesion_term and nonconformity_term types appear in the investor query, but they are generated by QI Tech for signature — they must not be sent through this endpoint.
Required Documents
The combinations below are alternative sets: it is enough to satisfy one of the options in each list. The validation runs when the registration is sent for analysis (submit) and rejects with IVR000029, returning in the message the exact matrix that was missing.
Natural Person (natural_person)
One of the options:
| Option | Documents |
|---|---|
| 1 | cnh + proof_of_residence |
| 2 | rg_front + rg_back + proof_of_residence |
Legal Entity (legal_person / investor_sub_type: default, financial_institution)
One of the options — always at least one corporate document and the financial statements:
| Option | Documents |
|---|---|
| 1 | board_election_record + financial_statements |
| 2 | company_statute + financial_statements |
| 3 | social_contract + financial_statements |
The required corporate document depends on the company's legal type — hence the three options. It is not possible to send only financial_statements.
Although these documents are the minimum for submitting an analysis, if, for example, the company_statute alone is not enough to define the quotaholder's signatories and powers, the analysis may be rejected, also requiring the board_election_record.
Legal Entity — Investment Fund Class (investor_sub_type: fund_class)
No document is required — the step is skipped entirely. The class data is obtained through enrichment from the CVM database, and representation is done by the investor owners (administrator and manager).
The only documents that may be required in a fund class registration are those of the related parties, and only when the class is exclusive at CVM — see Send Related Party Document.
Retry and duplicate document
A document type is considered satisfied as soon as there is, for that analysis, a document of that type with the valid or in_manual_analysis status. From then on, new uploads of the same type are rejected:
HTTP 409
{
"title": "Already exists valid document for investor analysis.",
"code": "IVR000023"
}
While all documents of a type are invalid, new uploads of that type are still accepted — this is how an illegible file is corrected.
The extra_document type is the only exception: it always accepts multiple uploads.
Automatic validation and document status
Documents of the cnh, rg_front, rg_back and proof_of_residence types go through automatic validation (OCR) and come back with one of the statuses below. The other types go directly to in_manual_analysis.
| Status | Meaning |
|---|---|
valid | Automatically validated |
in_manual_analysis | Referred to human review |
invalid | Rejected in the automatic validation — resend, or use force=true |
force=true skips the effect of the automatic rejection: the document is recorded as in_manual_analysis and starts to satisfy the type requirement.
investor_qualification_proofThis document is not part of the required matrix and its absence never blocks the submit. It comes into play later: if the declared total_financial_applications is below the floor of the informed category — R$ 1,000,000 for qualified, R$ 10,000,000 for professional — it is used for the validation. fund_class investors are exempt from this check.
Response
{
"investor_analysis_document_key": "UUID",
"type": "cnh",
"status": "in_manual_analysis",
"observation": "Documento emitido em 2019, legibilidade reduzida no verso.",
"data": {
"type": "cnh",
"file_extension": "pdf",
"document_data": {
"document_type": "CNH",
"issuer_entity": "DETRAN"
}
},
"investor_analysis": { }
}
| Field | Type | Description |
|---|---|---|
investor_analysis_document_key | string | Document identifier. It is the key used in the other document routes |
type | string | Document Type enumerator |
status | string | valid, invalid or in_manual_analysis — see Automatic validation |
observation | string | Note sent in the request. null when not provided |
data | object | Echo of the fields sent, without the base64 content |
investor_analysis | object | Full representation of the registration analysis — same format as Query Information of an Investor Registration Analysis |
Errors
| Status | Code | When it happens |
|---|---|---|
| 400 | IVR000024 | The file is not valid base64 |
| 400 | IVR000026 | The analysis is no longer in pending_registry_data |
| 404 | IVR000144 | Unknown document type |
| 409 | IVR000023 | There is already a valid document of the same type in the analysis |
| 409 | IVR000268 | There is already a document of the same type waiting for analysis |
| 400 | QIT000011 | Through the manager (manager-api): the investor is not a fund class linked to it |
Authentication, permission and host errors: see API Errors.