Skip to main content
Para mais detalhes sobre o endpoint e a descrição completa de todos os campos do body, consulte a referência do endpoint.

Visão Geral

Esta receita mostra como lidar com um MED recebido: desde a notificação via webhook até o envio da resposta com aceite ou rejeição dentro do prazo. O fluxo completo:
  1. Receber a notificação de MED via webhook
  2. Identificar a transação original
  3. Reunir evidências (se for rejeitar)
  4. Enviar a resposta

Pré-requisitos


1. Receber a notificação de MED

Quando um MED é aberto contra sua conta, a Plowf envia um evento MED com status: "PENDING":
{
  "event": "MED",
  "timestamp": "2024-01-15T12:00:00Z",
  "data": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "med_type": "RECEIVED_MED",
    "dispute_type": "SCAM",
    "status": "PENDING",
    "resolved": false,
    "pix_in_transaction": {
      "value": "150.00",
      "end_to_end": "E00000000202401011000abcdef12345",
      "settled_at": "2024-01-01T10:05:00Z"
    }
  }
}
No seu endpoint, filtre por med_type === "RECEIVED_MED" e status === "PENDING" para identificar MEDs que precisam de resposta:
app.post('/webhooks/plowf', (req, res) => {
  // ... validação de assinatura HMAC ...

  const { event, data } = req.body;

  if (event === 'MED' && data.med_type === 'RECEIVED_MED' && data.status === 'PENDING') {
    // Registre o MED e inicie o processo de análise
    console.log('MED recebido:', data.uuid);
    console.log('Motivo:', data.dispute_type);
    console.log('Transação:', data.pix_in_transaction.end_to_end);

    // Notifique sua equipe ou enfileire para análise
    notificarEquipe(data);
  }

  res.status(200).json({ received: true });
});
Responda 200 ao webhook imediatamente e processe o MED de forma assíncrona. MEDs têm prazo para resposta — não atrase o processamento.

2. Identificar a transação original

Use o end_to_end ou o value da pix_in_transaction para localizar a cobrança no seu sistema:
curl 'https://app.plowf.com/api/v1/meds/550e8400-e29b-41d4-a716-446655440000' \
  -H 'Authorization: Bearer seu_token_aqui'
O retorno inclui todos os dados da transação contestada, incluindo remetente e valor.

3a. Rejeitar o MED (contestar a devolução)

Use quando a transação é legítima e você tem documentos que comprovam isso (nota fiscal, comprovante de entrega, registro de uso do serviço).
curl -X POST 'https://app.plowf.com/api/v1/meds/550e8400-e29b-41d4-a716-446655440000/reply' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -H 'Content-Type: multipart/form-data' \
  -F 'accept=0' \
  -F 'analysis=Pagamento referente ao pedido #12345, realizado em 2024-01-01. O produto foi entregue em 2024-01-03, conforme nota fiscal em anexo.' \
  -F 'attachments[0][file][email protected]'
Inclua o máximo de evidências possível: notas fiscais, comprovantes de entrega, capturas de tela de comunicações com o cliente. Isso aumenta a chance de rejeição do MED ser aceita.

3b. Aceitar o MED (concordar com a devolução)

Use quando a contestação é procedente ou quando você opta por devolver o valor sem disputa:
curl -X POST 'https://app.plowf.com/api/v1/meds/550e8400-e29b-41d4-a716-446655440000/reply' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -H 'Content-Type: multipart/form-data' \
  -F 'accept=1' \
  -F 'analysis=Reconhecemos a transação indevida e concordamos com a devolução integral do valor.'

4. Monitorar o resultado

Após enviar a resposta, continue recebendo webhooks MED para saber o resultado final:
StatusO que significa
ACCEPTEDMED aceito — valor devolvido ao pagador
REJECTEDMED rejeitado — valor permanece na sua conta
CANCELLEDMED cancelado pelo solicitante ou pelo banco
if (event === 'MED' && data.resolved === true) {
  if (data.status === 'REJECTED') {
    console.log('MED rejeitado — valor mantido:', data.uuid);
  } else if (data.status === 'ACCEPTED') {
    console.log('MED aceito — valor devolvido:', data.uuid);
  }
}

Boas práticas

  • Responda dentro do prazo: MEDs não respondidos podem ser aprovados automaticamente pelo Banco Central.
  • Documente tudo: Mantenha registros de pedidos, entregas e comunicações para facilitar contestações futuras.
  • Idempotência: Use o uuid do MED para evitar processar ou responder o mesmo MED mais de uma vez.
  • Monitore por dispute_type: Ajuste sua análise conforme o motivo — SCAM exige mais evidências do que WRONG_TRANSACTION.

Referências