/meds/{medId} Endpoint
Background
/meds/{medId} is the MED detail endpoint for merchants. It returns the complete information of a specific MED, grouped by concern: summary, disputed transaction, payer and payee, the central bank infraction report, funds freeze status, analysis information, and refund (chargeback) history.
Each record returned by Query MED List is a lightweight projection of this endpoint and shares the same structure: list items contain the summary fields plus the transaction, payer (without the bank account), payee, and infractionReport groups; details, funds, analysis, and chargebacks are only returned by this endpoint.
Endpoint
| Item | Value |
|---|---|
| Method | GET |
| Path | /meds/{medId} |
| Content-Type | application/json |
| Purpose | Query MED details |
Authentication
Use ES256 request signing and include all five required headers: X-Merchant-Id, X-Timestamp, X-Nonce, Digest, and Authorization. Set X-Merchant-Id to the merchant number and keyId to the key version, v1 by default. The signature is the DER-encoded ECDSA signature encoded with standard Base64. See Request Signing.
Generate the timestamp, nonce, digest, and signature placeholders for each actual request. The canonical string includes the actual path and raw query; sign again when pagination or filter parameters change.
Request Fields
| Field | Location | Type | Required | Description |
|---|---|---|---|---|
medId | Path | string | Yes | Unique identifier of the MED infraction report to query (the platform case number, medc prefix + digits), maximum length 64 characters. |
Request Example
GET /meds/medc2874510938274639021 HTTP/1.1
Accept: application/json
X-Merchant-Id: <MERCHANT_ID>
X-Timestamp: <UNIX_TIMESTAMP_SECONDS>
X-Nonce: <UNIQUE_NONCE>
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Authorization: Signature keyId="v1",alg="ES256",headers="(request-target) x-timestamp x-nonce digest",signature="<ES256_SIGNATURE_BASE64>"Response Fields
The endpoint uses the standard status, msg, and data response envelope. MED details are returned in data: the top level holds summary fields, and the remaining information is grouped by concern.
Summary Fields
| Field | Type | Returned | Description |
|---|---|---|---|
status | int | Yes | Response code |
msg | string | Yes | Response message corresponding to status. |
data | object | On success | MED details; may be omitted when signature or protocol parsing fails. |
data.medId | string | Yes | Unique MED identifier, the platform case number (medc prefix + digits), maximum length 64 characters. |
data.subMerchantNo | string | Yes | The sub-merchant number that the MED belongs to; always an empty string for direct merchants; can be ignored. |
data.status | string | Yes | Current MED status; see Enums & Statuses in the MED API Overview. |
data.originSituationType | string | Yes | Situation type that triggered the MED; see Enums & Statuses in the MED API Overview. |
data.details | string | Yes | MED description, maximum length 500 characters. |
data.amount | decimal | Yes | Transaction amount involved in the MED; up to 25 digits for the integer part and 4 digits for the decimal part; never negative. |
data.analysisResult | string | No | Analysis result: ACCEPTED (accepted) or REJECTED (rejected); null when no analysis has been made yet. |
data.dueTime | string | No | Evidence submission deadline, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not set. |
data.createdAt | string | Yes | MED record creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ). |
data.updatedAt | string | Yes | MED record last update time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ). |
Transaction (data.transaction)
| Field | Type | Returned | Description |
|---|---|---|---|
data.transaction | object | Yes | The Pix transaction that triggered the MED. |
data.transaction.e2eId | string | Yes | Pix end-to-end transaction ID, corresponding to the bank-side payment reference number; maximum length 64 characters. |
data.transaction.transactionDate | string | No | Time the original transaction occurred, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not provided. |
data.transaction.merchantOrderNo | string | No | Merchant order number, maximum length 64 characters; null when not provided. |
data.transaction.platOrderNo | string | No | Platform order number, maximum length 64 characters; null when not provided. |
Payer (data.payer)
The payer is the party that sent the Pix, i.e., the MED originator (the payer of the disputed transaction).
| Field | Type | Returned | Description |
|---|---|---|---|
data.payer | object | Yes | Payer information. |
data.payer.name | string | No | Payer's name, maximum length 120 characters; null when not provided. |
data.payer.document | string | No | Payer's CPF/CNPJ, maximum length 14 characters; null when not provided. |
data.payer.email | string | Yes | Payer's contact email, maximum length 128 characters. |
data.payer.phone | string | Yes | Payer's contact phone, maximum length 32 characters. |
data.payer.bankAccount | object | Yes | Payer's bank account information (from the Pix transaction). |
data.payer.bankAccount.ispb | string | Yes | Bank ISPB code, maximum length 8 characters. |
data.payer.bankAccount.bank | string | Yes | Bank name, maximum length 100 characters. |
data.payer.bankAccount.agency | string | Yes | Bank branch code, maximum length 10 characters. |
data.payer.bankAccount.account | string | Yes | Account number, maximum length 20 characters. |
data.payer.bankAccount.document | string | Yes | Account holder's document number (CPF/CNPJ), maximum length 14 characters. |
data.payer.bankAccount.name | string | Yes | Account holder's name, maximum length 120 characters. |
Payee (data.payee)
The payee is the party that received the Pix.
| Field | Type | Returned | Description |
|---|---|---|---|
data.payee | object | Yes | Payee information. |
data.payee.name | string | No | Payee's name, maximum length 120 characters; null when not provided. |
data.payee.document | string | No | Payee's CPF/CNPJ, maximum length 14 characters; null when not provided. |
data.payee.bankAccount | object | No | Payee's bank account information; the current version does not return this group (reserved field), always null. |
Infraction Report (data.infractionReport)
| Field | Type | Returned | Description |
|---|---|---|---|
data.infractionReport | object | Yes | Brazilian Central Bank infraction report information. |
data.infractionReport.id | string | No | Infraction report identifier, maximum length 64 characters; null when not provided. |
data.infractionReport.status | string | Yes | Infraction report status: RECEIVED (received), ANALYZED (analysis complete), or CANCELLED (cancelled). |
data.infractionReport.createdAt | string | No | Infraction report creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not provided. |
data.infractionReport.creatorPsp | string | Yes | ISPB code of the PSP that created the infraction report, maximum length 8 characters. |
Funds Status (data.funds)
When a MED is created, the disputed transaction amount is frozen; it is unfrozen once the ruling takes effect or the MED is cancelled. Freezing and unfreezing separately trigger MED_FUNDS_FROZEN / MED_FUNDS_UNFROZEN webhook events; see Webhooks.
| Field | Type | Returned | Description |
|---|---|---|---|
data.funds | object | Yes | Merchant funds freeze status. |
data.funds.status | string | Yes | Funds status; see the funds.status enum below. |
data.funds.amount | decimal | Yes | The disputed amount, identical to data.amount. |
data.funds.frozenAt | string | No | Time the freeze occurred, ISO 8601 UTC time string; this endpoint currently does not return this time (reserved field), always null. |
data.funds.unfrozenAt | string | No | Time the unfreeze occurred, ISO 8601 UTC time string; this endpoint currently does not return this time (reserved field), always null. |
funds.status Funds Status Enum
| Value | Description |
|---|---|
NOT_FROZEN | Not frozen: no fund operation has occurred yet |
PARTIALLY_FROZEN | Partially frozen: the frozen amount has not reached the disputed amount |
FROZEN | Frozen: the frozen amount has reached the disputed amount |
PARTIALLY_UNFROZEN | Partially unfrozen: part of the funds has been unfrozen and some funds remain frozen (no refund has occurred) |
UNFROZEN | Unfrozen: all frozen funds have been unfrozen (no refund has occurred) |
PARTIALLY_REFUNDED | Partially refunded: a refund has occurred and the refunded amount has not reached the disputed amount |
FULLY_REFUNDED | Fully refunded: the refunded amount has reached the disputed amount |
For MEDs that have had a refund,
funds.statusremainsPARTIALLY_REFUNDEDorFULLY_REFUNDEDeven if the remaining frozen amount is later unfrozen. The exact freeze and unfreeze times are authoritative in thefunds.frozenAt/funds.unfrozenAtfields of the webhook events (MED_FUNDS_FROZEN/MED_FUNDS_UNFROZEN).
Analysis (data.analysis)
This group holds the analysis verdict and analysis process information; data.analysis.analysisResult has the same value as the summary field data.analysisResult.
| Field | Type | Returned | Description |
|---|---|---|---|
data.analysis | object | Yes | Analysis information; its inner fields are null until an analysis has been made. |
data.analysis.analysisResult | string | No | Analysis verdict: ACCEPTED (the merchant accepts the MED and agrees to the refund) or REJECTED (the merchant disputes); null when no analysis has been made yet. |
data.analysis.analysisDetailsUser | string | No | Analysis details provided by the user, maximum length 500 characters. |
data.analysis.analysisDetailsPsp | string | No | Analysis details provided by the platform, maximum length 500 characters. |
Chargeback History (data.chargebacks)
Each time the platform executes a refund operation, it delivers a MED_REFUND_EXECUTED webhook event to the merchant (the payload contains all fields of this endpoint's data plus the record of this refund); see Webhooks.
| Field | Type | Returned | Description |
|---|---|---|---|
data.chargebacks | array | No | Refund history list; an empty array when no refund has occurred. |
data.chargebacks[].status | string | Yes | Refund status: PENDING, SUCCESS, or REJECTED. |
data.chargebacks[].infoText | string | Yes | Additional information about the refund, maximum length 255 characters. |
data.chargebacks[].errorDescriptor | string | No | Error description when the refund fails, maximum length 255 characters. |
data.chargebacks[].amount | decimal | Yes | Refund amount. |
data.chargebacks[].createdAt | string | Yes | Refund creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ). |
data.chargebacks[].updatedAt | string | Yes | Refund last update time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ). |
Response Example
{
"status": 200,
"msg": "sucesso",
"data": {
"medId": "medc2874510938274639021",
"subMerchantNo": "",
"status": "ACCEPTED_BY_PSP",
"originSituationType": "SCAM_FRAUD",
"details": "Detailed description of the dispute",
"amount": 1000.50,
"dueTime": "2026-01-31T23:59:59Z",
"createdAt": "2026-01-15T14:30:00Z",
"updatedAt": "2026-01-16T10:30:00Z",
"transaction": {
"e2eId": "E1234567820240115143000123",
"transactionDate": "2026-01-15T14:30:12Z",
"merchantOrderNo": "PIX20260816000001",
"platOrderNo": "P5nosqyWAQsQZNtYa5OW"
},
"payer": {
"name": "João Silva",
"document": "12345678901",
"email": "user@example.com",
"phone": "+5511999999999",
"bankAccount": {
"ispb": "12345678",
"bank": "Banco Example",
"agency": "1234",
"account": "567890",
"document": "12345678901",
"name": "João Silva"
}
},
"payee": {
"name": "John Doe",
"document": "12345678000195",
"bankAccount": null
},
"infractionReport": {
"id": "report-456",
"status": "ANALYZED",
"createdAt": "2026-01-15T14:30:00Z",
"creatorPsp": "12345678"
},
"funds": {
"status": "FULLY_REFUNDED",
"amount": 1000.50,
"frozenAt": null,
"unfrozenAt": null
},
"analysis": {
"analysisResult": "ACCEPTED",
"analysisDetailsUser": "User analysis details",
"analysisDetailsPsp": "PSP confirmed fraudulent transaction"
},
"chargebacks": [
{
"status": "SUCCESS",
"infoText": "Chargeback successful",
"errorDescriptor": null,
"amount": 1000.50,
"createdAt": "2026-01-16T09:20:00Z",
"updatedAt": "2026-01-16T10:30:00Z"
}
]
}
}Response Error Codes
Back to MED API Overview