> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
> Use this file to discover all available pages before exploring further.

# Get transfer by ID

> Retrieves one transfer of a transaction by ID.



## OpenAPI

````yaml /api-reference/openapi.yaml get /transfers/{transferId}
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.10.20-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.13
    description: Sandbox
  - url: https://api.polygon.technology/v0.13
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via OMS API key and secret
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: Transfer
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: Reference
  - name: DepositAddress
paths:
  /transfers/{transferId}:
    get:
      tags:
        - Transfer
      summary: Get transfer by ID
      description: Retrieves one transfer of a transaction by ID.
      operationId: getTransfer
      parameters:
        - name: transferId
          in: path
          required: true
          description: Transfer ID (`trf_` prefix).
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transfer'
              examples:
                A settled wire payout from a deposit address:
                  summary: A settled wire payout from a deposit address
                  value:
                    id: trf_01k7n3h6x2v9c8b4m5q0w1e2r3
                    transactionId: txn_qv6ch9rjv7t8nncezke4s10a3z
                    role: payout
                    rail: wire
                    attempt: 1
                    status: settled
                    amount:
                      amount: '100.00'
                      asset: usd
                    from:
                      type: depositAddress
                      id: da_r8f126hqwm3x6j5k00qsaysf4c
                      asset: usdc
                      network: polygon
                    to:
                      owner:
                        kind: counterparty
                        id: ctp_yp5z8m7n22svc0vh6edqgcfdat
                        name: Alice Smith
                      type: bankUs
                      id: ext_fky491gakzj0dd46qb6whsr2vq
                      asset: usd
                      details:
                        accountNumberLast4: '1234'
                        holderName: Alice Smith
                    tracking:
                      imad: 20261016MMQFMP2K000001
                      uetr: 8a562c67-ca16-48ba-b074-65581be6f001
                    createdAt: '2026-03-14T19:00:00Z'
                    updatedAt: '2026-03-14T19:05:00Z'
                    settledAt: '2026-03-14T19:05:00Z'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferNotFoundErrorResponse'
components:
  schemas:
    Transfer:
      type: object
      required:
        - id
        - transactionId
        - role
        - rail
        - attempt
        - status
        - amount
        - from
        - to
        - createdAt
        - updatedAt
      properties:
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: Transfer ID (`trf_` prefix).
        transactionId:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The transaction the transfer belongs to (`txn_` prefix).
        role:
          $ref: '#/components/schemas/TransferRole'
        rail:
          $ref: '#/components/schemas/TransferRail'
        attempt:
          type: integer
          format: int32
          description: >-
            1 for the first send; a payout sent again after a confirmed failure
            is a new transfer with `attempt` + 1. These stay the same transfer:
            a re-send of a payout whose outcome is unknown, a failed refund sent
            again, and a fiat wallet payout sent again.
        status:
          $ref: '#/components/schemas/TransferStatus'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        from:
          allOf:
            - $ref: '#/components/schemas/Instrument'
          description: Where the money moved from.
        to:
          allOf:
            - $ref: '#/components/schemas/Instrument'
          description: Where the money moved to.
        secCode:
          allOf:
            - $ref: '#/components/schemas/SecCode'
          description: ACH SEC code the payout was sent with; `ach` and `achSameDay` only.
        companyDiscretionaryData:
          type: string
          description: >-
            ACH company discretionary data the payout was sent with; `ach` and
            `achSameDay` only.
        originatorName:
          type: string
          description: >-
            The name the payout comes from, as the receiving bank sees it: the
            payment provider's, or the customer's when the customer or the
            partner holds the payout origin. Bank and card payouts only; left
            out when the customer's name cannot be read at that moment.
        tracking:
          allOf:
            - $ref: '#/components/schemas/TransferTracking'
          description: Left out until OMS holds a reference.
        failure:
          allOf:
            - $ref: '#/components/schemas/Reason'
          description: Why the transfer failed. Present only when `status` is `failed`.
        return:
          allOf:
            - $ref: '#/components/schemas/Reason'
          description: >-
            Why a bank sent the money back, with its own code in `bankCode` when
            it gave one. Present only when `status` is `returned`.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        settledAt:
          type: string
          format: date-time
          description: When the transfer settled.
      description: >-
        One movement of money of a transaction, on one rail. A payout sent again
        after a confirmed failure is a new transfer; the failed one stays
        failed.
    TransferNotFoundErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - TransferNotFound
        code:
          type: number
          enum:
            - 10367
        msg:
          type: string
          enum:
            - transfer not found
        cause:
          type: string
    typeId:
      type: string
      pattern: >-
        ^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$
      description: Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`.
      x-go-type: string
    TransferRole:
      type: string
      enum:
        - deposit
        - payout
        - refund
      description: >-
        What a transfer does in its transaction. `deposit` brings money in,
        `payout` sends it out and `refund` sends it back to the sender. A bank
        return is the transfer's `returned` status, not a role.
    TransferRail:
      type: string
      enum:
        - ach
        - achSameDay
        - wire
        - internationalWire
        - rtp
        - bookTransfer
        - blockchain
        - card
        - cash
      description: How a transfer's money moved.
    TransferStatus:
      type: string
      enum:
        - initiated
        - pending
        - settled
        - failed
        - returned
      description: >-
        Where a transfer is. An outgoing transfer (a payout or a refund) goes
        `initiated`, `pending`, `settled`; a deposit goes `pending`, `settled`.
        Any can end `failed`. A payout the receiving bank sends back, or a
        virtual account deposit the sending bank takes back, ends `returned`
        after `settled`.
    TransferAmount:
      type: object
      required:
        - amount
        - asset
      properties:
        amount:
          type: string
          description: Decimal string at the asset's precision.
        asset:
          type: string
          description: Lowercase asset.
      description: The amount a transfer moves.
    Instrument:
      type: object
      oneOf:
        - $ref: '#/components/schemas/WalletCryptoInstrument'
        - $ref: '#/components/schemas/WalletExternalInstrument'
        - $ref: '#/components/schemas/WalletFiatInstrument'
        - $ref: '#/components/schemas/BankUsAccount'
        - $ref: '#/components/schemas/BankIbanAccount'
        - $ref: '#/components/schemas/BankCanadaAccount'
        - $ref: '#/components/schemas/CardInstrument'
        - $ref: '#/components/schemas/CashInstrument'
        - $ref: '#/components/schemas/DepositAddressInstrument'
        - $ref: '#/components/schemas/VirtualAccountInstrument'
      discriminator:
        propertyName: type
        mapping:
          walletCrypto: '#/components/schemas/WalletCryptoInstrument'
          walletExternal: '#/components/schemas/WalletExternalInstrument'
          walletFiat: '#/components/schemas/WalletFiatInstrument'
          bankUs: '#/components/schemas/BankUsAccount'
          bankIban: '#/components/schemas/BankIbanAccount'
          bankCanada: '#/components/schemas/BankCanadaAccount'
          card: '#/components/schemas/CardInstrument'
          cash: '#/components/schemas/CashInstrument'
          depositAddress: '#/components/schemas/DepositAddressInstrument'
          virtualAccount: '#/components/schemas/VirtualAccountInstrument'
      description: >-
        A transaction's source or a transfer's end: one instrument per account
        type. A bank account carries no rail and no ACH options; they are on the
        transfer.
    SecCode:
      type: string
      enum:
        - ccd
        - ppd
        - web
      description: >-
        ACH SEC code. Present only when the destination bank network is
        `ach`/`achSameDay`. Server-derived from the destination owner's and the
        source customer's `entityType`.
    TransferTracking:
      type: object
      properties:
        txHash:
          type: string
          description: The on-chain transaction hash.
        imad:
          type: string
          description: The Fedwire input message accountability data.
        uetr:
          type: string
          description: The SWIFT unique end-to-end transaction reference.
        endToEndId:
          type: string
          description: The end-to-end id the rail carries.
        instructionId:
          type: string
          description: The instruction id of an incoming wire.
      description: >-
        Every reference that traces a transfer outside OMS, as soon as OMS holds
        it.
    Reason:
      type: object
      required:
        - code
        - message
        - retryable
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/ReasonCode'
          description: What went wrong.
        message:
          type: string
          description: A fixed, vendor-neutral sentence for `code`.
        retryable:
          type: boolean
          description: Whether trying the same thing again can succeed.
        bankCode:
          type: string
          description: >-
            The bank's own return code, only on an external account a bank
            return made invalid.
      description: >-
        Why a resource failed, was rejected or became invalid. `message` and
        `retryable` are fixed for each `code`.
    WalletCryptoInstrument:
      type: object
      required:
        - type
        - asset
        - network
      properties:
        type:
          type: string
          enum:
            - walletCrypto
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The wallet (`wlt_`); an older wallet keeps its original `wlt_<uuid>`
            id. Left out while a deposit's receiving wallet is not resolved yet.
        asset:
          type: string
          description: Lowercase asset.
        network:
          type: string
          description: Lowercase blockchain.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/WalletCryptoInstrumentDetails'
      description: An OMS-custodied crypto wallet.
      title: OMS wallet
    WalletExternalInstrument:
      type: object
      required:
        - type
        - asset
        - network
      properties:
        type:
          type: string
          enum:
            - walletExternal
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The external account (`ext_`). Left out for a sender OMS has no
            record of.
        asset:
          type: string
          description: Lowercase asset.
        network:
          type: string
          description: Lowercase blockchain.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/WalletExternalInstrumentDetails'
      description: A crypto wallet OMS does not custody.
      title: External wallet
    WalletFiatInstrument:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - walletFiat
        id:
          type: string
          pattern: >-
            ^(wlt_fiat_|[a-z]+_)([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$
          description: >-
            The fiat wallet (`wlt_`; an older wallet keeps its original
            `wlt_<uuid>` id, and a `wlt_fiat_` id is also accepted on input).
            Left out on a book-transfer destination until its outbound leg
            exists.
        asset:
          type: string
          enum:
            - usd
          description: Fiat currency of the balance. Only `usd` today.
        network:
          type: string
          enum:
            - bookTransfer
          description: >-
            `bookTransfer` on the destination of a virtual account or deposit
            address book-transfer credit.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
      description: >-
        A fiat balance wallet OMS holds for the customer at a partner bank. It
        has no details.
      title: Fiat wallet
    BankUsAccount:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - bankUs
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The external account (`ext_`). Left out for a sender OMS has no
            record of.
        asset:
          type: string
          enum:
            - usd
          description: Lowercase asset.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/BankUsInstrumentDetails'
      description: >-
        A US bank account. It carries no rail: how money moved is the transfer's
        `rail`.
      title: US bank account
    BankIbanAccount:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - bankIban
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The external account (`ext_`). Left out for a sender OMS has no
            record of.
        asset:
          type: string
          description: Lowercase asset.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/BankIbanInstrumentDetails'
      description: >-
        An IBAN bank account. It carries no rail: how money moved is the
        transfer's `rail`.
      title: IBAN bank account
    BankCanadaAccount:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - bankCanada
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The external account (`ext_`). Left out for a sender OMS has no
            record of.
        asset:
          type: string
          enum:
            - usd
            - cad
          description: Lowercase asset.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/BankCanadaInstrumentDetails'
      description: >-
        A Canadian bank account. It carries no rail: how money moved is the
        transfer's `rail`.
      title: Canadian bank account
    CardInstrument:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - card
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The external account (`ext_`).
        asset:
          type: string
          enum:
            - usd
          description: Lowercase asset.
        network:
          type: string
          enum:
            - card
          description: The rail the money moves on.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/CardInstrumentDetails'
      description: A card.
      title: Card
    CashInstrument:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - cash
        asset:
          type: string
          description: Lowercase asset.
        details:
          $ref: '#/components/schemas/CashInstrumentDetails'
      description: A cash location. It has no id; the location is in `details`.
      title: Cash
    DepositAddressInstrument:
      type: object
      required:
        - type
        - asset
        - network
      properties:
        type:
          type: string
          enum:
            - depositAddress
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The deposit address (`da_`).
        asset:
          type: string
          description: Lowercase asset.
        network:
          type: string
          description: Lowercase blockchain.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/DepositAddressInstrumentDetails'
      description: A deposit address.
      title: Deposit address
    VirtualAccountInstrument:
      type: object
      required:
        - type
        - asset
      properties:
        type:
          type: string
          enum:
            - virtualAccount
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The virtual account (`va_`).
        asset:
          type: string
          description: Lowercase asset.
        owner:
          $ref: '#/components/schemas/InstrumentOwner'
        details:
          $ref: '#/components/schemas/VirtualAccountInstrumentDetails'
      description: A virtual account.
      title: Virtual account
    ReasonCode:
      type: string
      enum:
        - providerError
        - providerRejected
        - providerTimeout
        - expired
        - systemError
        - provisioningTimeout
        - insufficientFunds
        - providerAmountBelowMinimum
        - limitExceeded
        - outsideSellBounds
        - outsideSellVelocityBounds
        - unusableAmount
        - unsupportedCorridor
        - outgoingRailNotEnabled
        - ssnNotVerified
        - riskRejected
        - cardDeclined
        - bankSellDeclined
        - payoutFailed
        - priceMoved
        - returningToSender
        - returnedToSender
        - returnFailed
        - depositFailed
        - attributionTimeout
        - assetMismatch
        - chainMismatch
        - misattributedArrival
        - depositAddressNotActive
        - virtualAccountNotActive
        - counterpartyArchived
        - destinationUnavailable
        - walletClaimed
        - walletBoundToCustodialFlow
        - projectSuspended
        - memoInvalid
        - cashDepositFailed
        - noMatchingNetwork
        - blockchainAddressInUse
        - bankAccountInUse
        - bankAccountRejected
        - deletePendingTimeout
        - providerAccountMissing
        - cardInUse
        - cardLimitReached
        - countryProhibited
        - countryNotSupported
        - cardVerificationDeclined
        - bankVerificationDeclined
        - accountClosed
        - accountFrozenByBank
        - routingOrAccountNumberInvalid
        - accountHolderDeceased
        - accountDoesNotSupportTransfers
        - payeeNameMismatch
        - walletUnreachableOnNetwork
        - billingAddressMismatch
        - cardExpired
        - cardClosedOrLostStolen
        - pushToCardUnsupported
        - cardDeclinedByIssuer
      description: The reasons a resource reports in `failure`.
    InstrumentOwner:
      type: object
      required:
        - kind
        - id
      properties:
        kind:
          type: string
          enum:
            - counterparty
            - customer
          description: '`counterparty`, or `customer` for another customer''s account.'
        id:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: The counterparty (`ctp_`) or customer (`cst_`).
        name:
          type: string
          description: >-
            The counterparty's name. A customer's name is on the customer
            resource.
      description: Who owns an account that is not the resource's customer's.
    WalletCryptoInstrumentDetails:
      type: object
      properties:
        address:
          type: string
          description: On-chain address.
      description: OMS crypto wallet details.
    WalletExternalInstrumentDetails:
      type: object
      properties:
        address:
          type: string
          description: On-chain address.
        custodian:
          type: string
          description: Who custodies the wallet, in lowerCamelCase.
        otherCustodian:
          type: string
          description: The custodian's name when `custodian` is `other`.
        networkFamily:
          $ref: '#/components/schemas/NetworkFamily'
      description: External wallet details.
    BankUsInstrumentDetails:
      type: object
      properties:
        bankName:
          type: string
        accountNumberLast4:
          type: string
        routingNumber:
          type: string
        accountType:
          $ref: '#/components/schemas/BankAccountType'
        holderName:
          type: string
          description: >-
            The account holder: a counterparty's name, or the sender's name when
            the rail carries it.
        memo:
          type: string
          description: >-
            The free-text message that travelled with the money on this side's
            rail.
      description: US bank account details.
    BankIbanInstrumentDetails:
      type: object
      properties:
        bankName:
          type: string
        ibanLast4:
          type: string
        bic:
          type: string
        countryCode:
          type: string
          description: ISO 3166-1 alpha-2 country of the bank.
        bankAddress:
          $ref: '#/components/schemas/Address'
        holderName:
          type: string
          description: >-
            The account holder: a counterparty's name, or the sender's name when
            the rail carries it.
        memo:
          type: string
          description: >-
            The free-text message that travelled with the money on this side's
            rail.
      description: IBAN bank account details.
    BankCanadaInstrumentDetails:
      type: object
      properties:
        bankName:
          type: string
        accountNumberLast4:
          type: string
        institutionNumber:
          type: string
        transitNumber:
          type: string
        holderName:
          type: string
          description: >-
            The account holder: a counterparty's name, or the sender's name when
            the rail carries it.
        memo:
          type: string
          description: >-
            The free-text message that travelled with the money on this side's
            rail.
      description: Canadian bank account details.
    CardInstrumentDetails:
      type: object
      properties:
        brand:
          $ref: '#/components/schemas/CardBrand'
        last4:
          type: string
        cardType:
          $ref: '#/components/schemas/CardType'
        expiryMonth:
          type: integer
          format: int32
        expiryYear:
          type: integer
          format: int32
        billingAddressSource:
          $ref: '#/components/schemas/BillingAddressSource'
      description: Card details.
    CashInstrumentDetails:
      type: object
      properties:
        locationId:
          type: string
        locationName:
          type: string
        locationAddress:
          $ref: '#/components/schemas/Address'
        locationProvider:
          type: string
          description: >-
            The cash network the location belongs to, lowercase, such as
            `greendot`.
      description: Cash location details.
    DepositAddressInstrumentDetails:
      type: object
      properties:
        address:
          type: string
          description: On-chain address.
      description: Deposit address details.
    VirtualAccountInstrumentDetails:
      type: object
      properties:
        bankName:
          type: string
        accountNumberLast4:
          type: string
        routingNumber:
          type: string
      description: >-
        Virtual account details. The full account number is in the virtual
        account's deposit instructions.
    NetworkFamily:
      type: string
      enum:
        - evm
        - solana
        - tron
      description: >-
        Crypto network family for a registered external wallet. A walletExternal
        is registered per family (an EVM address is valid across every EVM
        chain), and the registration covers every served network in that family.
        A create for a family the provider that provisions this project's
        walletExternal accounts does not serve is refused before anything is
        written, with 422 `NetworkFamilyNotServed`; depending on the provider,
        the refusal can be 403 `VendorConfigMissing` instead.
    BankAccountType:
      type: string
      enum:
        - checking
        - savings
      description: Bank account sub-type for US accounts.
    Address:
      type: object
      properties:
        line1:
          type: string
          description: Street address, line 1.
        line2:
          type: string
          description: Street address, line 2.
        city:
          type: string
          description: City.
        state:
          type: string
          description: State / province / region.
        country:
          type: string
          description: ISO 3166-1 alpha-2
        zipCode:
          type: string
          description: ZIP / postal code.
      description: A postal address. country is an ISO 3166-1 alpha-2 country code.
    CardBrand:
      type: string
      enum:
        - visa
        - mastercard
        - amex
        - discover
      description: >-
        Card network/brand. Derived server-side from the PAN; never accepted on
        a request.
    CardType:
      type: string
      enum:
        - debit
        - credit
        - prepaid
      description: >-
        Card funding type, derived server-side from the PAN. Only `debit` is
        supported today; `credit` and `prepaid` are reserved for future
        push-to-card / pull-from-card support.
    BillingAddressSource:
      type: string
      enum:
        - provided
        - customerDefault
      description: >-
        Where a card's billing address came from. `provided` = supplied on the
        request; `customerDefault` = filled from the owning customer's address
        because the request omitted it.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````