> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chargefy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Resolver reprovações de cadastro

> Como ler organization.requirements, explicar a reprovação ao vendedor e reenviar a ativação pelo fluxo hospedado ou pela API.

<Info>
  Para atualizar uma integração existente, comece pelo checklist de [mudanças na
  integração de ativação](/platforms/activation-integration-changes).
</Info>

Quando o cadastro financeiro de uma organização conectada é reprovado, a
plataforma não recebe apenas um `activation_status: "disabled"`. A organização
carrega **`requirements`**: a lista de tarefas da ativação, que explica o que
aconteceu, qual campo foi apontado e qual é o caminho de correção. Este guia
mostra como consumir esse objeto de ponta a ponta.

## Como o fluxo funciona

1. A plataforma cria a organização conectada (`POST /v1/organizations`) e
   escolhe como coletar o cadastro: uma
   [`activation_session`](/api-reference/activation-sessions/object) hospedada
   ou o formulário próprio descrito em [Ativação por
   API](/platforms/activate-by-api).
2. O vendedor preenche dados, documentos e conta para saques no canal escolhido.
   Ao concluir, a plataforma recebe
   [`organization.updated`](/api-reference/webhooks/organization.updated)
   — isso significa **"cadastro recebido"**, não "aprovado".
3. O envio coloca a organização em `activation_status: "in_review"` (em
   análise), com `requirements.pending_verification` listando o que está sendo
   verificado. A análise é assíncrona e o resultado chega por
   [`organization.updated`](/api-reference/webhooks/organization.updated):
   * **Aprovado** → `activation_status: "active"` e `requirements` todo
     vazio.
   * **Reprovado** → `activation_status: "disabled"`, `requirements.errors`
     com pelo menos um item e `requirements.missing` com o que é corrigível.
4. Quando `requirements.disabled_reason` vem `null`, a plataforma corrige os
   campos apontados em `missing` e inicia uma **nova tentativa na mesma
   organização** (mesmo `org_*`). No hospedado, cria outra activation session;
   pela API, atualiza os campos e chama `/submit` novamente. A Chargefy substitui
   o perfil financeiro reprovado internamente — produtos, customers e histórico
   não se movem.

<Check>
  `disabled` não é um beco sem saída. Na maioria dos casos a reprovação é
  corrigível pelo próprio vendedor: nome divergente do CPF, documento ilegível,
  selfie ruim. `requirements` diz exatamente qual é o caso — e `disabled_reason`
  só vem preenchido quando não há caminho de correção.
</Check>

<Warning>
  `activation_status: "disabled"` não significa que a organização foi
  desconectada da plataforma. Continue usando o mesmo `org_*`, corrija o que
  `requirements` indicar e não crie outra organização para contornar a
  reprovação.
</Warning>

## O objeto `requirements`

O campo `organization.requirements` está **sempre presente** e tem sempre o
mesmo formato:

```json theme={"theme":"css-variables"}
{
  "disabled_reason": null,
  "errors": [
    {
      "code": "identity_name_mismatch",
      "message": "The name provided does not match the name registered for the taxpayer id.",
      "requirement": "representative.verification.document",
      "resolution": "Ask the account holder to provide the full legal name exactly as registered for their CPF/CNPJ — for example, the name printed on the identity document, without abbreviations — then correct the indicated fields and start a new activation attempt."
    }
  ],
  "missing": [
    "representative.first_name",
    "representative.last_name",
    "representative.verification.document"
  ],
  "pending_verification": []
}
```

| Campo                  | Tipo            | Para que serve                                                                 |
| ---------------------- | --------------- | ------------------------------------------------------------------------------ |
| `disabled_reason`      | string \| null  | Motivo terminal da reprovação. `null` = há caminho de correção.                |
| `errors`               | array           | Reprovações da última análise: `code`, `message`, `requirement`, `resolution`. |
| `missing`              | array de string | Caminhos pontuados do que falta preencher ou corrigir. Ordenados.              |
| `pending_verification` | array de string | Caminhos pontuados do que está em verificação durante a análise.               |

Cada `activation_status` preenche um lado do objeto:

| `activation_status` | O que vem preenchido                                                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `not_submitted`     | Antes do envio, `missing` lista o que falta. Após uma falha terminal de envio, `errors` explica o motivo e `missing` aponta o que corrigir. |
| `in_review`         | `pending_verification` lista o que está sendo verificado.                                                                                   |
| `active`            | Tudo vazio.                                                                                                                                 |
| `disabled`          | `errors` com os motivos, `missing` com o corrigível, `disabled_reason` nos casos terminais.                                                 |

Regras de leitura:

* `requirements` nunca é omitido. Quando não há pendência, todos os campos
  vêm vazios (`null` ou `[]`).
* `activation_status: "disabled"` garante **pelo menos um item** em `errors`.
* Os caminhos pontuados usam `representative.*` em organizações CNPJ (o
  representante legal) e `individual.*` em organizações CPF; `company.*` só
  existe para CNPJ.
* Se você receber um `code` que sua integração não conhece, exiba `message` e
  `resolution` — eles sempre vêm completos — e decida o fluxo por `missing` e
  `disabled_reason`, nunca pelo texto.
* Os itens de `errors` são ordenados por `code` e deduplicados; múltiplos
  sinais da mesma natureza colapsam em um item só.

## Tabela de códigos

O `requirement` de cada erro aponta o campo que falhou. Os valores abaixo usam
o prefixo `representative` (CNPJ); em organizações CPF, o prefixo é
`individual`.

| `code`                                  | O que significa                                                                             | Campo apontado (`requirement`)         |
| --------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------- |
| `identity_name_mismatch`                | O nome informado não confere com o registrado para o CPF/CNPJ.                              | `representative.verification.document` |
| `identity_document_mismatch`            | O documento de identidade não pertence ao titular informado.                                | `representative.verification.document` |
| `identity_document_verification_failed` | O documento de identidade não pôde ser verificado (ilegível, cortado, vencido ou inválido). | `representative.verification.document` |
| `selfie_verification_failed`            | A selfie não passou na verificação.                                                         | `representative.verification.selfie`   |
| `payout_account_verification_failed`    | A conta para saques informada não pôde ser verificada.                                      | `payout_account`                       |
| `business_activity_not_supported`       | A atividade econômica registrada para o CNPJ não é aceita. Não tem correção pelo vendedor.  | `company`                              |
| `registration_data_inconsistent`        | Os dados cadastrais divergem dos registros oficiais.                                        | `company` (CNPJ) ou `individual` (CPF) |
| `identity_verification_failed`          | A verificação de identidade não foi aprovada.                                               | `representative`                       |
| `verification_failed`                   | O perfil financeiro não pôde ser aprovado.                                                  | `representative`                       |

Em `identity_name_mismatch`, além do documento de verificação, `missing`
também aponta `representative.first_name` e `representative.last_name` — o
nome declarado precisa ser corrigido junto.

<Info>
  `verification_failed` é o código genérico: aparece quando a análise não
  detalhou um motivo específico. Nesse caso `disabled_reason` decide o caminho —
  quando vem `"rejected.other"`, não abra nova tentativa automaticamente.
</Info>

## O que fazer em cada caso

### `disabled_reason: null` — corrija e reenvie

1. Mostre ao vendedor o que precisa ser corrigido: a `resolution` de cada
   erro, ou uma tradução sua a partir do `code`. Os caminhos em `missing`
   dizem exatamente o que recoletar.
2. Inicie outra tentativa na **mesma organização**, usando o mesmo canal da sua
   integração.

#### Fluxo hospedado

Crie uma nova activation session:

```bash theme={"theme":"css-variables"}
curl -X POST "https://api.chargefy.io/v1/activation-sessions" \
  -H "Authorization: Bearer {{PLATFORM_API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
    "organization": "org_fqnYZohjZjHazGXr",
    "return_url": "https://meusite.com/activation/return"
  }'
```

Redirecione o vendedor para a `url` retornada. O fluxo hospedado reabre com os
dados e arquivos ainda válidos da tentativa anterior preenchidos — o vendedor
corrige apenas o que aparece em `requirements.missing` e reenvia. O item
reprovado não é reutilizado. Por exemplo, em `identity_document_mismatch` o
documento volta vazio, enquanto a selfie atual permanece visível e pode ser
mantida ou substituída pelo vendedor.

#### Fluxo por API

Atualize somente os caminhos de `requirements.missing` com [`POST
/v1/organizations/{id}`](/api-reference/organizations/update). Omitir um arquivo
preserva o atual; enviar outro `file_*` o substitui. Quando `missing` ficar
vazio, chame [`POST
/v1/organizations/{id}/submit`](/api-reference/organizations/submit) novamente.

3. Acompanhe o próximo `organization.updated`: a transição esperada é
   `disabled → in_review` (com `errors` limpo e `pending_verification`
   preenchido) e depois `in_review → active` ou uma nova reprovação.

### `disabled_reason` preenchido — encaminhe ao suporte

Não há caminho de reenvio pela plataforma:

| `disabled_reason`                | O que significa                                                 |
| -------------------------------- | --------------------------------------------------------------- |
| `rejected.attempt_limit_reached` | O limite de tentativas de reativação foi esgotado.              |
| `rejected.other`                 | A análise não aprovou o perfil e não há correção pelo vendedor. |

Oriente o vendedor a falar com o suporte (ou abra o chamado em nome dele).
Repetir a ativação com os mesmos dados não muda o resultado — não crie
novas sessões em loop.

## Variações de payload

### (a) Aprovação

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "activation_status": "active",
      "activation_status_updated_at": "2026-05-16T14:09:27Z",
      "activation_submitted_at": "2026-05-16T14:05:00Z",
      "avatar_url": null,
      "billing_additional_info": null,
      "billing_address": null,
      "billing_name": null,
      "branding_settings": {
        "accent_color": null,
        "border_style": null,
        "brand_color": null,
        "font_family": null,
        "theme": null
      },
      "business_profile": {
        "annual_revenue": {
          "amount": 30000000,
          "currency": "brl"
        },
        "mcc": "5734",
        "url": "https://empresa.com.br"
      },
      "company": {
        "address": {
          "city": "São Paulo",
          "country": "BR",
          "line1": "Rua Exemplo, 100",
          "line2": null,
          "postal_code": "01310-100",
          "state": "SP"
        },
        "email": "contato@empresa.com.br",
        "name": "Minha Empresa Ltda",
        "opening_date": "2019-06-01",
        "phone": "+5511999990000",
        "trade_name": "Minha Empresa"
      },
      "created_at": "2026-05-16T14:09:27Z",
      "dashboard_settings": {
        "timezone": "America/Sao_Paulo"
      },
      "document": "12345678000195",
      "document_type": "cnpj",
      "email": "contato@empresa.com.br",
      "individual": null,
      "livemode": true,
      "metadata": {},
      "name": "Minha Empresa",
      "payout_account": null,
      "platform": "plat_Jx65r6fWv4uQwMgg",
      "representative": {
        "address": {
          "city": "São Paulo",
          "country": "BR",
          "line1": "Rua Exemplo, 100",
          "line2": null,
          "postal_code": "01310-100",
          "state": "SP"
        },
        "birthdate": "1990-04-12",
        "document": "12345678901",
        "email": "ana@empresa.com.br",
        "first_name": "Ana",
        "last_name": "Souza",
        "phone": "+5511988887777"
      },
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": []
      },
      "socials": [],
      "statement_descriptor": "MINHA EMPRESA",
      "terms_acceptance": {
        "accepted_at": "2026-05-16T14:04:30Z",
        "ip": "203.0.113.10",
        "user_agent": "Mozilla/5.0"
      },
      "updated_at": "2026-05-16T14:09:27Z",
      "website": null
    },
    "previous_attributes": {
      "activation_status": "in_review",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "payout_account",
          "representative.verification.document",
          "representative.verification.selfie"
        ]
      }
    }
  },
  "type": "organization.updated"
}
```

### (b) Reprovação com pendência específica

O caso mais comum: um dado informado diverge do registro oficial. O `code`
identifica o problema, `requirement` aponta o campo e a `resolution` diz
exatamente o que corrigir — o vendedor resolve sozinho.

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "activation_status": "disabled",
      "activation_status_updated_at": "2026-05-16T14:09:27Z",
      "activation_submitted_at": "2026-05-16T14:05:00Z",
      "avatar_url": null,
      "billing_additional_info": null,
      "billing_address": null,
      "billing_name": null,
      "branding_settings": {
        "accent_color": null,
        "border_style": null,
        "brand_color": null,
        "font_family": null,
        "theme": null
      },
      "business_profile": {
        "annual_revenue": {
          "amount": 30000000,
          "currency": "brl"
        },
        "mcc": "5734",
        "url": "https://empresa.com.br"
      },
      "company": {
        "address": {
          "city": "São Paulo",
          "country": "BR",
          "line1": "Rua Exemplo, 100",
          "line2": null,
          "postal_code": "01310-100",
          "state": "SP"
        },
        "email": "contato@empresa.com.br",
        "name": "Minha Empresa Ltda",
        "opening_date": "2019-06-01",
        "phone": "+5511999990000",
        "trade_name": "Minha Empresa"
      },
      "created_at": "2026-05-16T14:09:27Z",
      "dashboard_settings": {
        "timezone": "America/Sao_Paulo"
      },
      "document": "12345678000195",
      "document_type": "cnpj",
      "email": "contato@empresa.com.br",
      "individual": null,
      "livemode": true,
      "metadata": {},
      "name": "Minha Empresa",
      "payout_account": null,
      "platform": "plat_Jx65r6fWv4uQwMgg",
      "representative": {
        "address": {
          "city": "São Paulo",
          "country": "BR",
          "line1": "Rua Exemplo, 100",
          "line2": null,
          "postal_code": "01310-100",
          "state": "SP"
        },
        "birthdate": "1990-04-12",
        "document": "12345678901",
        "email": "ana@empresa.com.br",
        "first_name": "Ana",
        "last_name": "Souza",
        "phone": "+5511988887777"
      },
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "identity_name_mismatch",
            "message": "The name provided does not match the name registered for the taxpayer id.",
            "requirement": "representative.verification.document",
            "resolution": "Ask the account holder to provide the full legal name exactly as registered for their CPF/CNPJ — for example, the name printed on the identity document, without abbreviations — then correct the indicated fields and start a new activation attempt."
          }
        ],
        "missing": [
          "representative.first_name",
          "representative.last_name",
          "representative.verification.document"
        ],
        "pending_verification": []
      },
      "socials": [],
      "statement_descriptor": "MINHA EMPRESA",
      "terms_acceptance": {
        "accepted_at": "2026-05-16T14:04:30Z",
        "ip": "203.0.113.10",
        "user_agent": "Mozilla/5.0"
      },
      "updated_at": "2026-05-16T14:09:27Z",
      "website": null
    },
    "previous_attributes": {
      "activation_status": "in_review",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "representative.verification.document",
          "representative.verification.selfie"
        ]
      }
    }
  },
  "type": "organization.updated"
}
```

### (c) Reprovação com múltiplas pendências

Documento e selfie reprovados na mesma análise. Cada pendência vira um item de
`errors`; `missing` consolida os campos apontados. Resolva todas antes de
reenviar. Os demais campos da organização seguem o formato completo de (b):

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "...": "demais campos da organization",
      "activation_status": "disabled",
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "identity_document_verification_failed",
            "message": "The identity document could not be verified.",
            "requirement": "representative.verification.document",
            "resolution": "Ask the account holder to replace the indicated document with a clear, valid and unexpired identity document — a well-lit photo showing the whole document, with readable text — then start a new activation attempt."
          },
          {
            "code": "selfie_verification_failed",
            "message": "The selfie did not pass verification.",
            "requirement": "representative.verification.selfie",
            "resolution": "Ask the account holder to retake the indicated selfie in good lighting, without accessories, then start a new activation attempt."
          }
        ],
        "missing": [
          "representative.verification.document",
          "representative.verification.selfie"
        ],
        "pending_verification": []
      }
    },
    "previous_attributes": {
      "activation_status": "in_review",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "representative.verification.document",
          "representative.verification.selfie"
        ]
      }
    }
  },
  "type": "organization.updated"
}
```

### (d) Reprovação sem caminho de reenvio

Quando a análise não aprova o perfil e não há correção possível pelo vendedor,
`disabled_reason` vem `"rejected.other"` e `missing` fica vazio:

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "...": "demais campos da organization",
      "activation_status": "disabled",
      "requirements": {
        "disabled_reason": "rejected.other",
        "errors": [
          {
            "code": "verification_failed",
            "message": "The financial profile could not be approved.",
            "requirement": "representative",
            "resolution": "Contact support for next steps."
          }
        ],
        "missing": [],
        "pending_verification": []
      }
    },
    "previous_attributes": {
      "activation_status": "in_review",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "representative.verification.document",
          "representative.verification.selfie"
        ]
      }
    }
  },
  "type": "organization.updated"
}
```

### (e) Motivo refinado, status inalterado

A análise pode detalhar o motivo depois da reprovação inicial. Chega um novo
`organization.updated` em que **só** `requirements` muda — o objeto anterior
completo vem no diff:

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "...": "demais campos da organization",
      "activation_status": "disabled",
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "identity_name_mismatch",
            "message": "The name provided does not match the name registered for the taxpayer id.",
            "requirement": "representative.verification.document",
            "resolution": "Ask the account holder to provide the full legal name exactly as registered for their CPF/CNPJ — for example, the name printed on the identity document, without abbreviations — then correct the indicated fields and start a new activation attempt."
          }
        ],
        "missing": [
          "representative.first_name",
          "representative.last_name",
          "representative.verification.document"
        ],
        "pending_verification": []
      }
    },
    "previous_attributes": {
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "verification_failed",
            "message": "The financial profile could not be approved.",
            "requirement": "representative",
            "resolution": "Ask the account holder to correct the indicated registration data and start a new activation attempt. If the problem persists, contact support."
          }
        ],
        "missing": [
          "representative"
        ],
        "pending_verification": []
      }
    }
  },
  "type": "organization.updated"
}
```

### (f) Nova tentativa enviada após reprovação

Quando o vendedor reenvia a ativação, o status volta para `in_review` e as
reprovações são limpas — `pending_verification` assume, e o `requirements`
anterior aparece uma última vez no diff:

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "...": "demais campos da organization",
      "activation_status": "in_review",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "representative.verification.document",
          "representative.verification.selfie"
        ]
      }
    },
    "previous_attributes": {
      "activation_status": "disabled",
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "identity_name_mismatch",
            "message": "The name provided does not match the name registered for the taxpayer id.",
            "requirement": "representative.verification.document",
            "resolution": "Ask the account holder to provide the full legal name exactly as registered for their CPF/CNPJ — for example, the name printed on the identity document, without abbreviations — then correct the indicated fields and start a new activation attempt."
          }
        ],
        "missing": [
          "representative.first_name",
          "representative.last_name",
          "representative.verification.document"
        ],
        "pending_verification": []
      }
    }
  },
  "type": "organization.updated"
}
```

### (g) Envio falhou antes da análise

Se o cadastro foi aceito pela API, mas a tentativa falhou antes de entrar na
análise, chega um `organization.updated` levando a organização de volta para
`not_submitted`. O erro e o campo a corrigir ficam em `requirements`; não é
necessário fazer polling para descobrir essa volta.

```json theme={"theme":"css-variables"}
{
  "data": {
    "object": {
      "id": "org_fqnYZohjZjHazGXr",
      "object": "organization",
      "...": "demais campos da organization",
      "activation_status": "not_submitted",
      "activation_status_updated_at": null,
      "activation_submitted_at": null,
      "requirements": {
        "disabled_reason": null,
        "errors": [
          {
            "code": "identity_document_verification_failed",
            "message": "The identity document could not be verified.",
            "requirement": "representative.verification.document",
            "resolution": "Ask the account holder to replace the indicated document with a clear, valid and unexpired identity document — a well-lit photo showing the whole document, with readable text — then start a new activation attempt."
          }
        ],
        "missing": [
          "representative.verification.document"
        ],
        "pending_verification": []
      }
    },
    "previous_attributes": {
      "activation_status": "in_review",
      "activation_status_updated_at": "2026-05-16T14:05:00Z",
      "activation_submitted_at": "2026-05-16T14:05:00Z",
      "requirements": {
        "disabled_reason": null,
        "errors": [],
        "missing": [],
        "pending_verification": [
          "representative.verification.document"
        ]
      }
    }
  },
  "type": "organization.updated"
}
```

Corrija os caminhos em `missing` e, no fluxo por API, chame `/submit` novamente.
No fluxo hospedado, abra outra activation session para a mesma organização.

### (h) Consulta direta

O mesmo estado está sempre disponível em
[`GET /v1/organizations/{id}`](/api-reference/organizations/get), em qualquer
contexto de autenticação:

```bash theme={"theme":"css-variables"}
curl -X GET "https://api.chargefy.io/v1/organizations/org_fqnYZohjZjHazGXr" \
  -H "Authorization: Bearer {{PLATFORM_API_KEY}}"
```

```json theme={"theme":"css-variables"}
{
  "id": "org_fqnYZohjZjHazGXr",
  "object": "organization",
  "activation_status": "disabled",
  "activation_status_updated_at": "2026-05-16T14:09:27Z",
  "activation_submitted_at": "2026-05-16T14:05:00Z",
  "avatar_url": null,
  "billing_additional_info": null,
  "billing_address": null,
  "billing_name": null,
  "branding_settings": {
    "accent_color": null,
    "border_style": null,
    "brand_color": null,
    "font_family": null,
    "theme": null
  },
  "business_profile": {
    "annual_revenue": {
      "amount": 30000000,
      "currency": "brl"
    },
    "mcc": "5734",
    "url": "https://empresa.com.br"
  },
  "company": {
    "address": {
      "city": "São Paulo",
      "country": "BR",
      "line1": "Rua Exemplo, 100",
      "line2": null,
      "postal_code": "01310-100",
      "state": "SP"
    },
    "email": "contato@empresa.com.br",
    "name": "Minha Empresa Ltda",
    "opening_date": "2019-06-01",
    "phone": "+5511999990000",
    "trade_name": "Minha Empresa"
  },
  "created_at": "2026-05-16T14:09:27Z",
  "dashboard_settings": {
    "timezone": "America/Sao_Paulo"
  },
  "document": "12345678000195",
  "document_type": "cnpj",
  "email": "contato@empresa.com.br",
  "individual": null,
  "livemode": true,
  "metadata": {},
  "name": "Minha Empresa",
  "payout_account": null,
  "platform": "plat_Jx65r6fWv4uQwMgg",
  "representative": {
    "address": {
      "city": "São Paulo",
      "country": "BR",
      "line1": "Rua Exemplo, 100",
      "line2": null,
      "postal_code": "01310-100",
      "state": "SP"
    },
    "birthdate": "1990-04-12",
    "document": "12345678901",
    "email": "ana@empresa.com.br",
    "first_name": "Ana",
    "last_name": "Souza",
    "phone": "+5511988887777"
  },
  "requirements": {
    "disabled_reason": null,
    "errors": [
      {
        "code": "identity_document_verification_failed",
        "message": "The identity document could not be verified.",
        "requirement": "representative.verification.document",
        "resolution": "Ask the account holder to replace the indicated document with a clear, valid and unexpired identity document — a well-lit photo showing the whole document, with readable text — then start a new activation attempt."
      }
    ],
    "missing": [
      "representative.verification.document"
    ],
    "pending_verification": []
  },
  "socials": [],
  "statement_descriptor": "MINHA EMPRESA",
  "terms_acceptance": {
    "accepted_at": "2026-05-16T14:04:30Z",
    "ip": "203.0.113.10",
    "user_agent": "Mozilla/5.0"
  },
  "updated_at": "2026-05-16T14:09:27Z",
  "website": null
}
```

## Limites e erros ao abrir nova tentativa

`POST /v1/activation-sessions` valida a elegibilidade da nova tentativa e pode
responder:

| HTTP | `code`                              | Quando acontece                                                                                                   | O que fazer                                                                                                                           |
| ---- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| 409  | `organization_already_active`       | A organização já está `active`.                                                                                   | Não crie sessão; nada a corrigir.                                                                                                     |
| 409  | `organization_activation_in_review` | Já existe análise em andamento (`in_review`).                                                                     | Aguarde o próximo `organization.updated`.                                                                                             |
| 409  | `activation_not_retryable`          | `requirements.disabled_reason` está preenchido: não há caminho de reenvio ou o limite de tentativas foi atingido. | Encaminhe ao suporte.                                                                                                                 |
| 409  | `document_already_in_use`           | O documento da organização já pertence a outro cadastro financeiro.                                               | Fale com o suporte ou [troque o documento](/platforms/resubmit-organization-verification#trocar-o-documento-antes-de-tentar-de-novo). |

<Warning>
  O limite atual é de **3 tentativas** de reativação por organização. Depois de
  esgotado, `requirements.disabled_reason` passa a
  `"rejected.attempt_limit_reached"`, novas sessões respondem `409
      activation_not_retryable` e o caminho passa a ser o suporte — isso evita loops
  de reprovação com os mesmos dados. Reenvie apenas depois que o vendedor
  corrigiu o que os caminhos em `missing` apontam.
</Warning>

## Boas práticas

* **Automatize por `code`, `missing` e `disabled_reason`**, nunca pelo texto
  de `message` — os textos podem ser refinados sem aviso; os códigos e
  caminhos são estáveis.
* **Mostre `resolution` ao vendedor** (ou uma tradução sua a partir do
  `code`). É a diferença entre "cadastro reprovado, procure o suporte" e
  "o nome informado não confere com o CPF — corrija e reenvie".
* **Não crie sessões em loop.** Reenvie apenas depois que o vendedor corrigiu
  algo. Reprovações repetidas com os mesmos dados terminam em
  `activation_not_retryable`.
* **Não invente motivo.** Se `code` vier desconhecido para a sua integração,
  exiba os textos como estão e siga `missing`/`disabled_reason`.
* A reprovação vale para o **perfil financeiro**, não para a organização:
  mantenha o mesmo `org_*`, produtos, customers e histórico. Veja
  [reenviar KYC de uma organização](/platforms/resubmit-organization-verification).
