> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uvvipay.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Reenviar documentos do onboarding

> Reenvia documentos de verificação após reprovação de KYC (ex.: fotos ruins). Consulte GET /v2/submerchants/onboarding/{registrationId}/status antes. Só use quando can_resubmit for true. Body em multipart/form-data. Retorna 202 com registration_id e status.

<Note>
  Reenvia documentos de verificação quando o status do onboarding permitir.
  Antes de reenviar, consulte
  `GET /v2/submerchants/onboarding/{registrationId}/status`. Só reenvie se
  `can_resubmit` for `true`. Retorna `202` com `registration_id`. Exige
  headers `client-id` + `client-secret`.
</Note>

## Quando usar

1. Consulte o status do onboarding.
2. Se `status` for `action_required` e `can_resubmit` for `true`, reenvie os
   documentos neste endpoint.
3. Se `can_resubmit` for `false`, não reenvie. O endpoint retorna `409`.

| Resultado do status                      | Ação                  |
| ---------------------------------------- | --------------------- |
| `action_required` + `can_resubmit: true` | Reenvie os documentos |
| `processing`                             | Aguarde a análise     |
| `approved`                               | Não reenvie           |
| `rejected` + `can_resubmit: false`       | Contate o suporte     |

## Body (`multipart/form-data`)

Envie `documentoFrente` e `documentoVerso`, ou envie `cnhCompleta`. Envie
também `selfie`. Não envie `contratoSocial` nem `cartaoCnpj`.

| Campo             | Tipo | Obrigatório | Descrição                                     |
| ----------------- | ---- | ----------- | --------------------------------------------- |
| `documentoFrente` | file | Condicional | Frente do RG/CIN. Use com `documentoVerso`    |
| `documentoVerso`  | file | Condicional | Verso do RG/CIN. Use com `documentoFrente`    |
| `cnhCompleta`     | file | Condicional | CNH completa. Alternativa a frente + verso    |
| `selfie`          | file | Sim         | Selfie do rosto. Não use `selfieComDocumento` |

### Exemplo com RG/CIN

```bash theme={null}
curl -X POST \
  https://api.uvvipay.com.br/v2/submerchants/onboarding/{registrationId}/resend-documents \
  -H "client-id: SEU_CLIENT_ID" \
  -H "client-secret: SEU_CLIENT_SECRET" \
  -F "documentoFrente=@frente.jpg" \
  -F "documentoVerso=@verso.jpg" \
  -F "selfie=@selfie.jpg"
```

### Exemplo com CNH

```bash theme={null}
curl -X POST \
  https://api.uvvipay.com.br/v2/submerchants/onboarding/{registrationId}/resend-documents \
  -H "client-id: SEU_CLIENT_ID" \
  -H "client-secret: SEU_CLIENT_SECRET" \
  -F "cnhCompleta=@cnh.jpg" \
  -F "selfie=@selfie.jpg"
```

## Response (`202 Accepted`)

| Campo             | Tipo            | Descrição                           |
| ----------------- | --------------- | ----------------------------------- |
| `registration_id` | `string` (UUID) | ID do registro de onboarding        |
| `status`          | `string`        | Status intermediário após o reenvio |

### Exemplo

```json theme={null}
{
  "registration_id": "2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f",
  "status": "submitted"
}
```

**NOTA:** O `status` desta resposta `202` é intermediário. Para decidir a
próxima ação, consulte
`GET /v2/submerchants/onboarding/{registrationId}/status` e use os valores
`processing`, `approved`, `rejected` ou `action_required`.


## OpenAPI

````yaml POST /v2/submerchants/onboarding/{registrationId}/resend-documents
openapi: 3.0.0
info:
  title: UvviPay Public API
  description: >-
    Endpoints públicos da plataforma UvviPay para integração de subcontas
    (submerchants).
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.uvvipay.com.br
    description: Produção
  - url: https://api-staging.uvvipay.com.br
    description: Staging
security:
  - client-id: []
    client-secret: []
tags: []
paths:
  /v2/submerchants/onboarding/{registrationId}/resend-documents:
    post:
      tags:
        - Submerchants
      summary: Reenviar documentos do onboarding (API)
      description: >-
        Reenvia documentos de verificação após reprovação de KYC (ex.: fotos
        ruins). Consulte GET /v2/submerchants/onboarding/{registrationId}/status
        antes. Só use quando can_resubmit for true. Body em multipart/form-data.
        Retorna 202 com registration_id e status.
      operationId: resendApiOnboardingDocuments
      parameters:
        - name: client-secret
          in: header
          description: Secret da credencial do merchant
          required: true
          schema:
            type: string
        - name: client-id
          in: header
          description: ID público da credencial do merchant
          required: true
          schema:
            type: string
        - name: registrationId
          in: path
          description: >-
            UUID do registro de onboarding retornado no POST
            /v2/submerchants/onboarding/pf|pj
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ApiOnboardingResendDocumentsDto'
      responses:
        '202':
          description: Documentos reenviados e reprocessamento iniciado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOnboardingSubmerchantResponseDto'
              examples:
                pf:
                  summary: Resposta PF
                  value:
                    registration_id: 2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f
                    status: submitted
                pj:
                  summary: Resposta PJ
                  value:
                    registration_id: 2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f
                    status: in_progress
        '400':
          description: Documentos inválidos ou ausentes
        '401':
          description: Credenciais inválidas ou ausentes
        '403':
          description: Recurso não habilitado para este merchant
        '404':
          description: Onboarding não encontrado para o merchant autenticado
        '409':
          description: Onboarding não elegível para reenvio de documentos
        '429':
          description: Limite de requisições excedido
components:
  schemas:
    ApiOnboardingResendDocumentsDto:
      type: object
      properties:
        documentoFrente:
          type: string
          format: binary
          description: >-
            Frente do RG/CIN. Obrigatório com documentoVerso, se não enviar
            cnhCompleta.
        documentoVerso:
          type: string
          format: binary
          description: >-
            Verso do RG/CIN. Obrigatório com documentoFrente, se não enviar
            cnhCompleta.
        cnhCompleta:
          type: string
          format: binary
          description: CNH completa. Alternativa a documentoFrente + documentoVerso.
        selfie:
          type: string
          format: binary
          description: >-
            Selfie do titular ou representante (rosto). Não use
            selfieComDocumento.
      required:
        - selfie
      anyOf:
        - required:
            - documentoFrente
            - documentoVerso
        - required:
            - cnhCompleta
    ApiOnboardingSubmerchantResponseDto:
      type: object
      properties:
        registration_id:
          type: string
          format: uuid
          description: ID do registro de onboarding
          example: 2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f
        status:
          type: string
          description: Status do onboarding após o submit ou reenvio
          example: submitted
      required:
        - registration_id
        - status
  securitySchemes:
    client-id:
      type: apiKey
      in: header
      name: client-id
    client-secret:
      type: apiKey
      in: header
      name: client-secret

````