# MED (特殊退款机制) (/zh/docs/pix-processamento/med)

<QuickLinks>
  <QuickLink href="/docs/pix-processamento/endpoints/infractions/get_infractions" title="MED Endpoints" />

  <QuickLink href="/docs/pix-processamento/tutoriais/infractions" title="抗辩教程" />

  <QuickLink href="/docs/pix-processamento/webhooks" title="Webhooks" />

  <QuickLink href="/docs/pix-processamento/trueholder" title="TrueHolder" />
</QuickLinks>

**MED (特殊退款机制)** 是巴西央行的一项程序,用于保护
Pix 用户在欺诈、骗局或未授权交易情况下的
权益。

它作为安排的 &#x2A;*"安全网"** 运作:当识别到
可疑活动时,付款方机构发起正式流程
请求退款。

<Callout type="info">
  在 PayZu,MED 流程通过 **webhook** 交付,复用
  交易的同一个 `callbackUrl`。原交易的状态会
  被更新,`infraction` 对象会插入到 payload 中。
</Callout>

## MED 概念流程 [#med-概念流程]

<Mermaid
  chart="`
flowchart TD
  A[&#x22;付款方发起争议&#x22;]
  A --> B{&#x22;您是否回应?&#x22;}
  B -->|提交抗辩| C[&#x22;Bacen 分析&#x22;]
  B -->|仅等待| C
  C --> D{&#x22;结果&#x22;}
  D -->|接受付款方| E[&#x22;退还金额&#x22;]
  D -->|拒绝付款方| F[&#x22;保留付款&#x22;]

  click A &#x22;/zh/docs/pix-processamento/endpoints/infractions/get_infractions&#x22; &#x22;GET /user/infractions&#x22;
  click B &#x22;/zh/docs/pix-processamento/endpoints/infractions/post_infractions_defense&#x22; &#x22;POST 抗辩&#x22;
  click C &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;Bacen 可能请求信息 (ANSWERED) 或文件 (WAITING_ADJUSTMENTS)&#x22;
  click D &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;结果:CLOSED + AGREED (接受) 或 DISAGREED (拒绝)&#x22;
  click E &#x22;#quando-a-infração-é-agreed&#x22; &#x22;原交易变为 REFUNDED&#x22;
  click F &#x22;#quando-a-infração-é-disagreed&#x22; &#x22;交易保持 COMPLETED&#x22;

  style A fill:#f59e0b,stroke:#d97706,color:#ffffff
  style E fill:#ef4444,stroke:#dc2626,color:#ffffff
  style F fill:#14ce71,stroke:#0eb464,color:#ffffff
`"
/>

高层流程:

1. **Pix 交易成功完成**。
2. **识别到问题** (欺诈、错误、未授权扣款)。
3. **付款方机构在安排中发起 MED**,webhook 到达时
   `status: "OPEN"`。
4. **收款银行收到通知**,可能在分析期间冻结金额。
5. **由机构分析争议** + Bacen 规则。
6. **结果**:接受 (`AGREED`,退还金额) 或拒绝
   (`DISAGREED`,交易保持有效)。

## 包含 infraction 的 webhook 示例 [#包含-infraction-的-webhook-示例]

Pix 交易遭遇 infraction 时收到的真实
payload 示例:

```json
{
  "id": "PAYZU20260811K7M2X9QP4T000000",
  "type": "DEPOSIT",
  "status": "COMPLETED",
  "serviceFeeCharged": 1,
  "amount": 30,
  "clientReference": "d2b2a5ed-f1a4-477e-81da-9",
  "qrCodeText": "00020101021226870014br.gov.bcb.pix...",
  "payerName": "João da Silva",
  "payerDocument": "12345678901",
  "payerInstitutionName": "PAYZU IP",
  "receiverName": "PAYZU LTDA",
  "receiverDocument": "123456789010110",
  "endToEndId": "E18236120202608111046s1235ee7a91",
  "paidAt": "2026-08-11T10:46:26.986Z",
  "createdAt": "2026-08-11T10:45:18.403Z",
  "updatedAt": "2026-08-11T10:46:27.346Z",
  "callbackUrl": "https://seuwebhook.com",
  "infraction": {
    "id": "cmide759mb9i3s601bhwf6e",
    "protocol": "4dd32924-9b53-4408-af4b-6d3b4d7ac",
    "status": "OPEN",
    "type": "REFUND_REQUEST",
    "reportDetails": "Relato de fraude: transação contestada formalmente pelo pagador",
    "reportedBy": "DEBITED_PARTICIPANT",
    "analysisResult": null,
    "analysisDetails": null,
    "reportedAt": "2026-08-24T16:52:15.808Z",
    "createdAt": "2026-08-24T17:00:00.490Z",
    "updatedAt": "2026-08-24T17:00:00.490Z"
  }
}
```

## `infraction` 对象的字段 [#infraction-对象的字段]

| 字段                | 类型                     | 描述                |
| ----------------- | ---------------------- | ----------------- |
| `id`              | string                 | infraction 的唯一标识符 |
| `protocol`        | string                 | 支付提供商的协议编号        |
| `status`          | InfractionStatus       | infraction 的当前状态  |
| `type`            | InfractionType         | infraction 的类型    |
| `reportDetails`   | string                 | 争议原因的描述           |
| `reportedBy`      | ReportedBy             | 谁报告了 infraction   |
| `analysisResult`  | AnalysisResult \| null | 最终决定 (待定时为 null)  |
| `analysisDetails` | string \| null         | 决定的理由             |
| `reportedAt`      | string                 | 报告时间              |
| `expiresAt`       | string \| null         | 解决期限              |
| `createdAt`       | string                 | 创建日期              |
| `updatedAt`       | string                 | 最后更新时间            |

`status`、`type`、`reportedBy` 和 `analysisResult` 的完整取值见 [术语表](/docs/pix-processamento/glossary)。

## 收到 infraction 时如何应对 [#收到-infraction-时如何应对]

<Steps>
  <Step>
    ### 检测回调 [#检测回调]

    当 `infraction` 对象到达 payload 时,**立即**触发内部告警。Bacen 的期限很短,通常为 72 小时,沉默通常被解读为接受。

    ```ts
    if (callback.infraction?.status === 'OPEN') {
      await alertOperations({
        transactionId: callback.id,
        infractionId: callback.infraction.id,
        expiresAt: callback.infraction.expiresAt,
        reportDetails: callback.infraction.reportDetails,
      });
    }
    ```
  </Step>

  <Step>
    ### 调查 [#调查]

    使用 [`GET /user/infractions/{id}`](/docs/pix-processamento/endpoints/infractions/get_infractions_by_id) 获取争议、原交易和期限的完整详情。与您的日志交叉核对:

    * 付款前的 DICT 日志 (如果是 Pix 付款)
    * 谁在您的系统中执行了该操作
    * 客户的 IP、设备、会话
    * 该 `payerDocument` 的交易历史
  </Step>

  <Step>
    ### 决策:抗辩或接受 [#决策抗辩或接受]

    | 场景                 | 推荐决策                                                                                                                       |
    | ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
    | 合法收款,有产品/服务交付证据    | **抗辩** 通过 [`POST /user/infractions/{id}/defenses`](/docs/pix-processamento/endpoints/infractions/post_infractions_defense) |
    | 您这边确有欺诈嫌疑 (客户已被入侵) | **接受** (不抗辩)。金额被退还,案件关闭。                                                                                                   |
    | 您没有证据              | 视具体情况评估。无抗辩时,Bacen 倾向于接受异议。                                                                                                |
  </Step>

  <Step>
    ### 跟踪直到 `CLOSED` [#跟踪直到-closed]

    infraction 经过若干状态 (`OPEN → ACKNOWLEDGED/DEFENDED → ANSWERED/WAITING_ADJUSTMENTS → CLOSED`)。每次变更都会产生新的回调。最终结果在 `status: "CLOSED"` 时通过 `analysisResult` 给出。
  </Step>
</Steps>

## 完整生命周期 [#完整生命周期]

<Mermaid
  chart="`
flowchart TD
  A[&#x22;Infraction 已开启&#x22;]
  A --> B[&#x22;您仅等待&#x22;]
  A --> C[&#x22;您提交抗辩&#x22;]
  B --> D[&#x22;Bacen 分析&#x22;]
  C --> D
  D --> E[&#x22;自动退款&#x22;]
  D --> F[&#x22;无影响&#x22;]

  click A &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;状态:OPEN&#x22;
  click B &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;状态:ACKNOWLEDGED (默认)&#x22;
  click C &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;状态:DEFENDED&#x22;
  click D &#x22;/zh/docs/pix-processamento/glossary&#x22; &#x22;Bacen 可能请求信息 (ANSWERED) 或文件 (WAITING_ADJUSTMENTS)&#x22;
  click E &#x22;#quando-a-infração-é-agreed&#x22; &#x22;CLOSED + 结果 AGREED。交易变为 REFUNDED&#x22;
  click F &#x22;#quando-a-infração-é-disagreed&#x22; &#x22;CLOSED + 结果 DISAGREED。无财务影响&#x22;

  style A fill:#f59e0b,stroke:#d97706,color:#ffffff
  style E fill:#ef4444,stroke:#dc2626,color:#ffffff
  style F fill:#14ce71,stroke:#0eb464,color:#ffffff
`"
/>

## 财务影响 [#财务影响]

### 当 infraction 为 AGREED 时 [#当-infraction-为-agreed-时]

原交易(`COMPLETED`)经过 `WAITING_FOR_REFUND`,金额从余额扣除,交易最终变为 `REFUNDED`,并发送完成 webhook。实际退回的金额见回调中的 `refundAmount`,可能与原始 `amount` 不同。

### 当 infraction 为 DISAGREED 时 [#当-infraction-为-disagreed-时]

不退款:余额保持不变,交易仍为 `COMPLETED`。

## 下一步 [#下一步]

<QuickLinks>
  <QuickLink href="/docs/pix-processamento/tutoriais/infractions" title="抗辩教程" />

  <QuickLink href="/docs/pix-processamento/glossary" title="术语表" />
</QuickLinks>