Ir para o conteúdo
I InopinoPay API PixVersão 3.40 · atualizada em Páginas

Contestações

O banco do pagador pode contestar um Pix recebido. O valor contestado fica retido do seu saldo enquanto a contestação corre. Sem saldo suficiente, a retenção começa parcial e cresce com os próximos créditos até o valor contestado. Se o Pix não virou saldo, porque já está voltando ao pagador, nada é retido. Se outra contestação do mesmo Pix já segura o valor dele, nada mais é retido. Nesses casos semBloqueio diz o motivo. Você recebe med.infracao.criada quando ela abre e med.infracao.atualizada quando ela muda.

Listar #

GET /v2/ex/infracoes

Escopo: ex.med.read.

GET /v2/ex/infracoes
→ 200
{
  "infracoes": [
    {
      "idInfracao": "01J1ZK7M9QW3ERT5TY6UI8OPQR",
      "endToEndId": "E12345678202609181200000000000001",
      "tipo": "FRAUDE",
      "valor": "100.00",
      "situacao": "ABERTA",
      "relato": "pagador alega nao reconhecer o pagamento",
      "prazoFinalizacao": "2026-09-25T12:00:00Z",
      "bloqueioId": "med:01J1ZK7M9QW3ERT5TY6UI8OPQR",
      "criadoEm": "2026-09-18T12:00:00Z"
    }
  ]
}
Parâmetro Tipo Descrição
situacao string Filtra por ABERTA, EM_DEFESA, ACATADA ou REJEITADA. Aceita várias, separadas por vírgula.
limite, cursor inteiro, string Com um dos dois, a lista vem por página, da mais recente para a mais antiga, com cursor. Sem eles, vem inteira, as abertas primeiro.
de, ate string Datas AAAA-MM-DD, inclusivas, pela abertura da contestação no horário de Brasília. Uma das duas sozinha também vale.
origem string PIX ou CARTAO.
busca string O endToEndId, a referência da venda ou o idInfracao, exato.

Quando o mesmo Pix tem mais de uma contestação, a que foi rejeitada sem reter nada é um aviso repetido: ela não aparece na lista nem no resumo, e continua na consulta pelo idInfracao.

GET /v2/ex/infracoes/{id} devolve uma contestação.

Campo Tipo Descrição
situacao string ABERTA, EM_DEFESA, ACATADA quando o pagador ganhou e o valor volta a ele, REJEITADA quando você ganhou e o valor volta ao seu disponível.
valor string O valor contestado.
bloqueioId string A retenção correspondente, em GET /v2/ex/bloqueios. Não vem quando nada é retido.
semBloqueio string Por que a retenção não houve ou é parcial. Só vem nesses casos.
valorADescoberto string Só aparece quando a retenção não cobriu o valor contestado: a diferença, que você passa a nos dever e que soma em aRecuperar do saldo.
prazoFinalizacao string Prazo da contestação. Quando capacidades.med é false, o desfecho pode chegar depois dele, em med.infracao.atualizada.

A defesa depende da conta. Leia capacidades.med em GET /v2/ex/config: quando é false, a defesa é feita pela instituição junto ao provedor da conta, e você acompanha por aqui. Quando é true, consulte a referência interna.

Resumo #

GET /v2/ex/infracoes/resumo

Escopo: ex.med.read. Aceita de, ate, origem e busca, como a lista.

GET /v2/ex/infracoes/resumo?de=2026-10-01&ate=2026-10-15
→ 200
{
  "abertas": { "quantidade": 3, "valor": "45.00" },
  "acatadas": { "quantidade": 1, "valor": "20.00" },
  "rejeitadas": { "quantidade": 2, "valor": "30.00" },
  "total": { "quantidade": 6, "valor": "95.00" },
  "retidoAgora": "45.00"
}
Campo Tipo Descrição
abertas objeto As contestações em ABERTA ou EM_DEFESA: quantidade e valor contestado.
acatadas objeto As que voltaram ao pagador.
rejeitadas objeto As que voltaram ao seu disponível.
total objeto Todas do recorte.
retidoAgora string O que está retido por contestação agora, fora do recorte.

O valor de cada grupo conta cada Pix uma vez, até o valor do Pix. A quantidade conta as contestações.

A contestação no seu saldo #

O disponível é debitado uma vez, quando o valor é retido. O desfecho só decide para onde vai o que está retido. Para não debitar duas vezes, acompanhe o total retido assim:

Evento O que acontece No seu controle
saldo.bloqueado com tipo MED valor sai do disponível e fica retido. Disponível menos valor, retido mais valor.
saldo.bloqueio_ampliado Mais uma parte, valor, sai do disponível, ou da garantia quando vem daGarantia. Disponível menos (valor menos daGarantia), retido mais valor.
saldo.desbloqueado com desfecho LIBERADO Você ganhou: o retido volta ao disponível. Retido menos valor, disponível mais valor.
devolucao.concluida com tipo MED e desfecho DEVOLVIDO O pagador ganhou: valor saiu do retido para ele, e liberado, quando vem, voltou ao disponível. Retido menos valor menos liberado, disponível mais liberado.
med.infracao.criada, med.infracao.atualizada Nenhum dinheiro se move: dizem a contestação e a situação dela. Nada.

O devolucao.concluida da contestação traz id (o da retenção, o mesmo do saldo.bloqueado), tipo, valor, desfecho, endToEndId do Pix contestado e idInfracao. Ele não traz natureza: identifique a contestação pelo tipo MED, pelo id da retenção ou pelo idInfracao.

Controle o retido pelo total, e não retenção por retenção: quando o mesmo Pix tem mais de uma contestação, o valor retido passa de uma para a outra sem mexer no seu disponível. O extrato mostra cada retenção como BLOQUEIO e cada volta ao disponível como DESBLOQUEIO, e GET /v2/ex/bloqueios mostra o retido de cada uma agora.

Se o pagador recebeu de volta mais do que estava retido, a diferença soma em aRecuperar do saldo e não sai do disponível sozinha.

Contestar um saque seu #

Se um saque seu foi para um golpista, por golpe, invasão de conta, coerção ou acesso fraudulento, peça a contestação dele. Quem a abre é a instituição, na instituição de onde o Pix saiu. O pedido não move dinheiro: o que voltar entra como a volta do saque, em payout.devolucao_recebida.

PUT /v2/ex/pedidos-de-med/{id}

Escopo: ex.med.write. O id é seu, de 26 a 35 letras ou algarismos.

PUT /v2/ex/pedidos-de-med/MED01J1ZK7M9QW3ERT5TY6UI8O
{
  "idEnvio": "SAQ04J1ZK7M9QW3ERT5TY6UI8O",
  "motivo": "GOLPE",
  "descricao": "Ligaram dizendo ser do banco e pediram a transferência."
}
→ 201
{
  "id": "MED01J1ZK7M9QW3ERT5TY6UI8O",
  "idEnvio": "SAQ04J1ZK7M9QW3ERT5TY6UI8O",
  "endToEndId": "E12345678202609181200000000000004",
  "motivo": "GOLPE",
  "descricao": "Ligaram dizendo ser do banco e pediram a transferência.",
  "situacao": "PEDIDO",
  "valor": "30.00",
  "valorRecuperado": "0.00",
  "prazoEm": "2026-12-07T12:00:00Z",
  "criadoEm": "2026-09-18T12:00:00Z"
}
Campo Tipo Obrigatório Descrição
idEnvio string sim O saque, já realizado, que saiu há até 80 dias.
motivo string sim GOLPE, INVASAO_DE_CONTA, COERCAO, ACESSO_FRAUDULENTO ou OUTRA_FRAUDE.
descricao string sim O que aconteceu, em até 2000 caracteres.

Desacordo comercial, como o produto que não chegou ou não agradou, e a chave digitada errada não são caso de contestação, e a instituição recusa o pedido. A repetição com o mesmo corpo responde 200. Cada saque tem um pedido em andamento por vez.

Campo Tipo Descrição
situacao string PEDIDO, ABERTO_NA_NOMINAL quando a instituição abriu, RECUSADO com o porquê em resposta, DEVOLVIDO ou NAO_DEVOLVIDO. Depois de RECUSADO você pode pedir de novo, com outro id.
protocolo string O número da contestação na instituição de onde o Pix saiu. Vem depois de aberta.
valorRecuperado string O que voltou do saque depois do pedido.
prazoEm string Até quando a contestação ainda pode ser aberta.

GET /v2/ex/pedidos-de-med/{id} devolve um pedido, e GET /v2/ex/pedidos-de-med lista do mais novo, por página, com idEnvio, situacao, limite e cursor. Escopo: ex.med.read. Você recebe payout.med_pedido, payout.med_aberto, payout.med_recusado e payout.med_encerrado, com as chaves do pedido.

Erros #

Status title Quando
400 situacao_invalida Filtro de situação fora da lista.
400 limite_invalido limite fora de 1 a 200.
400 cursor_invalido Cursor malformado.
400 periodo_invalido de ou ate fora de AAAA-MM-DD, ou de depois de ate.
400 filtro_invalido origem fora de PIX e CARTAO.
400 motivo_do_med_invalido motivo fora da lista, no pedido sobre um saque.
400 descricao_obrigatoria Pedido sobre um saque sem descricao.
400 campo_desconhecido Pedido sobre um saque com campo fora de idEnvio, motivo e descricao.
404 nao_encontrado A contestação, o pedido ou o saque não existe nesta conta.
409 med_ja_pedido O saque já tem um pedido em andamento. O id dele vem em pedidoDoSaque.
409 id_duplicado O mesmo id com outro corpo.
422 saque_nao_liquidado O saque ainda não foi realizado.
422 prazo_do_med_vencido O saque saiu há mais de 80 dias.
422 saque_ja_devolvido O valor do saque já voltou inteiro.