Skip to main content
GET
Get a Transfer

Authorizations

Authorization
string
header
required

JWT Bearer token authentication. The tenantId is derived from the bearer token or authenticated request context and is not supplied through X-Organization-Id.

Headers

X-Organization-Id
string<uuid>
required

Midaz organization scope for the request, used for downstream CRM, Fees, and Midaz calls. Required on org-scoped transfer routes in every deployment mode; a missing or non-UUID value returns 400. This is not the tenant identifier — tenantId is derived from the bearer JWT or authenticated context, never from this header. Background workers (TED IN poller, reconciliation) have no request header and, in single-tenant mode, fall back to the deployment's ORGANIZATION_ID env.

Path Parameters

transferId
string<uuid>
required

The unique identifier of the transfer.

Response

Indicates that the transfer was found and its details are returned.

transferId
string<uuid>
required

The unique identifier of the transfer.

Example:

"019c96a0-ab10-7cde-f1a2-0e1f2a3b4c5d"

type
enum<string>
required

The type of transfer. TED_OUT is an outgoing transfer to an external bank via JD SPB. TED_IN is an incoming transfer from an external bank. P2P is a peer-to-peer transfer within the same institution (same ISPB).

Available options:
TED_OUT,
TED_IN,
P2P
Example:

"TED_OUT"

status
enum<string>
required

The current status of the transfer. For TED OUT: CREATED → PENDING → PROCESSING → COMPLETED, REJECTED, or FAILED. For P2P: CREATED → PROCESSING → COMPLETED or FAILED (PENDING is an SPB-specific state and does not apply to P2P). Transfers can be CANCELLED while in CREATED or PENDING status. For TED IN: RECEIVED → PROCESSING → COMPLETED or FAILED. A COMPLETED TED IN can also transition to FAILED in the event of a chargeback.

Available options:
CREATED,
PENDING,
PROCESSING,
COMPLETED,
REJECTED,
FAILED,
CANCELLED,
RECEIVED
Example:

"COMPLETED"

organizationId
string<uuid>
required

The Midaz organization that the transfer is filed under. It equals the X-Organization-Id of the request.

Example:

"019c96a0-0a98-7287-9a31-786e0809c769"

ledgerId
string<uuid>
required

The Midaz ledger that the transfer is filed under. Always present. The all-zeroes UUID means that the scope is unrepaired. See Repair Transfer Ledger Scope.

Example:

"019c96a0-0b10-7c2d-8e3f-4a5b6c7d8e9f"

senderAccountId
string<uuid>
required

UUID of the sender account. Always present. For TED IN, where the sender is an external bank with no local account, this is a synthetic identifier deterministically derived from the sender's document.

Example:

"019c96a0-0c0c-7221-8cf3-13313fb60081"

recipient
object
required
amount
number<decimal>
required

The transfer amount without the fee.

Example:

1000.5

feeAmount
number<decimal>
required

The fee charged for this transfer.

Example:

1.5

totalAmount
number<decimal>
required

The amount debited from the sender's account: the transfer amount plus any fee charged on top. For TED IN, the gross amount received.

Example:

1002

createdAt
string<date-time>
required

The timestamp when the transfer was created.

Example:

"2026-02-01T18:30:00Z"

updatedAt
string<date-time>
required

The timestamp of the last status update.

Example:

"2026-02-01T18:35:00Z"

statusHistory
object[]
required

The history of status transitions for this transfer.

reconciliationAttempts
integer
required

The number of settlement queries already sent for this transfer. Always present, zero included.

Example:

0

originalTransferId
string<uuid> | null

For TED IN devolutions, the ID of the original incoming transfer being returned.

Example:

"019c96a0-ab10-7cde-f1a2-0e1f2a3b4c5d"

devolutionCode
string | null

BACEN devolution reason code, present only when the transfer is a devolution.

Example:

"18"

recipientAccountId
string<uuid> | null

UUID of the recipient account, when the recipient is represented as a Midaz account.

Example:

"019c96a0-ac10-7efa-b1c2-2a3b4c5d6e7f"

confirmationNumber
string | null

The human-readable confirmation code, if available.

Maximum string length: 20
Example:

"20260201001"

controlNumber
string | null

The JD SPB control number, present for TED OUT and TED IN transfers.

Maximum string length: 20
Example:

"202602010001"

midazTransactionId
string<uuid> | null

The corresponding Midaz ledger transaction ID.

Example:

"019c96a0-ac10-7efa-b1c2-2a3b4c5d6e7f"

description
string | null

The purpose or description of the transfer.

Maximum string length: 140
Example:

"Payment for services"

metadata
object

Metadata that this service records on the transfer, as key-value pairs. The metadata that you sent on Initiate Transfer is in clientMetadata.

clientMetadata
object

The metadata that you sent on Initiate Transfer, as key-value pairs. Absent when the transfer carries none. A TED IN transfer carries none.

Example:
completedAt
string<date-time> | null

The timestamp when the transfer was completed. Null if not yet completed.

Example:

"2026-02-01T18:35:00Z"

reconciliationStatus
enum<string>

The reconciliation state of the transfer, as stored. EXHAUSTED has the same meaning as MANUAL_REVIEW. Absent on a transfer that never entered reconciliation.

Available options:
AWAITING,
RESOLVED,
REVERSING,
REVERTED,
EXHAUSTED,
MANUAL_REVIEW
Example:

"MANUAL_REVIEW"

lastReconciliationAttemptAt
string<date-time>

The time of the most recent settlement query, when one was sent.

Example:

"2026-02-01T15:40:00Z"

reconciliationReasonCode
string

Why the transfer entered reconciliation, in the vocabulary of the system that decided it. Absent when no reason is recorded.

Example:

"JD_UNAVAILABLE"

reconciliationReasonClass
string

The class of reconciliationReasonCode. Absent when no reason is recorded.

Example:

"transient"

settlementRejectionCode
string

The rejection code of the clearing house, verbatim, for example AAC90 or ALN01. Absent when there is none.

Example:

"ALN01"