/meds/{medId}
Background
/meds/{medId} is the MED detail endpoint for partners. 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 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 partner's top-level merchant number and keyId to the key version, v1 by default. The signature is a 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 | Always Returned | Description |
|---|---|---|---|
status | int | Yes | Response code |
msg | string | Yes | Corresponds to status |
data | object | On success | MED details; may be omitted when the request fails at signature verification or protocol parsing. |
data.medId | string | Yes | Unique MED identifier, the platform case number (medc prefix + digits), maximum length 64 characters. |
data.subMerchantNo | string | Yes | Sub-merchant number that owns the MED, maximum length 64 characters. |
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 | Always 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 | Always 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 | Always 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; not returned in the current version (reserved field), always null. |
Infraction Report (data.infractionReport)
| Field | Type | Always 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)
The platform freezes the disputed transaction amount before the ruling is made, and may also freeze additional funds after the platform rules the MED valid (ACCEPTED_BY_PSP); freezing can happen in several steps, and the frozen amount plus the amount already refunded never exceeds the disputed amount. After the platform ruling upholds the MED, the refund is executed and the remaining frozen amount can be unfrozen; funds are unfrozen after the platform ruling rejects the MED (REJECTED_BY_PSP) or the MED is cancelled. No fund operation takes place after the case is closed (CLOSED). Fund freezing, unfreezing, and refund execution separately trigger MED_FUNDS_FROZEN / MED_FUNDS_UNFROZEN / MED_REFUND_EXECUTED webhook events; see Webhooks.
| Field | Type | Always Returned | Description |
|---|---|---|---|
data.funds | object | Yes | Partner funds freeze status. |
data.funds.status | string | Yes | Funds status; see the funds.status enum below. |
data.funds.amount | decimal | Yes | 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 it (reserved field), always null. |
data.funds.unfrozenAt | string | No | Time the unfreeze occurred, ISO 8601 UTC time string; this endpoint currently does not return it (reserved field), always null. |
funds.status Funds Status Enum
| Value | Description |
|---|---|
NOT_FROZEN | Not frozen: no fund operation has taken place yet |
PARTIALLY_FROZEN | Partially frozen: the frozen amount is below the disputed amount |
FROZEN | Frozen: the frozen amount has reached the disputed amount |
PARTIALLY_UNFROZEN | Partially unfrozen: part of the frozen amount has been unfrozen and some funds are still frozen (no refund has taken place) |
UNFROZEN | Unfrozen: all frozen funds have been unfrozen (no refund has taken place) |
PARTIALLY_REFUNDED | Partially refunded: a refund has taken place and the refunded amount is below the disputed amount |
FULLY_REFUNDED | Fully refunded: the refunded amount has reached the disputed amount |
Once a refund has taken place, funds.status stays PARTIALLY_REFUNDED or FULLY_REFUNDED even if the remaining frozen amount is later unfrozen. The exact freeze and unfreeze times are authoritative in the webhook events (MED_FUNDS_FROZEN / MED_FUNDS_UNFROZEN) via funds.frozenAt / funds.unfrozenAt.
Analysis (data.analysis)
This group contains the analysis verdict and the analysis process information; data.analysis.analysisResult matches the summary field data.analysisResult.
| Field | Type | Always Returned | Description |
|---|---|---|---|
data.analysis | object | Yes | Analysis information; its inner fields are null when no analysis has been made yet. |
data.analysis.analysisResult | string | No | Analysis verdict: ACCEPTED (the partner accepts the MED and agrees to the refund) or REJECTED (the partner 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 partner (the payload contains all fields of this endpoint's data plus the record of that refund); see Webhooks.
| Field | Type | Always 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": "24922653000123",
"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