Submit Onboarding Form

Submits the data collected by your own form together with the identification documents encoded in base64. The request is accepted with 202 Accepted and the analysis runs asynchronously, so keep polling the status endpoint until the journey is finished.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Endpoint

POST /v3/onboarding/{onboarding_requisition_id}/submit

This is the third step of the own-form flow, after POST /v3/onboarding/form and a successful liveness. It can only be called after the end user has passed the liveness (proof of life), and it can only be called once per onboarding requisition.

The response is returned as soon as the payload is accepted and stored — it does not mean the onboarding was approved. The analysis runs in background; keep polling the onboarding status endpoint (GET /v3/onboarding/10482) until current_step becomes DONE.

Headers

ParameterTypeDescriptionRequired or OptionalExample
X-Onboarding-TokenStringThe access_token returned when the onboarding requisition was created. It authorizes every call made against that requisition. A missing or wrong token returns 404.required8bR3xTqZ0pW7yLm2nV4cJdH6sKfA1gQeUoI9tXyZbCk
Content-TypeStringFormat of the request body. Must be application/json.requiredapplication/json

Path Parameters

ParameterTypeDescriptionRequiredExample
onboarding_requisition_idIntegerIdentifier of the onboarding requisition returned when the requisition was created.Yes10482

Body Details

{
  "company": {
    "official_name": "Example Company LTDA",
    "fantasy_name": "Example Company",
    "company_email": "[email protected]",
    "phone_number": "11999998888",
    "opening_date": "2015-03-10",
    "zip_code": "01310100",
    "state": "SP",
    "city": "Sao Paulo",
    "street": "Avenida Paulista",
    "neighborhood": "Bela Vista",
    "number": "1000",
    "complement": "12th floor"
  },
  "partners": [
    {
      "name": "Joao da Silva",
      "cpf": "11144477735",
      "birth_date": "1988-07-21",
      "mother_name": "Maria da Silva",
      "ownership_pct": 100,
      "is_legal_representative": true
    }
  ],
  "documents": [
    {
      "type": "RG_FRONT",
      "partner_cpf": "11144477735",
      "filename": "id-front.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgAA..."
    },
    {
      "type": "COMPANY_SOCIAL_CONTRACT",
      "partner_cpf": null,
      "filename": "social-contract.pdf",
      "mime_type": "application/pdf",
      "content": "JVBERi0xLjQKJeLjz9MK..."
    }
  ],
  "accepted_terms": true
}
FieldTypeDescriptionRequired or Optional
companyObjectCompany details collected by your form. Required for PJ onboarding and not allowed for PF onboarding. Only the fields you send are updated; omitted fields keep the value already on the requisition.required for PJ / forbidden for PF
partnersArrayList of the people declared in the form. At least one item. For PF it must contain exactly one item.required
documentsArrayList of files encoded in base64. At least one item.required
accepted_termsBooleanConfirmation that the end user accepted the terms in your form. Must be true; any other value is rejected with 400.required

company

Every field of the company object is individually optional — send what your form collected. The object itself is required for PJ onboarding.

FieldTypeDescriptionRequired or Optional
official_nameStringRegistered legal name of the company. Maximum 255 characters.optional
fantasy_nameStringTrade name of the company. Maximum 255 characters.optional
company_emailStringContact email of the company. Must be a valid email address.optional
phone_numberStringContact phone number. Maximum 20 characters.optional
opening_dateDateDate the company was opened. Format YYYY-MM-DD.optional
zip_codeStringPostal code of the company address. Maximum 10 characters.optional
stateStringState abbreviation of the company address. Maximum 2 characters.optional
cityStringCity of the company address. Maximum 100 characters.optional
streetStringStreet of the company address. Maximum 255 characters.optional
neighborhoodStringNeighborhood of the company address. Maximum 100 characters.optional
numberStringStreet number of the company address. Maximum 20 characters.optional
complementStringAddress complement (floor, unit, reference). Maximum 100 characters.optional

partners

Each item of the partners array describes one person declared in the form.

FieldTypeDescriptionRequired or Optional
nameStringFull name of the person. Maximum 255 characters.required
cpfStringCPF of the person. The mask is stripped and the check digits are validated; an invalid CPF is rejected with 400 (message partners[0].cpf: Invalid CPF). Must be unique within the array.required
birth_dateDateDate of birth. Format YYYY-MM-DD.optional
mother_nameStringMother's full name. Maximum 100 characters.optional
father_nameStringFather's full name. Maximum 100 characters.optional
rgStringIdentity card number. Maximum 20 characters.optional
rg_issuing_authorityStringAuthority that issued the identity card. Maximum 10 characters.optional
rg_issue_stateStringState that issued the identity card. Maximum 2 characters.optional
rg_issue_dateDateIssue date of the identity card. Format YYYY-MM-DD.optional
birth_placeStringCity of birth. Maximum 255 characters.optional
birth_stateStringState of birth. Maximum 2 characters.optional
nationalityStringNationality of the person. Maximum 50 characters.optional
emailStringContact email of the person. Must be a valid email address.optional
phone_numberStringContact phone number. Maximum 20 characters.optional
ownership_pctDecimalOwnership percentage held by the person, from 0 to 100. For PJ the values of all partners must sum exactly 100. For PF send 100.required
is_legal_representativeBooleanMarks the person who legally represents the company. For PJ exactly one partner must have it as true, and that partner's CPF must match representative_document from creation. Defaults to false when omitted.optional

documents

Each item of the documents array carries one file encoded in base64.

FieldTypeDescriptionRequired or Optional
typeStringType of the file. Canonical values: IMAGE_FRONT, IMAGE_BACK, SELFIE, COMPANY_SOCIAL_CONTRACT, OTHER. Front/back aliases are also accepted and mapped internally — see Document types below. The comparison is case-insensitive.required
partner_cpfStringCPF of the person the file belongs to. Required for IMAGE_FRONT, IMAGE_BACK and SELFIE, and the CPF must match one of the partners sent in the same request. Send null (or omit it) for COMPANY_SOCIAL_CONTRACT and OTHER, which belong to the requisition and not to a person.required for personal files
filenameStringOriginal file name, including the extension. Maximum 255 characters.required
mime_typeStringMedia type of the file, such as image/jpeg, image/png or application/pdf. Maximum 100 characters.required
contentStringFile content as raw base64, without the data: prefix. A value starting with data: is rejected with 400 (message documents[0].content: content must be raw base64, without the data: prefix), and content that is not valid base64 is also rejected with 400.required

Document types:

ValueBelongs toDescription
IMAGE_FRONTPartnerFront of the identification document. Mandatory for every partner sent.
IMAGE_BACKPartnerBack of the identification document. Optional — single-face documents have no back.
SELFIEPartnerPhoto of the person's face. Optional; the liveness already captures one.
COMPANY_SOCIAL_CONTRACTRequisitionCompany incorporation document. Mandatory for PJ onboarding.
OTHERRequisitionAny additional supporting file, such as a proof of address.

Front and back also accept the aliases below. They are stored as IMAGE_FRONT or IMAGE_BACK; the rest of the rules (partner_cpf, mandatory front per partner) apply to the mapped type. An unknown value is rejected with 422.

Alias (case-insensitive)Stored as
RG_FRONTIMAGE_FRONT
CNH_FRONTIMAGE_FRONT
RNE_FRONTIMAGE_FRONT
CNHIMAGE_FRONT
PASSPORTIMAGE_FRONT
RG_BACKIMAGE_BACK
CNH_BACKIMAGE_BACK
RNE_BACKIMAGE_BACK

Request Examples

PJ onboarding (company with two partners):

POST /v3/onboarding/10482/submit
X-Onboarding-Token: 8bR3xTqZ0pW7yLm2nV4cJdH6sKfA1gQeUoI9tXyZbCk
Content-Type: application/json

{
  "company": {
    "official_name": "Example Company LTDA",
    "fantasy_name": "Example Company",
    "company_email": "[email protected]",
    "phone_number": "11999998888",
    "opening_date": "2015-03-10",
    "zip_code": "01310100",
    "state": "SP",
    "city": "Sao Paulo",
    "street": "Avenida Paulista",
    "neighborhood": "Bela Vista",
    "number": "1000",
    "complement": "12th floor"
  },
  "partners": [
    {
      "name": "Joao da Silva",
      "cpf": "111.444.777-35",
      "birth_date": "1988-07-21",
      "mother_name": "Maria da Silva",
      "father_name": "Jose da Silva",
      "rg": "123456789",
      "rg_issuing_authority": "SSP",
      "rg_issue_state": "SP",
      "rg_issue_date": "2010-02-15",
      "birth_place": "Sao Paulo",
      "birth_state": "SP",
      "nationality": "Brazilian",
      "email": "[email protected]",
      "phone_number": "11988887777",
      "ownership_pct": 60,
      "is_legal_representative": true
    },
    {
      "name": "Ana Souza",
      "cpf": "529.982.247-25",
      "birth_date": "1991-11-02",
      "mother_name": "Clara Souza",
      "email": "[email protected]",
      "phone_number": "11977776666",
      "ownership_pct": 40,
      "is_legal_representative": false
    }
  ],
  "documents": [
    {
      "type": "RG_FRONT",
      "partner_cpf": "111.444.777-35",
      "filename": "joao-id-front.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgAA..."
    },
    {
      "type": "RG_BACK",
      "partner_cpf": "111.444.777-35",
      "filename": "joao-id-back.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgBB..."
    },
    {
      "type": "IMAGE_FRONT",
      "partner_cpf": "529.982.247-25",
      "filename": "ana-id-front.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgCC..."
    },
    {
      "type": "COMPANY_SOCIAL_CONTRACT",
      "partner_cpf": null,
      "filename": "social-contract.pdf",
      "mime_type": "application/pdf",
      "content": "JVBERi0xLjQKJeLjz9MK..."
    },
    {
      "type": "OTHER",
      "partner_cpf": null,
      "filename": "proof-of-address.pdf",
      "mime_type": "application/pdf",
      "content": "JVBERi0xLjQKJeHqz9MK..."
    }
  ],
  "accepted_terms": true
}

PF onboarding (individual, no company object):

POST /v3/onboarding/10483/submit
X-Onboarding-Token: 4kQ2wYpN8zR1vBc6mXsLd0TgHj7fEa3UiOy5nPzWqRs
Content-Type: application/json

{
  "partners": [
    {
      "name": "Joao da Silva",
      "cpf": "111.444.777-35",
      "birth_date": "1988-07-21",
      "mother_name": "Maria da Silva",
      "rg": "123456789",
      "rg_issuing_authority": "SSP",
      "rg_issue_state": "SP",
      "birth_place": "Sao Paulo",
      "birth_state": "SP",
      "nationality": "Brazilian",
      "email": "[email protected]",
      "phone_number": "11988887777",
      "ownership_pct": 100,
      "is_legal_representative": true
    }
  ],
  "documents": [
    {
      "type": "IMAGE_FRONT",
      "partner_cpf": "111.444.777-35",
      "filename": "id-front.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgAA..."
    },
    {
      "type": "IMAGE_BACK",
      "partner_cpf": "111.444.777-35",
      "filename": "id-back.jpg",
      "mime_type": "image/jpeg",
      "content": "iVBORw0KGgoAAAANSUhEUgBB..."
    }
  ],
  "accepted_terms": true
}

Response Details

HTTP 202 Accepted

{
  "worked": true,
  "onboarding_requisition_id": 10482,
  "submitted_at": "2026-09-15T18:42:07.512000Z"
}
FieldTypeDescription
workedBooleanAlways true for successful requests.
onboarding_requisition_idIntegerIdentifier of the onboarding requisition the form was submitted for.
submitted_atDateTimeDate and time the form was accepted, in UTC-0 (ISO 8601). The same value is returned by the status endpoint.

202 Accepted means the payload was validated, stored and accepted for analysis — it is not an approval. From this point the requisition moves to current_step: PROCESSING; poll the onboarding status endpoint (GET /v3/onboarding/10482) until current_step becomes DONE and read status_internal (APPROVED or REJECTED) for the final outcome.

Error Responses

HTTP CodeError MessageDescription
400company is required for PJ onboarding.A PJ onboarding was submitted without the company object.
400company is not allowed for PF onboarding.A PF onboarding was submitted with a company object. Remove it from the payload.
400PF onboarding takes exactly one partner, got 2.A PF onboarding must declare exactly one person in partners.
400partner cpf must match the requisition document.On PF, the CPF of the single partner is different from the document used to create the onboarding requisition.
400partners ownership_pct must sum 100, got 80.On PJ, the ownership_pct values of all partners must sum exactly 100.
400exactly one partner must be the legal representative, got 2.On PJ, exactly one partner must have is_legal_representative as true.
400duplicated partner cpf.The same CPF appears more than once in partners. Each person may be declared only once.
400document of type SELFIE requires a partner cpf.A document of type IMAGE_FRONT, IMAGE_BACK or SELFIE was sent without a partner_cpf, or with a partner_cpf that is not a valid CPF (an invalid value is discarded during normalisation and treated as absent).
400document references unknown partner cpf 52998224725.The partner_cpf of a document does not match any CPF declared in partners in the same request.
400missing COMPANY_SOCIAL_CONTRACT document.A PJ onboarding was submitted without the company incorporation document.
400partner 11144477735 is missing IMAGE_FRONT.Every partner declared in the payload needs a front-of-ID image. Add an IMAGE_FRONT document with that partner_cpf.
400documents.0.content is not valid base64.The content of the document at that position could not be decoded. Send raw base64 without the data: prefix and without truncating the value.
400liveness document does not match the legal representative cpf.The person who passed the liveness is not the partner marked as legal representative (PJ) or the single declared partner (PF).
400Liveness did not identify a partner to match against.The liveness did not record which person completed it, so the form cannot be tied to it. Reconcile the verdict with the liveness refresh endpoint before submitting again.
400liveness did not store a selfie for the legal representative.The liveness finished without a usable photo of that person. Reconcile the verdict with the liveness refresh endpoint, or start a new liveness attempt.
400partners[0].cpf: Invalid CPFRequest validation failed. The message is <field path>: <reason>. Causes: an invalid CPF, accepted_terms different from true, content starting with the data: prefix, ownership_pct outside 0-100, an empty partners/documents array, a missing required field, a field longer than its maximum length, or an unknown documents[].type.
404Onboarding requisition not found.The onboarding requisition does not exist, or the X-Onboarding-Token header is missing or does not match the requisition.
409Form already submitted.The form was already submitted for this requisition. A form can only be submitted once; poll the status endpoint to follow the analysis.
412Liveness has not passed yet.The end user has not completed the proof of life. Wait until liveness_status is PASSED before submitting the form.
413id-front.jpg exceeds 8388608 bytes.A single file is larger than 8 MB once decoded. Compress or resize the file before encoding it.
413documents exceed 26214400 bytes in total.The sum of all decoded files in the request is larger than 25 MB. Reduce the number or size of the files.

Business Rules

Preconditions:

  • The liveness must have passed. While liveness_status is PENDING, FAILED or was never started, the call is rejected with 412.
  • The form can be submitted only once per onboarding requisition. A second call is rejected with 409, even if the first payload had a mistake.
  • The payload is validated as a whole before anything is stored: when any rule fails, nothing is persisted and you can fix the payload and call again.

PJ onboarding:

  • The company object is required.
  • The ownership_pct of all partners must sum exactly 100.
  • Exactly one partner must have is_legal_representative as true, and that partner's CPF must be the same representative_document sent when the requisition was created.
  • A COMPANY_SOCIAL_CONTRACT document is required.
  • The person who passed the liveness must be the partner marked as legal representative.

PF onboarding:

  • The company object must not be sent.
  • partners must contain exactly one person.
  • The CPF of that person must be the same document used to create the onboarding requisition.
  • The person who passed the liveness must be that same person.

Partners:

  • Each CPF is validated (mask is stripped and check digits verified) and must be unique within the request.
  • A person who already exists on the requisition — the legal representative created from representative_document who completed the liveness — is completed with the data you send, not duplicated.

Documents:

  • Every partner declared in partners must have an IMAGE_FRONT document (or an alias that maps to it, such as RG_FRONT, CNH or PASSPORT). The back of the document is optional, since single-face documents such as a digital driver's licence or a passport have no back.
  • IMAGE_FRONT, IMAGE_BACK and SELFIE must carry a partner_cpf, and that CPF must match one of the partners in the same request. The same applies after an alias is mapped to front or back.
  • COMPANY_SOCIAL_CONTRACT and OTHER are attached to the requisition when partner_cpf is null or omitted. If you do send a partner_cpf that matches one of the partners, the file is attached to that person instead; the request is not rejected.
  • content must be raw base64, without the data: prefix. Line breaks, spaces and missing = padding inside the value are tolerated and normalised before decoding.

Limits:

  • Maximum 8 MB per file, measured after decoding the base64.
  • Maximum 25 MB for all files of the request combined, measured after decoding.
  • Requests above either limit are rejected with 413 and no file is stored.

Important Notes:

  • The response is returned immediately with 202 Accepted; the analysis of the data and documents runs asynchronously.
  • 202 Accepted confirms only that the submission was received — it is not an approval decision.
  • Keep polling the onboarding status endpoint (GET /v3/onboarding/10482) until current_step is DONE. The final outcome is in status_internal: APPROVED or REJECTED.
  • Fields of the company object that you omit keep the value already registered on the requisition; they are not erased.
  • The CPF can be sent with or without a mask — 111.444.777-35 and 11144477735 are treated as the same document, in partners and in partner_cpf.
Path Params
integer
required

Identifier of the onboarding requisition.

Body Params
company
object | null

Required for company onboarding, not allowed for individual onboarding.

partners
array of objects
required
length ≥ 1
partners*
string
required
length ≤ 255
string
required
length ≤ 14

Partner CPF. The mask is removed and the check digits are validated.

date | null
string | null
string | null
string | null
string | null
string | null
date | null
string | null
string | null
string | null
string | null
string | null
number
required
0 to 100

Ownership percentage. For company onboarding all partners must sum to exactly 100.

boolean
Defaults to false

Exactly one partner must be the legal representative in company onboarding. That partner's CPF must match representative_document from creation.

documents
array of objects
required
length ≥ 1
documents*
string
enum
required

Canonical types IMAGE_FRONT, IMAGE_BACK, SELFIE, COMPANY_SOCIAL_CONTRACT and OTHER. Front/back aliases (RG_FRONT, RG_BACK, CNH_FRONT, CNH_BACK, CNH, RNE_FRONT, RNE_BACK, PASSPORT) are accepted case-insensitively and stored as IMAGE_FRONT or IMAGE_BACK.

string | null

Required for IMAGE_FRONT, IMAGE_BACK and SELFIE. Must match a partner sent in the same request.

string
required
length ≤ 255
string
required
length ≤ 100
string
required

Raw base64 content, without the data: prefix. Maximum 8 MB per file and 25 MB in total, measured after decoding.

boolean
required

Must be true.

Headers
string
required

Access token returned when the onboarding requisition was created.

Responses

400

The form data or the attached documents did not pass validation

404

Onboarding requisition not found, or the access token is missing or incorrect

409

The form was already submitted for this requisition

412

The liveness verification has not passed yet

413

A document exceeds 8 MB, or the documents exceed 25 MB in total

422

Validation error - a field is missing or has an invalid value

Language
LoadingLoading…
Response
Choose an example:
application/json