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

# Get Cryptocurrency Transfer

> Get a cryptocurrency transfer using its ID.

<Info>
**Eventual Consistency**

Cryptocurrency transfers involve multiple processing stages - asset pricing checks, compliance verification, and blockchain confirmation - which can take significant time to complete. For this reason, the [submit endpoint](/v2/api-reference/cryptocurrency-transfers/submit-cryptocurrency-transfer) is designed to be asynchronous, returning immediately after accepting your request. Due to this design, there is a brief window (typically milliseconds) where a newly submitted transfer may not yet be queryable. If you call this endpoint immediately after submission and receive a `404 Not Found` response, simply retry after a short delay. Once available, you can use this endpoint to track the transfer through all its processing stages until completion.
</Info>



## OpenAPI

````yaml /v2/openapi.yaml get /v2/crypto/transfers/{transfer_id}
openapi: 3.1.0
info:
  title: Bastion APIs
  version: '2.0'
servers:
  - url: https://api.prod.bastion.com
    description: Production environment
  - url: https://api.sandbox.bastion.io
    description: Sandbox environment
security:
  - auth: []
tags:
  - name: Bastion APIs
paths:
  /v2/crypto/transfers/{transfer_id}:
    get:
      tags:
        - Cryptocurrency Transfers
      summary: Get Cryptocurrency Transfer
      description: >-
        Get a cryptocurrency transfer using its ID.


        <Info>

        **Eventual Consistency**


        Cryptocurrency transfers involve multiple processing stages - asset
        pricing checks, compliance verification, and blockchain confirmation -
        which can take significant time to complete. For this reason, the
        [submit
        endpoint](/v2/api-reference/cryptocurrency-transfers/submit-cryptocurrency-transfer)
        is designed to be asynchronous, returning immediately after accepting
        your request. Due to this design, there is a brief window (typically
        milliseconds) where a newly submitted transfer may not yet be queryable.
        If you call this endpoint immediately after submission and receive a
        `404 Not Found` response, simply retry after a short delay. Once
        available, you can use this endpoint to track the transfer through all
        its processing stages until completion.

        </Info>
      operationId: bastion.api.v2.API.GetCryptocurrencyTransfer
      parameters:
        - name: transfer_id
          in: path
          description: Unique identifier of the cryptocurrency transfer
          required: true
          schema:
            type: string
            title: transfer_id
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bastion.api.v2.cryptocurrency.Transfer'
        '400':
          description: Bad request
        '404':
          description: >-
            Transfer not found. If recently submitted, the transfer may not yet
            be available due to eventual consistency. Retry after a brief delay.
        '500':
          description: Internal Server Error
components:
  schemas:
    bastion.api.v2.cryptocurrency.Transfer:
      type: object
      properties:
        id:
          type: string
          title: id
          description: Unique identifier of the cryptocurrency transfer
        request_id:
          type: string
          title: request_id
          pattern: >-
            [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
          format: uuid
          description: Request identifier in a UUID format. Serves as an idempotency key.
        account_id:
          type: string
          title: account_id
          description: Unique identifier of the account transferring the cryptocurrency
        account_address:
          type: string
          title: account_address
          description: Address of the account transferring the cryptocurrency
        currency_symbol:
          type: string
          title: currency_symbol
          description: Symbol or ticker of the cryptocurrency to send
        amount:
          type: string
          title: amount
          description: >-
            Amount to send in the asset currency's default unit (ex: Ether for
            ETH)
        destination_address:
          type: string
          title: destination_address
          description: Address of the recipient to receive the cryptocurrency
        destination_chain:
          $ref: '#/components/schemas/bastion.common.Chain'
          title: destination_chain
          description: Chain identifier for the cryptocurrency transaction
        status:
          $ref: '#/components/schemas/bastion.api.v2.cryptocurrency.TransferStatus'
          title: status
          description: >-
            Status of a cryptocurrency transfer as it moves through the
            processing pipeline.

             - `TRANSFER_STATUS_UNSPECIFIED`: Default value, should not be used.
             - `ACCEPTED`: The transfer request has been received and validated, but has not yet been batched or submitted to the blockchain.
             - `SUBMITTED`: The transfer has been submitted to the blockchain and is awaiting confirmation.
             - `CONFIRMED`: The transfer has been confirmed on the blockchain. This is a terminal status.
             - `FAILED`: The transfer has failed. Check the failureDetails field for more information. This is a terminal status.
             - `DROPPED`: The transfer has been dropped. This is a terminal status.
        created_at:
          type: string
          title: created_at
          description: Timestamp when the cryptocurrency transfer was created
        updated_at:
          type: string
          title: updated_at
          description: Timestamp when the cryptocurrency transfer was last updated
        transaction_hash:
          type: string
          title: transaction_hash
          description: Hash of the cryptocurrency transaction
        completed_at:
          type: string
          title: completed_at
          description: Timestamp when the cryptocurrency transfer was completed
        failure_details:
          $ref: '#/components/schemas/bastion.common.FailureDetails'
          title: failure_details
          description: (OPTIONAL) Details of the failure if the transfer is not successful.
        events:
          type: array
          items:
            $ref: '#/components/schemas/bastion.common.ContractEvent'
          title: events
          description: Contract events emitted by the transaction.
        destination_type:
          $ref: '#/components/schemas/bastion.common.DestinationType'
          title: destination_type
          description: >-
            (OPTIONAL) Type of destination for this transfer (ON_CHAIN for
            external, ACCOUNT for internal P2P).
        destination_account_id:
          type: string
          title: destination_account_id
          description: >-
            (OPTIONAL) Unique identifier of the destination account, populated
            when destination_type is ACCOUNT.
      title: Transfer
      required:
        - id
        - request_id
        - account_id
        - account_address
        - currency_symbol
        - amount
        - destination_address
        - destination_chain
        - status
        - created_at
        - updated_at
        - transaction_hash
        - completed_at
      additionalProperties: false
    bastion.common.Chain:
      type: string
      title: Chain
      enum:
        - CHAIN_UNSPECIFIED
        - ETHEREUM_MAINNET
        - POLYGON_MAINNET
        - ETHEREUM_TESTNET
        - OPTIMISM_SEPOLIA
        - BASE_MAINNET
        - BASE_SEPOLIA
        - OPTIMISM_MAINNET
        - POLYGON_AMOY
        - SOLANA_MAINNET
        - SOLANA_DEVNET
      description: Chain identifier
      example: ETHEREUM_MAINNET
    bastion.api.v2.cryptocurrency.TransferStatus:
      type: string
      title: TransferStatus
      enum:
        - TRANSFER_STATUS_UNSPECIFIED
        - ACCEPTED
        - SUBMITTED
        - CONFIRMED
        - FAILED
        - DROPPED
        - CANCELED
      description: >-
        Status of a cryptocurrency transfer as it moves through the processing
        pipeline.

         - `TRANSFER_STATUS_UNSPECIFIED`: Default value, should not be used.
         - `ACCEPTED`: The transfer request has been received and validated, but has not yet been batched or submitted to the blockchain.
         - `SUBMITTED`: The transfer has been submitted to the blockchain and is awaiting confirmation.
         - `CONFIRMED`: The transfer has been confirmed on the blockchain. This is a terminal status.
         - `FAILED`: The transfer has failed. Check the failureDetails field for more information. This is a terminal status.
         - `DROPPED`: The transfer has been dropped. This is a terminal status.
         - `CANCELED`: The transfer has been explicitly canceled by submitting a 0-value self-transfer. This is a terminal status.
      example: ACCEPTED
    bastion.common.FailureDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/bastion.common.FailureType.Enum'
          title: type
        description:
          type: string
          title: description
      title: FailureDetails
      additionalProperties: false
    bastion.common.ContractEvent:
      type: object
      properties:
        event_name:
          type: string
          title: event_name
        event_info:
          type: object
          title: event_info
          additionalProperties:
            $ref: '#/components/schemas/google.protobuf.ListValue'
            title: value
        contract_address:
          type: string
          title: contract_address
      title: ContractEvent
      additionalProperties: false
    bastion.common.DestinationType:
      type: string
      title: DestinationType
      enum:
        - DESTINATION_TYPE_UNSPECIFIED
        - ON_CHAIN
        - ACCOUNT
      description: |-
        Destination type for a cryptocurrency transfer.

         - `ON_CHAIN`: External transfer to a blockchain address.
         - `ACCOUNT`: Internal P2P transfer to another Bastion account.
      example: ON_CHAIN
    bastion.common.FailureType.Enum:
      type: string
      title: Enum
      enum:
        - UNSPECIFIED
        - EXECUTION_ERROR
        - INVALID_NUM_OF_TOKENS
        - INVALID_CONTRACT_ACTION_INFO
        - INVALID_CONTRACT_ADDRESS
        - INVALID_CONTRACT_ACTIONS
        - INVALID_BLOCKCHAIN
        - INVALID_CONTRACT_JSON_ABI
        - INVALID_REQUEST_ID
        - TRANSACTION_NOT_FOUND
        - DUPLICATE_TRANSACTION
        - NO_USER_WALLET_FOUND
        - KEY_EXPORTED
        - INVALID_RECIPIENT_ADDRESS
        - INVALID_OFFCHAIN_SIGNABLE_MESSAGE
        - INSUFFICIENT_GAS
        - INVALID_PAYMENT_AMOUNT
        - TRANSACTION_LIMIT_POLICY_BREACHED
        - COMPLIANCE_CHECK_FAILED
      example: EXECUTION_ERROR
    google.protobuf.ListValue:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/google.protobuf.Value'
          title: values
          description: Repeated field of dynamically typed values.
      title: ListValue
      additionalProperties: false
      description: Represents a JSON array.
    google.protobuf.Value:
      oneOf:
        - type: 'null'
        - type: number
        - type: string
        - type: boolean
        - type: array
        - type: object
          additionalProperties: true
      description: |-
        Represents a JSON value.

         `Value` represents a dynamically typed value which can be either
         null, a number, a string, a boolean, a recursive struct value, or a
         list of values. A producer of value is expected to set one of these
         variants. Absence of any variant is an invalid state.
  securitySchemes:
    auth:
      type: http
      description: Bearer authentication with an API token
      scheme: bearer

````

## Related topics

- [Product updates](/changelog.md)
- [List Cryptocurrency Transfers](/v2/api-reference/cryptocurrency-transfers/list-cryptocurrency-transfers.md)
- [Submit Cryptocurrency Transfer](/v2/api-reference/cryptocurrency-transfers/submit-cryptocurrency-transfer.md)
- [Cryptocurrency transfer notifications](/v2/api-reference/webhooks/notifications/transfer-notifications.md)
- [Get Cryptocurrency Deposit](/v2/api-reference/cryptocurrency-deposits/get-cryptocurrency-deposit.md)
