Skip to content

/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 ​

ItemValue
MethodGET
Path/meds/{medId}
Content-Typeapplication/json
PurposeQuery 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 ​

FieldLocationTypeRequiredDescription
medIdPathstringYesUnique identifier of the MED infraction report to query (the platform case number, medc prefix + digits), maximum length 64 characters.

Request Example ​

http
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 ​

FieldTypeAlways ReturnedDescription
statusintYesResponse code
msgstringYesCorresponds to status
dataobjectOn successMED details; may be omitted when the request fails at signature verification or protocol parsing.
data.medIdstringYesUnique MED identifier, the platform case number (medc prefix + digits), maximum length 64 characters.
data.subMerchantNostringYesSub-merchant number that owns the MED, maximum length 64 characters.
data.statusstringYesCurrent MED status; see Enums & Statuses in the MED API Overview.
data.originSituationTypestringYesSituation type that triggered the MED; see Enums & Statuses in the MED API Overview.
data.detailsstringYesMED description, maximum length 500 characters.
data.amountdecimalYesTransaction amount involved in the MED; up to 25 digits for the integer part and 4 digits for the decimal part; never negative.
data.analysisResultstringNoAnalysis result: ACCEPTED (accepted) or REJECTED (rejected); null when no analysis has been made yet.
data.dueTimestringNoEvidence submission deadline, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not set.
data.createdAtstringYesMED record creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ).
data.updatedAtstringYesMED record last update time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ).

Transaction (data.transaction) ​

FieldTypeAlways ReturnedDescription
data.transactionobjectYesThe Pix transaction that triggered the MED.
data.transaction.e2eIdstringYesPix end-to-end transaction ID, corresponding to the bank-side payment reference number, maximum length 64 characters.
data.transaction.transactionDatestringNoTime the original transaction occurred, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not provided.
data.transaction.merchantOrderNostringNoMerchant order number, maximum length 64 characters; null when not provided.
data.transaction.platOrderNostringNoPlatform 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).

FieldTypeAlways ReturnedDescription
data.payerobjectYesPayer information.
data.payer.namestringNoPayer's name, maximum length 120 characters; null when not provided.
data.payer.documentstringNoPayer's CPF/CNPJ, maximum length 14 characters; null when not provided.
data.payer.emailstringYesPayer's contact email, maximum length 128 characters.
data.payer.phonestringYesPayer's contact phone, maximum length 32 characters.
data.payer.bankAccountobjectYesPayer's bank account information (from the Pix transaction).
data.payer.bankAccount.ispbstringYesBank ISPB code, maximum length 8 characters.
data.payer.bankAccount.bankstringYesBank name, maximum length 100 characters.
data.payer.bankAccount.agencystringYesBank branch code, maximum length 10 characters.
data.payer.bankAccount.accountstringYesAccount number, maximum length 20 characters.
data.payer.bankAccount.documentstringYesAccount holder's document number (CPF/CNPJ), maximum length 14 characters.
data.payer.bankAccount.namestringYesAccount holder's name, maximum length 120 characters.

Payee (data.payee) ​

The payee is the party that received the Pix.

FieldTypeAlways ReturnedDescription
data.payeeobjectYesPayee information.
data.payee.namestringNoPayee's name, maximum length 120 characters; null when not provided.
data.payee.documentstringNoPayee's CPF/CNPJ, maximum length 14 characters; null when not provided.
data.payee.bankAccountobjectNoPayee's bank account information; not returned in the current version (reserved field), always null.

Infraction Report (data.infractionReport) ​

FieldTypeAlways ReturnedDescription
data.infractionReportobjectYesBrazilian Central Bank infraction report information.
data.infractionReport.idstringNoInfraction report identifier, maximum length 64 characters; null when not provided.
data.infractionReport.statusstringYesInfraction report status: RECEIVED (received), ANALYZED (analysis complete), or CANCELLED (cancelled).
data.infractionReport.createdAtstringNoInfraction report creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ); null when not provided.
data.infractionReport.creatorPspstringYesISPB 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.

FieldTypeAlways ReturnedDescription
data.fundsobjectYesPartner funds freeze status.
data.funds.statusstringYesFunds status; see the funds.status enum below.
data.funds.amountdecimalYesDisputed amount, identical to data.amount.
data.funds.frozenAtstringNoTime the freeze occurred, ISO 8601 UTC time string; this endpoint currently does not return it (reserved field), always null.
data.funds.unfrozenAtstringNoTime the unfreeze occurred, ISO 8601 UTC time string; this endpoint currently does not return it (reserved field), always null.

funds.status Funds Status Enum ​

ValueDescription
NOT_FROZENNot frozen: no fund operation has taken place yet
PARTIALLY_FROZENPartially frozen: the frozen amount is below the disputed amount
FROZENFrozen: the frozen amount has reached the disputed amount
PARTIALLY_UNFROZENPartially unfrozen: part of the frozen amount has been unfrozen and some funds are still frozen (no refund has taken place)
UNFROZENUnfrozen: all frozen funds have been unfrozen (no refund has taken place)
PARTIALLY_REFUNDEDPartially refunded: a refund has taken place and the refunded amount is below the disputed amount
FULLY_REFUNDEDFully 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.

FieldTypeAlways ReturnedDescription
data.analysisobjectYesAnalysis information; its inner fields are null when no analysis has been made yet.
data.analysis.analysisResultstringNoAnalysis 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.analysisDetailsUserstringNoAnalysis details provided by the user, maximum length 500 characters.
data.analysis.analysisDetailsPspstringNoAnalysis 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.

FieldTypeAlways ReturnedDescription
data.chargebacksarrayNoRefund history list; an empty array when no refund has occurred.
data.chargebacks[].statusstringYesRefund status: PENDING, SUCCESS, or REJECTED.
data.chargebacks[].infoTextstringYesAdditional information about the refund, maximum length 255 characters.
data.chargebacks[].errorDescriptorstringNoError description when the refund fails, maximum length 255 characters.
data.chargebacks[].amountdecimalYesRefund amount.
data.chargebacks[].createdAtstringYesRefund creation time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ).
data.chargebacks[].updatedAtstringYesRefund last update time, ISO 8601 UTC time string (yyyy-MM-ddTHH:mm:ssZ).

Response Example ​

json
{
  "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