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
$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;
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);
{
"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
}
Contestações
Enviar defesa
Envie a defesa de uma contestação (MED) com texto e evidências anexas.
POST
/
api
/
v2
/
infractions
/
{infractionId}
/
defense
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
$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;
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);
{
"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
}
Essa rota utiliza os certificados e o Bearer Token de Cash Out.
Todo MED exige resposta em até 24 horas quando o status for
WAITING_ADJUSTMENTS (ou equivalente aguardando resposta). Trate esses eventos com prioridade.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.Certificados
Esta rota usa autenticação mútua (mTLS). Envie o certificado de Cash Out, a chave e a senha na requisição:file
required
Certificado de Cash Out do cliente (
client.crt).file
required
Chave privada do cliente (
client.key).string
required
Senha para descriptografar a chave
.key, enviada por e-mail junto com os certificados.Headers
string
required
Bearer Token de Cash Out. Formato:
Bearer {access_token}.string
required
Use
multipart/form-data para enviar o texto da defesa e os arquivos anexos.Path
string
required
Identificador da contestação (MED) que receberá a defesa.
Body
string
required
Texto da defesa, explicando o motivo pelo qual a contestação deve ser rejeitada ou reconsiderada.
binary[]
Documentos comprobatórios anexados como evidência (PDF, imagens, etc.). Você pode enviar mais de um arquivo.
Resposta
string
Identificador da contestação (MED).
string
Status após o envio da defesa. Em geral,
DEFENDED.string
Texto da defesa enviado.
string
Data e hora do envio da defesa (ISO 8601).
integer
Quantidade de arquivos anexados na defesa.
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
$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;
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);
{
"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
}