---
title: "Get a Transaction by ID"
method: GET
path: "/v0/transactions/{txnId}"
tags: ["Transactions"]
---

# Get a Transaction by ID

`GET /v0/transactions/{txnId}`

<Callout intent="warning">
  The endpoints exposed here are currently in **Beta**! As we continue to build our initial offering, these endpoints may implement breaking changes. Be sure to check back for our change log regularly as a precaution.
</Callout>

Retrieve one settled transaction by id, with its per-leg breakdown. Each leg carries a `direction` (`FROM_AGORA` or `TO_AGORA`) and a rail-specific `detail` keyed by `type`: `token` (`transactionHash`), `wire` (Fedwire `imad`), `bookTransfer`, or `instantPayment` (`confirmationNumber`). A `fee` leg is a manual accounting entry and carries no rail reference. A `404` means no such transaction exists for your organization.

## Path parameters

- `txnId` string, uuid, required

## Headers

- `Authorization` string, required

## Response `200`

OK

- TransactionsGetbyidResponse200 — A single settled transaction with its per-leg breakdown.
  - `id` string, uuid, required — Stable UUID identifying this transaction; pass to the detail endpoint to fetch legs.
  - `initiatedAt` string, date-time, required — ISO-8601 timestamp of the first leg.
  - `isInstantSettlement` boolean, required — True if this transaction used Agora's instant-settlement path rather than standard settlement.
  - `legCount` integer, required — Number of customer-facing legs in this transaction.
  - `recipient` union, required — The counterparty receiving value, with the totals it received.
    - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient0
      - `kind` 'bank', required — Discriminator: the counterparty is a bank account.
      - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
      - `accountNumber` string, nullable, required — Bank account number. Null when unknown.
      - `bankName` string, nullable, required — Name of the financial institution, when known.
      - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - `amounts` V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf0AmountsItems[], required — Per-currency totals moved on this side of the transaction, one entry per currency.
        - `amount` string, required — Decimal amount as a string (avoids floating-point precision loss).
        - `currency` string, required — Currency code, e.g. `usd`, `ausd`, `usdc`.
    - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipient1
      - `kind` 'wallet', required — Discriminator: the counterparty is a blockchain address.
      - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
      - `address` string, nullable, required — On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown.
      - `chain` string, required — Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values.
      - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - `amounts` V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaRecipientOneOf1AmountsItems[], required — Per-currency totals moved on this side of the transaction, one entry per currency.
        - `amount` string, required — Decimal amount as a string (avoids floating-point precision loss).
        - `currency` string, required — Currency code, e.g. `usd`, `ausd`, `usdc`.
  - `settledAt` string, date-time, nullable, required — ISO-8601 timestamp when the transaction settled. Null until settled.
  - `source` union, required — The counterparty sending value, with the totals it sent.
    - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource0
      - `kind` 'bank', required — Discriminator: the counterparty is a bank account.
      - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
      - `accountNumber` string, nullable, required — Bank account number. Null when unknown.
      - `bankName` string, nullable, required — Name of the financial institution, when known.
      - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - `amounts` V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf0AmountsItems[], required — Per-currency totals moved on this side of the transaction, one entry per currency.
        - `amount` string, required — Decimal amount as a string (avoids floating-point precision loss).
        - `currency` string, required — Currency code, e.g. `usd`, `ausd`, `usdc`.
    - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSource1
      - `kind` 'wallet', required — Discriminator: the counterparty is a blockchain address.
      - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
      - `address` string, nullable, required — On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown.
      - `chain` string, required — Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values.
      - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - `amounts` V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaSourceOneOf1AmountsItems[], required — Per-currency totals moved on this side of the transaction, one entry per currency.
        - `amount` string, required — Decimal amount as a string (avoids floating-point precision loss).
        - `currency` string, required — Currency code, e.g. `usd`, `ausd`, `usdc`.
  - `status` string, required — Lifecycle status. v1 emits only `"settled"`. This is an open, extensible enum; future values (e.g. `pending`) may appear, so clients must tolerate unknown values.
  - `type` string, required — Customer-facing transaction type: `mint`, `redeem`, `bridge`, `reward`, or `return`. Treated as an open enum; tolerate unknown values.
  - `legs` V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItems[], required — The customer-facing legs that make up this transaction.
    - `id` string, uuid, required — Stable UUID identifying this leg.
    - `amount` string, required — Decimal amount moved on this leg, as a string (avoids floating-point precision loss).
    - `currency` string, required — Currency code, e.g. `usd`, `ausd`, `usdc`. Treated as an open enum; tolerate unknown values.
    - `detail` union, required — Rail-specific identifiers for the leg, shaped by the settlement rail.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail0 — Book-transfer leg detail.
        - `type` 'bookTransfer', required — Discriminator: the leg settled as an internal book transfer.
        - `confirmationNumber` string, nullable, required — Book-transfer confirmation number. Null when not yet known.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail1 — Fee leg detail. A manual accounting entry with no rail identifier.
        - `type` 'fee', required — Discriminator: the leg is a manual fee entry.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail2 — Instant-payment leg detail.
        - `type` 'instantPayment', required — Discriminator: the leg settled over an instant-payment rail.
        - `confirmationNumber` string, nullable, required — Instant-payment confirmation number. Null when not yet known.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail3 — On-chain (token) leg detail.
        - `type` 'token', required — Discriminator: the leg settled on-chain.
        - `transactionHash` string, nullable, required — On-chain transaction hash. Null when not yet known.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsDetail4 — Wire-transfer leg detail.
        - `type` 'wire', required — Discriminator: the leg settled over a wire transfer.
        - `imad` string, nullable, required — Fedwire IMAD (Input Message Accountability Data) identifying the wire. Null when not yet known.
    - `direction` 'FROM_AGORA' | 'TO_AGORA', required — Direction of value movement relative to Agora: `FROM_AGORA` (Agora → customer) or `TO_AGORA` (customer → Agora).
    - `occurredAt` string, date-time, required — ISO-8601 timestamp when this leg occurred.
    - `recipient` union, required — The counterparty receiving value on this leg.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient0
        - `kind` 'bank', required — Discriminator: the counterparty is a bank account.
        - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
        - `accountNumber` string, nullable, required — Bank account number. Null when unknown.
        - `bankName` string, nullable, required — Name of the financial institution, when known.
        - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsRecipient1
        - `kind` 'wallet', required — Discriminator: the counterparty is a blockchain address.
        - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
        - `address` string, nullable, required — On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown.
        - `chain` string, required — Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values.
        - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
    - `source` union, required — The counterparty sending value on this leg.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource0
        - `kind` 'bank', required — Discriminator: the counterparty is a bank account.
        - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
        - `accountNumber` string, nullable, required — Bank account number. Null when unknown.
        - `bankName` string, nullable, required — Name of the financial institution, when known.
        - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.
      - V0TransactionsTxnIdGetResponsesContentApplicationJsonSchemaLegsItemsSource1
        - `kind` 'wallet', required — Discriminator: the counterparty is a blockchain address.
        - `accountId` string, uuid, nullable, required — UUID of the customer account this counterparty maps to (same id as `/v0/accounts`), or null when the address is not a known account (e.g. the Agora side). Bank counterparties currently always return null; bank-to-account linkage is not derived yet.
        - `address` string, nullable, required — On-chain address, EIP-55 checksummed for EVM. Public on-chain data, returned in full. Null when unknown.
        - `chain` string, required — Chain the address is on, as the public-API network id (e.g. `ethereum`, `base`). Non-public/historical chains fall back to the raw chain id. Treated as an open enum; tolerate unknown values.
        - `name` string, nullable, required — Display label for the counterparty. The Agora side of a leg is labelled `"Agora"`.

## Other responses

- `400` — One or more request parameters are invalid.
- `401` — Authentication is required.
- `403` — The account is not eligible for the requested route direction.
- `404` — Resource not found.
- `429` — Too many requests.
- `500` — An unexpected error occurred.

---

[API](https://skmtc.net/agora/apis/endpoints.md) · [All operations](https://skmtc.net/agora/apis/endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/agora/endpoints/revisions/8525bfff7634/schema)
