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

# Enviar defesa

> Envie a defesa de uma contestação (MED) com texto e evidências anexas.

<Info>
  Essa rota utiliza os certificados e o Bearer Token de **Cash Out**.
</Info>

<Warning>
  Todo MED exige resposta em até **24 horas** quando o status for `WAITING_ADJUSTMENTS` (ou equivalente aguardando resposta). Trate esses eventos com prioridade.
</Warning>

<Info icon="circle-info">
  Fluxo de status: `WAITING_PSP` (aguardando sua ação) → `DEFENDED` (depois que você envia a defesa) ou `CLOSED` (contestação encerrada). Acompanhe cada contestação para não perder o prazo de resposta.
</Info>

## Certificados

Esta rota usa autenticação mútua (mTLS). Envie o certificado de **Cash Out**, a chave e a senha na requisição:

<ParamField path="--cert" type="file" required>
  Certificado de Cash Out do cliente (`client.crt`).
</ParamField>

<ParamField path="--key" type="file" required>
  Chave privada do cliente (`client.key`).
</ParamField>

<ParamField path="--pass" type="string" required>
  Senha para descriptografar a chave `.key`, enviada por e-mail junto com os certificados.
</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer Token de Cash Out. Formato: `Bearer {access_token}`.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Use `multipart/form-data` para enviar o texto da defesa e os arquivos anexos.
</ParamField>

## Path

<ParamField path="infractionId" type="string" required>
  Identificador da contestação (MED) que receberá a defesa.
</ParamField>

## Body

<ParamField body="defense" type="string" required>
  Texto da defesa, explicando o motivo pelo qual a contestação deve ser rejeitada ou reconsiderada.
</ParamField>

<ParamField body="files" type="binary[]">
  Documentos comprobatórios anexados como evidência (PDF, imagens, etc.). Você pode enviar mais de um arquivo.
</ParamField>

## Resposta

<ResponseField name="id" type="string">
  Identificador da contestação (MED).
</ResponseField>

<ResponseField name="status" type="string">
  Status após o envio da defesa. Em geral, `DEFENDED`.
</ResponseField>

<ResponseField name="defense" type="string">
  Texto da defesa enviado.
</ResponseField>

<ResponseField name="defenseSubmittedAt" type="string">
  Data e hora do envio da defesa (ISO 8601).
</ResponseField>

<ResponseField name="filesCount" type="integer">
  Quantidade de arquivos anexados na defesa.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://pagamentos.basspago.com.br/api/v2/infractions/b2d4f6a8-1357-4ace-9bdf-024681357900/defense" \
    --cert ./client.crt \
    --key ./client.key \
    --pass "SUA_SENHA_DO_CERTIFICADO" \
    -H "Authorization: Bearer {access_token}" \
    -F 'defense=O pagamento foi autorizado pelo titular da conta. Segue o comprovante de autorização em anexo.' \
    -F 'files=@/caminho/comprovante.pdf' \
    -F 'files=@/caminho/print-autorizacao.png'
  ```

  ```php PHP theme={null}
  <?php

  $infractionId = 'b2d4f6a8-1357-4ace-9bdf-024681357900';
  $ch = curl_init("https://pagamentos.basspago.com.br/api/v2/infractions/{$infractionId}/defense");

  $postFields = [
      'defense' => 'O pagamento foi autorizado pelo titular da conta. Segue o comprovante de autorização em anexo.',
      'files[0]' => new CURLFile('/caminho/comprovante.pdf'),
      'files[1]' => new CURLFile('/caminho/print-autorizacao.png'),
  ];

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_SSLCERT => './client.crt',
      CURLOPT_SSLKEY => './client.key',
      CURLOPT_KEYPASSWD => 'SUA_SENHA_DO_CERTIFICADO',
      CURLOPT_HTTPHEADER => ['Authorization: Bearer {access_token}'],
      CURLOPT_POSTFIELDS => $postFields,
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  echo $response;
  ```

  ```javascript Node.js theme={null}
  import fs from "node:fs";
  import https from "node:https";
  import axios from "axios";
  import FormData from "form-data";

  const agent = new https.Agent({
    cert: fs.readFileSync("./client.crt"),
    key: fs.readFileSync("./client.key"),
    passphrase: "SUA_SENHA_DO_CERTIFICADO",
  });

  const infractionId = "b2d4f6a8-1357-4ace-9bdf-024681357900";
  const form = new FormData();

  form.append(
    "defense",
    "O pagamento foi autorizado pelo titular da conta. Segue o comprovante de autorização em anexo."
  );
  form.append("files", fs.createReadStream("/caminho/comprovante.pdf"));
  form.append("files", fs.createReadStream("/caminho/print-autorizacao.png"));

  const { data } = await axios.post(
    `https://pagamentos.basspago.com.br/api/v2/infractions/${infractionId}/defense`,
    form,
    {
      httpsAgent: agent,
      headers: {
        Authorization: "Bearer {access_token}",
        ...form.getHeaders(),
      },
    }
  );

  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - OK theme={null}
  {
    "id": "b2d4f6a8-1357-4ace-9bdf-024681357900",
    "status": "DEFENDED",
    "defense": "O pagamento foi autorizado pelo titular da conta. Segue o comprovante de autorização em anexo.",
    "defenseSubmittedAt": "2026-07-21T19:30:00Z",
    "filesCount": 2
  }
  ```
</ResponseExample>
