MED 2.0 is a BACEN regulatory requirement. There is no alternative path — clients must operate Funds Recovery through the plugin to remain compliant.
Concepts
| Term | Definition |
|---|---|
| Funds Recovery | The MED 2.0 process that recovers funds across multiple accounts after a reported fraud |
| Tracking Graph | A representation of how funds flowed across accounts, persons, and transactions |
| Root transaction | The original fraudulent Pix transaction that starts the recovery |
| Infraction Report | A report of a fraudulent/problematic transaction, now linked to its parent Funds Recovery |
| Refund Request | A request to return blocked funds to the victim |
Lifecycle and status
A Funds Recovery moves through the following states:

| Status | Description |
|---|---|
CREATED | Initial state after creation |
TRACKED | Tracking graph generated |
AWAITING_ANALYSIS | Blocking flow started, awaiting infraction report analysis |
ANALYSED | All infraction reports analysed, ready for refund |
REFUNDING | Refund requests initiated |
COMPLETED | All refunds completed |
CANCELLED | Recovery cancelled (only allowed before refund starts) |
Endpoints
All Funds Recovery endpoints live under the DICT domain and require the
X-Account-Id header.
| Method | Endpoint | Description |
|---|---|---|
POST | /v1/dict/funds-recoveries | Create a funds recovery |
GET | /v1/dict/funds-recoveries/{id} | Consult a funds recovery |
PATCH | /v1/dict/funds-recoveries/{id} | Update situation type and contact info |
POST | /v1/dict/funds-recoveries/{id}/cancel | Cancel (before refund starts) |
GET | /v1/dict/funds-recoveries/{id}/tracking-graph | View the tracking graph |
GET | /v1/dict/funds-recoveries/{id}/infraction-reports | List linked infraction reports |
POST | /v1/dict/funds-recoveries/{id}/refund | Request refunds (status must be ANALYSED) |
GET | /v1/dict/funds-recoveries/{id}/refunds | List refund requests |
Create a funds recovery
Validation rules
| Field | Requirement |
|---|---|
rootTransactionId | Required, 32 alphanumeric characters |
situationType | Required — one of SCAM, ACCOUNT_TAKEOVER, COERCION, FRAUDULENT_ACCESS, OTHER, UNKNOWN |
contactInformation | Required — object with email and/or phone |
trackingGraphParameters.minTransactionAmount | Optional, positive decimal |
trackingGraphParameters.maxTransactions | Optional, 1–1000 |
trackingGraphParameters.hopWindow | Optional, ISO 8601 duration (e.g. PT24H) |
trackingGraphParameters.maxHops | Optional, 1–10 |
CREATED.
Tracking graph
The tracking graph is fetched fresh from BTG on every call (stateless). It returns the persons, accounts, and transactions involved in the fraud flow, including refundable amounts per transaction.
parameters— the graph generation parameterspersons[]— natural and legal persons involvedaccounts[]— accounts in the flow with their participant ISPBstransactions[]— Pix transactions with amounts and refundable amounts
Request refunds
Once the recovery reaches
ANALYSED, request the return of blocked funds:
REFUNDING, and returns HTTP 200. Track individual refund statuses with List Refunds.
X-Purpose header (MED 2.0 transfers)
MED 2.0 refund transfers must carry a transaction purpose. The cashout endpoint accepts an optional
X-Purpose header that the plugin maps to BTG’s transactionType.
| Value | Description | BTG transactionType |
|---|---|---|
TRANSFER | Standard Pix transfer (default when header is omitted) | TRANSFER |
INSTANT_PAYMENT_REFUND | MED 2.0 refund transfer | INSTANT_PAYMENT_REFUND |
purpose value is also returned on transfer responses (Retrieve a Pix Transfer and list endpoints), defaulting to TRANSFER for existing records.
Correlation fields
To correlate disputes with their parent recovery, two existing entities now expose a nullable
fundRecoveryId:
- Infraction reports — Retrieve an Infraction Report and the list endpoint
- Refund requests — Retrieve a Refund Request and the list endpoint
null for records created outside the MED 2.0 flow.
Webhooks
Two inbound webhooks from BTG drive the Funds Recovery flow, each producing a matching outbound event to your system:
Outbound entityType | Trigger | Behavior |
|---|---|---|
FUNDS_RECOVERY | BTG DictHubFundsRecovery | Plugin updates the local record, then notifies your system with the full entity |
FUNDS_RECOVERY_EVENT | BTG DictHubFundsRecoveryEvents | Pass-through lifecycle event — no database update |
flowType: DICT. See the Webhooks guide for envelope format, retries, and routing.
Funds recovery entity event:
event values: FUNDS_RECOVERY_ANALYSED, FUNDS_RECOVERY_COMPLETED, FUNDS_RECOVERY_INFORMATION_UPDATED, FUNDS_RECOVERY_CANCELLED.
Deprecation notice
Next steps
- Refund operations — Distributed partial refunds and unblocking stuck refunds
- Webhooks — Event envelope, retries, and routing
- Main domains: MED — MED dispute and refund concepts
- API reference — Full API documentation

