SimPayDocs

    Get Onboarding Requisition Status

    Returns the current state of an onboarding requisition: verification status, analysis status, liveness status and the current step of the journey. This is the endpoint your application polls from creation until the final decision.

    GEThttps://api.somossimpay.com.br/v3/onboarding/{onboarding_requisition_id}
    curl --request GET \
      --url 'https://api.somossimpay.com.br/v3/onboarding/{onboarding_requisition_id}' \
      --header 'X-Onboarding-Token: kR4tX0pQ7sV9nL2mB6yH8wZ3cJ1fA5dE7gT0uI9oP4s'
    Response200
    {
      "worked": true,
      "onboarding_requisition_id": 10482,
      "onboarding_type": "PF",
      "status": "PENDING",
      "status_internal": null,
      "liveness_status": "PENDING",
      "current_step": "LIVENESS",
      "liveness_url": "https://liveness.example.com/start/abc123def456",
      "liveness_attempts_left": 2,
      "submitted_at": null,
      "company": null,
      "representative_document": null,
      "updated_at": "2026-09-04T14:19:04Z"
    }

    Endpoint

    GET /v3/onboarding/{onboarding_requisition_id}

    Headers

    ParameterTypeDescriptionRequired or OptionalExample
    X-Onboarding-TokenStringAccess token of the onboarding requisition, returned in the access_token field when the requisition was created. It authorizes every call made for that requisition.requiredkR4tX0pQ7sV9nL2mB6yH8wZ3cJ1fA5dE7gT0uI9oP4s

    Path Parameters

    ParameterTypeDescriptionRequiredExample
    onboarding_requisition_idIntegerIdentifier of the onboarding requisition to be readYes10482

    Request Examples

    Poll while the end user completes the proof of life:

    GET /v3/onboarding/10482
    X-Onboarding-Token: kR4tX0pQ7sV9nL2mB6yH8wZ3cJ1fA5dE7gT0uI9oP4s

    Poll after the form was submitted:

    GET /v3/onboarding/10483
    X-Onboarding-Token: 7wD2sN9kV4bX1mQ6tL3yH8pZ0cR5fJ2aE7gU4iO1nS6

    Response Details

    Waiting for the liveness (individual onboarding):

    {
      "worked": true,
      "onboarding_requisition_id": 10482,
      "onboarding_type": "PF",
      "status": "PENDING",
      "status_internal": null,
      "liveness_status": "PENDING",
      "current_step": "LIVENESS",
      "liveness_url": "https://liveness.example.com/start/abc123def456",
      "liveness_attempts_left": 2,
      "submitted_at": null,
      "company": null,
      "representative_document": null,
      "updated_at": "2026-09-04T14:19:04Z"
    }

    After the form was submitted (company onboarding):

    {
      "worked": true,
      "onboarding_requisition_id": 10483,
      "onboarding_type": "PJ",
      "status": "IN_PROGRESS",
      "status_internal": null,
      "liveness_status": "PASSED",
      "current_step": "PROCESSING",
      "liveness_url": null,
      "liveness_attempts_left": 2,
      "submitted_at": "2026-09-04T12:00:00Z",
      "company": {
        "official_name": "Example Company LTDA",
        "fantasy_name": "Example Company",
        "opening_date": "2015-03-12",
        "legal_nature": "Limited Liability Company",
        "legal_nature_code": "2062",
        "main_activity": "Custom computer programming services",
        "main_activity_code": "6201-5/01",
        "joint_stock": "100000.00",
        "zip_code": "90010150",
        "state": "RS",
        "city": "Porto Alegre",
        "street": "Avenida Borges de Medeiros",
        "neighborhood": "Centro Historico",
        "number": "1000",
        "complement": "Suite 302"
      },
      "representative_document": "11144477735",
      "updated_at": "2026-09-04T15:02:47Z"
    }

    Response Fields

    FieldTypeDescription
    workedBooleanAlways returns true when the request is successful
    onboarding_requisition_idIntegerIdentifier of the onboarding requisition
    onboarding_typeStringType of onboarding: PF (individual) or PJ (company). null when the type was not recorded for the requisition. See Onboarding Type Values below.
    statusStringVerification status of the journey. See Verification Status Values below.
    status_internalStringResult of the analysis performed after the verification finishes. null while no decision has been made yet. See Analysis Status Values below.
    liveness_statusStringStatus of the proof of life: PENDING, PASSED or FAILED. null for the whole journey when the onboarding is configured without the proof of life. See Liveness Status Values below.
    current_stepStringStep the journey is currently on: LIVENESS, FORM, PROCESSING, REVIEW or DONE. An onboarding configured without the proof of life never reports LIVENESS — it starts at FORM.
    liveness_urlStringLink where the end user completes the proof of life. Filled only while liveness_status is PENDING; null in every other situation.
    liveness_attempts_leftIntegerHow many further proof-of-life journeys can still be opened for this requisition.
    submitted_atDateTimeDate and time the form was submitted. Format: ISO 8601 in UTC-0 (YYYY-MM-DDTHH:MM:SSZ). null before the submission.
    companyObjectOfficial registry data of the company. Returned only for PJ onboardings; null for PF. See Company Fields below.
    representative_documentStringCPF of the legal representative sent when the requisition was created. Returned only for PJ onboardings; null for PF, and also null if no representative was recorded.
    updated_atDateTimeDate and time of the last change to the requisition. Format: ISO 8601 in UTC-0 (YYYY-MM-DDTHH:MM:SSZ).

    Company Fields

    Present only when onboarding_type is PJ. Every field is returned individually and may come back null while the official registry lookup has not returned yet, so your form must keep collecting the editable data regardless.

    FieldTypeDescription
    official_nameStringRegistered legal name of the company. null until the registry lookup returns.
    fantasy_nameStringTrade name of the company. null when not available.
    opening_dateDateDate the company was opened. Format: YYYY-MM-DD. null when not available.
    legal_natureStringDescription of the legal nature of the company. null when not available.
    legal_nature_codeStringCode of the legal nature of the company. null when not available.
    main_activityStringDescription of the main economic activity. null when not available.
    main_activity_codeStringCode of the main economic activity. null when not available.
    joint_stockStringShare capital registered for the company. null when not available.
    zip_codeStringPostal code of the registered address. null when not available.
    stateStringState of the registered address. null when not available.
    cityStringCity of the registered address. null when not available.
    streetStringStreet of the registered address. null when not available.
    neighborhoodStringNeighborhood of the registered address. null when not available.
    numberStringStreet number of the registered address. null when not available.
    complementStringAddress complement. null when not available.

    Onboarding Type Values

    ValueDescription
    PFOnboarding of an individual (CPF)
    PJOnboarding of a company (CNPJ)

    Verification Status Values

    ValueDescription
    PENDINGThe requisition was created and the verification has not produced a result yet
    IN_PROGRESSThe verification is running
    APPROVEDThe verification finished with an approval
    REPROVEDThe verification finished with a rejection
    COMPLETEDThe verification journey is finished

    Analysis Status Values

    ValueDescription
    PENDINGThe analysis has not started
    WAITING_APPROVALThe requisition is waiting for a final decision
    APPROVEDFinal decision: the onboarding was approved
    REJECTEDFinal decision: the onboarding was rejected

    null means nobody has decided yet.

    Liveness Status Values

    ValueDescription
    PENDINGA proof-of-life journey is open and waiting for the end user. liveness_url is filled.
    PASSEDThe end user completed the proof of life successfully
    FAILEDThe proof of life was not successful. A new attempt can be opened while attempts remain.

    null means the onboarding is configured without the proof of life: there is no journey to wait for, and the form must carry a SELFIE per partner.

    Status Dimensions

    The response carries three independent status fields plus one consolidated step:

    FieldWhat it tells you
    liveness_statusWhether the end user has completed the proof of life
    statusWhere the verification of the submitted data stands
    status_internalThe final decision on the onboarding, once it has been made
    current_stepThe three fields above, together with submitted_at, consolidated into a single value. Use it to drive your screens; use the individual fields only for extra detail.

    Journey Steps

    current_step is the value your application should branch on while the journey runs:

    ValueWhat it meansWhat your application should do
    LIVENESSThe proof of life is required and has not been completed yet (still open, or failed)Send the end user to liveness_url. If liveness_status is FAILED and liveness_attempts_left is greater than 0, open a new attempt with POST /v3/onboarding/{onboarding_requisition_id}/liveness/retry. Keep polling. Never reported when the onboarding is configured without the proof of life.
    FORMThe proof of life passed, or the onboarding runs without it, and the form has not been submitted yetRender your own form and send the collected data to POST /v3/onboarding/{onboarding_requisition_id}/submit. Keep polling.
    PROCESSINGThe form was submitted and the verification is running in the backgroundNothing to do. Keep polling and show a waiting state to the end user.
    REVIEWThe verification finished and the requisition is waiting for the final decisionNothing to do. Keep polling.
    DONEA final decision was made and is available in status_internalStop polling and act on status_internal (APPROVED or REJECTED).

    Error Responses

    HTTP CodeError MessageDescription
    404Onboarding requisition not found.The requisition does not exist or the X-Onboarding-Token header is missing or does not match the access token of this requisition. The same response is returned in both cases.
    422Validation errorThe requisition identifier in the path is not a valid integer.

    Business Rules

    Access:

    • Every call must send the X-Onboarding-Token header with the access_token returned when the onboarding requisition was created.
    • A token is valid for a single onboarding requisition.
    • A missing or incorrect token returns 404 with the same message used for an unknown identifier: the API never confirms whether a requisition exists to a caller that does not hold its token.
    • Store the access token when the requisition is created; it is not returned again by this endpoint.

    Liveness:

    • liveness_url is returned only while liveness_status is PENDING. Once the proof of life passes or fails, the field comes back null and the previous link must not be reused.
    • liveness_attempts_left starts at 2: a requisition allows at most 3 proof-of-life journeys in total and the first one is already opened when the requisition is created. The field decreases by 1 every time a further journey is opened, and reaches 0 on the last available attempt.
    • A new attempt can only be opened after a FAILED proof of life and only while liveness_attempts_left is greater than 0.
    • If liveness_status stays on PENDING after the end user has finished the proof of life, call POST /v3/onboarding/{onboarding_requisition_id}/liveness/refresh to reconcile the result, then read this endpoint again.

    Company Data:

    • The company object is returned only for PJ onboardings. For PF onboardings it is always null.
    • The registry lookup runs asynchronously: the object can be returned with all fields null right after creation and filled in a later poll.
    • Do not block your form on this data. Collect the editable fields from the end user and send them in the form submission.

    Legal representative:

    • representative_document is the CPF sent as representative_document on POST /v3/onboarding/form. It is returned only for PJ onboardings.
    • Use it to pre-fill the legal-representative partner on your form. The submit call must mark that same CPF as is_legal_representative — a different one is rejected with 400 — and, when the proof of life is required, it is also the person who passed it.

    Important Notes:

    • All dates and times are returned in UTC-0, in ISO 8601 with the Z suffix (for example, 2026-09-04T14:19:04Z).
    • status_internal is null until a decision is made; treat null as "still in progress", never as a rejection.
    • submitted_at is null until the form is submitted and never changes afterwards.
    • This endpoint is read-only and can be called at any point of the journey, including after current_step reaches DONE.

    Polling Recommendations:

    • Poll every 3 to 5 seconds while the end user is on the proof of life, so your screen reacts as soon as current_step moves from LIVENESS to FORM.
    • Poll every 10 to 30 seconds while current_step is PROCESSING or REVIEW.
    • Stop polling once current_step reaches DONE.
    • Use updated_at to detect whether anything changed between two polls.