---
title: "Fetch transaction history"
method: POST
path: "/api/fma/v1/transactions"
tags: ["Managed Custody Mode"]
---

# Fetch transaction history

`POST /api/fma/v1/transactions`

Fetch paginated transaction history for reconciliation, or fetch a single transaction by sending exactly one of id, txHash, or reqId (mutually exclusive). The transaction webhook delivers the same transaction structure; parse detailsJson according to the transaction type.

## Headers

- `X-Api-Signature` string, required
- `X-Api-Deadline` string, required
- `X-Api-PublicKey` string, required
- `X-Ur-Id` string
- `X-External-User-Id` string

## Request body

- McTransactionsRequest
  - `pageSize` integer — Page size. Defaults to 50; maximum is 100.
  - `type` string — Single transaction type filter. Do not send together with txTypes.
  - `txTypes` string[] — Multiple transaction type filter. Do not send together with type.
  - `currencies` string[] — Currency filter. Values are normalized to lowercase by UR.
  - `direction` 'IN' | 'OUT' | 'ALL' — Direction filter.
  - `status` string — Transaction status filter.
  - `chainId` string — Chain ID filter, for example eip155:5000.
  - `tokenSymbol` string — Token symbol filter, for example USDC.
  - `minAmount` string — Minimum amount filter.
  - `maxAmount` string — Maximum amount filter.
  - `fromTimestamp` integer — Start timestamp filter.
  - `toTimestamp` integer — End timestamp filter.
  - `cursorTimestamp` integer — Next-page cursor timestamp from data.nextCursor.timestamp. Send only when hasNextPage is true.
  - `cursorId` integer — Next-page cursor ID from data.nextCursor.id. Send only when hasNextPage is true.
  - `prevCursorTimestamp` integer — Previous-page cursor timestamp from data.prevCursor.timestamp. Send only when hasPrevPage is true.
  - `prevCursorId` integer — Previous-page cursor ID from data.prevCursor.id. Send only when hasPrevPage is true.
  - `id` integer — Exact lookup by UR internal transaction ID. Mutually exclusive with txHash and reqId.
  - `txHash` string — Exact lookup by transaction hash. Mutually exclusive with id and reqId.
  - `reqId` string — Exact lookup by the idempotency key used when the transaction was created. Mutually exclusive with id and txHash.

## Response `200`

Standard envelope. Business errors return HTTP 200 with a non-zero code. For exact lookups, data.items is empty when no transaction matches.

- McTransactionsResponse — Standard UR OpenAPI response envelope. code 0 means success; a non-zero code is a business error described by message.
  - `code` integer, required — 0 on success; non-zero business error code.
  - `message` string, required — Human-readable explanation. May be empty on success.
  - `data` McTransactionsData
    - `items` McTransactionItem[]
      - `id` integer — UR internal transaction ID.
      - `txHash` string — On-chain transaction hash.
      - `txLogIndex` integer — Transaction log index.
      - `blockNumber` integer — Block number.
      - `createTimeE9` integer — Creation time in nanoseconds.
      - `broadcastTimeE9` integer — Broadcast time in nanoseconds.
      - `finalTimeE9` integer — Finalization time in nanoseconds.
      - `type` 'CRYPTO_DEPOSIT' | 'INTERNAL_TOKEN_TRANSFER' | 'UNKNOWN' | 'FX_EXCHANGE' | 'MARQETA_AUTHORIZE' | 'FIAT_WITHDRAW' | 'FIAT_DEPOSIT' | 'ONRAMP' — Transaction type. Determines the structure of detailsJson.
      - `chainId` string — Chain ID, for example eip155:5000.
      - `chainName` string — Chain name, for example Mantle.
      - `urId` string — The user's URID as a string.
      - `direction` 'IN' | 'OUT' — Transaction direction.
      - `amount` string — Signed amount as a decimal string.
      - `currency` string — Currency in lowercase.
      - `status` 'UNKNOWN' | 'INIT' | 'PENDING' | 'CONFIRMED' | 'FAILED' | 'PENDING_DROP' | 'DROPPED' | 'REJECTED' — Transaction status. CONFIRMED means settled on-chain; REJECTED means UR's validation or compliance checks rejected it.
      - `reqId` string — Idempotency key used when the transaction was created.
      - `detailsJson` string — Stringified JSON whose structure depends on type. Parse the string before reading nested fields.
      - `refundType` '' | 'BANK_REFUND' | 'CARD_REFUND' | 'CARD_REVERSAL' — Refund discriminator. Empty string means not a refund.
    - `hasNextPage` boolean — True when a next page exists. Only then send nextCursor fields.
    - `hasPrevPage` boolean — True when a previous page exists. Only then send prevCursor fields; a zero cursor means there is no previous page.
    - `nextCursor` McTransactionCursor
      - `timestamp` integer — Cursor timestamp.
      - `id` integer — Cursor ID.
    - `prevCursor` McTransactionCursor
      - `timestamp` integer — Cursor timestamp.
      - `id` integer — Cursor ID.
    - `currentPageSize` integer — Number of items in this page.

---

[API](https://skmtc.net/ur/apis/ur-api.md) · [All operations](https://skmtc.net/ur/apis/ur-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ur/ur-api/revisions/087dcf516ce2/schema)
