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

# Atualizar Dados Bancários

> Atualize os dados bancários de um contrato com dados inválidos

Esta API permite atualizar os dados bancários de um contrato quando a validação inicial falhar. É utilizada como parte do fluxo de correção de dados bancários inválidos durante o processo de contratação.

<Warning>
  Esta API só pode ser utilizada quando o contrato estiver nos status `DADOS_BANCARIOS_INVALIDOS` ou `FALHA_VALIDACAO_DADOS_BANCARIOS` e antes da data de expiração da proposta. O sistema permite no máximo 3 tentativas de atualização.
</Warning>

## Endpoint

<ParamField path="PUT" type="endpoint">
  `/api/v1/e-consignado/contratos/{idContrato}/dados-bancarios`
</ParamField>

### URL Base

<ParamField path="HML">
  `https://integracao.apidev.wincred.digital`
</ParamField>

### Headers

| Header          | Tipo   | Obrigatório | Descrição                      |
| --------------- | ------ | ----------- | ------------------------------ |
| `Content-Type`  | string | Sim         | `application/json`             |
| `Authorization` | string | Sim         | `Bearer {seu_token_de_acesso}` |

## Parâmetros

### Path Parameters

<ParamField path="idContrato" type="UUID" required>
  Identificador único do contrato que terá os dados bancários atualizados

  **Exemplo:** `019a7d83-6b10-7ec8-ad35-fbcb2a61bb17`
</ParamField>

### Request Body

<ParamField body="contaBancaria" type="object" required>
  Objeto contendo os dados bancários atualizados

  <Expandable title="Propriedades de contaBancaria">
    <ParamField body="contaBancaria.compe" type="string" required>
      Código COMPE do banco (3 dígitos)

      **Exemplo:** `"070"` (Banco BRB)
    </ParamField>

    <ParamField body="contaBancaria.agencia" type="string" required>
      Número da agência bancária (sem dígito verificador)

      **Exemplo:** `"1155"`
    </ParamField>

    <ParamField body="contaBancaria.conta" type="string" required>
      Número da conta com dígito verificador

      **Formato:** `"XXXXXX-X"`

      **Exemplo:** `"44558-8"`
    </ParamField>

    <ParamField body="contaBancaria.tipo" type="string" required>
      Tipo da conta bancária

      **Valores aceitos:**

      * `CORRENTE` - Conta corrente
      * `POUPANCA` - Conta poupança
    </ParamField>

    <ParamField body="contaBancaria.chavePix" type="string">
      Chave Pix

      **Exemplo:** `"email@exemplo.com"`

      **Obs:** Ao enviar chaves pix como numero de telefone/CPF/CNPJ deve-se remover todos carcteres que não sejam dígitos.
    </ParamField>
  </Expandable>
</ParamField>

## Regras de Negócio

<AccordionGroup>
  <Accordion title="Status do Contrato" icon="circle-check">
    A atualização dos dados bancários só é permitida quando o contrato está no status `DADOS_BANCARIOS_INVALIDOS` ou `FALHA_VALIDACAO_DADOS_BANCARIOS` e antes da data de expiração da proposta. Tentativas de atualização em outros status resultarão em erro.
  </Accordion>

  <Accordion title="Validade da Proposta" icon="clock">
    A proposta deve estar dentro do prazo de validade. Propostas expiradas não podem ter seus dados bancários atualizados.
  </Accordion>

  <Accordion title="Limite de Tentativas" icon="triangle-exclamation">
    Um contrato pode ter seus dados bancários atualizados no máximo 3 vezes. Após a terceira tentativa de correção sem sucesso, o contrato é automaticamente cancelado com o status `LIMITE_MAXIMO_TENTATIVAS_VALIDACAO_DADOS_BANCARIOS_EXCEDIDO`.
  </Accordion>

  <Accordion title="Bancos Aceitos" icon="building-columns">
    Apenas bancos homologados pela Wincred são aceitos. O envio de um código COMPE não suportado resultará em erro 422.
  </Accordion>
</AccordionGroup>

## Respostas

### 200 - Success

A requisição foi bem-sucedida e os dados bancários foram atualizados.

## Respostas de erro comuns no sistema

### Resposta de Erro (4xx Bad Request)

```json theme={null}
{
    "erros": [
        {
            "codigo": "WIN_xxxx",
            "msg": "MENSGEM DE ERRO DESCRITIVA"
        }
    ]
}
```

### Resposta de Erro (422 Unprocessable Entity)

```json theme={null}
{
  "erros": [
    {
      "codigo": "WIN_XXXX",
      "msg": "Proposta não encontrada"
    }
  ]
}
```

### Resposta de Erro (401 Unauthorized)

```json theme={null}
{
  "code": 401,
  "message": ""
}
```

<Warning>
  **Esse payload é um retorno da API de autenticação e não da API do sistema.**

  Esta resposta pode indicar que o token de autenticação fornecido é inválido ou expirou. Verifique se o token está correto e se ainda é válido.
</Warning>

### Resposta de Erro (500 Unauthorized)

```json theme={null}
{
  "code": 500,
  "message": ""
}
```

## Códigos de Status

| Código | Descrição                            |
| ------ | ------------------------------------ |
| `202`  | Requisição aceita e em processamento |
| `401`  | Não autorizado - token inválido      |
| `422`  | Erro de validação dos dados          |
| `429`  | Muitas requisições, limite atingido  |
| `500`  | Erro interno do servidor             |

***

***

## Exemplos

<CodeGroup>
  ```bash cURL theme={null}
  curl --location --request PUT 'https://api.wincred.com.br/api/v1/e-consignado/contratos/019a7d83-6b10-7ec8-ad35-fbcb2a61bb17/dados-bancarios' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer seu-token-aqui' \
  --data '{
      "contaBancaria": {
          "compe": "070",
          "agencia": "1155",
          "conta": "44558-8",
          "tipo": "CORRENTE"
      }
  }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.wincred.com.br/api/v1/e-consignado/contratos/019a7d83-6b10-7ec8-ad35-fbcb2a61bb17/dados-bancarios',
    {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer seu-token-aqui'
      },
      body: JSON.stringify({
        contaBancaria: {
          compe: '070',
          agencia: '1155',
          conta: '44558-8',
          tipo: 'CORRENTE'
        }
      })
    }
  );

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.wincred.com.br/api/v1/e-consignado/contratos/019a7d83-6b10-7ec8-ad35-fbcb2a61bb17/dados-bancarios"

  payload = {
      "contaBancaria": {
          "compe": "070",
          "agencia": "1155",
          "conta": "44558-8",
          "tipo": "CORRENTE"
      }
  }

  headers = {
      "Content-Type": "application/json",
      "Authorization": "Bearer seu-token-aqui"
  }

  response = requests.put(url, json=payload, headers=headers)
  print(response.json())
  ```
</CodeGroup>

## Cenários de Uso

### Cenário 1: Primeira Tentativa de Correção

1. Webhook notifica: `DADOS_BANCARIOS_INVALIDOS`
2. Sistema coleta novos dados bancários do cliente
3. Sistema chama API de atualização
4. API retorna 200 (sucesso)
5. Processo de validação reinicia
6. Se válido: Webhook notifica `PROCESSANDO_KYC`

### Cenário 2: Segunda ou Terceira Tentativa

1. Webhook notifica: `FALHA_VALIDACAO_DADOS_BANCARIOS`
2. Sistema solicita revisão dos dados ao cliente
3. Sistema chama API de atualização novamente
4. API retorna 200 (sucesso)
5. Processo de validação reinicia
6. Se válido: Webhook notifica `PROCESSANDO_KYC`

### Cenário 3: Limite de Tentativas Excedido

1. Após 3 tentativas de correção sem sucesso
2. Wincred cancela automaticamente o contrato
3. Webhook notifica: `LIMITE_MAXIMO_TENTATIVAS_VALIDACAO_DADOS_BANCARIOS_EXCEDIDO`
4. Necessário criar uma nova proposta

<Check>
  **Dica:** Implemente uma validação de formato dos dados bancários no frontend antes de enviar para a API, melhorando a experiência do usuário e reduzindo tentativas de correção.
</Check>

## Relacionado

<CardGroup cols={2}>
  <Card title="Eventos de Resultado de Proposta" icon="webhook" href="/e-consignado/casos-de-uso/contratação-ativa/webhooks-e-eventos/03-evento-de-resultado-de-proposta.mdx">
    Entenda os webhooks relacionados à resultado da proposta.
  </Card>
</CardGroup>
