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

# Assets API introduction

> Retrieve information about assets supported on Uphold, plus the networks and rails used to transfer them. Includes asset shape, types, and rate endpoints.

The assets group of endpoints provides information about the assets available on the platform, as well as the networks and rails used to transfer them.

## Assets

Assets represent the various financial instruments available on the platform, categorized by their type and features.

### Asset shape

An asset has the following properties:

```json [expandable] theme={null}
{
  "code": "BTC",
  "name": "Bitcoin",
  "type": "crypto",
  "symbol": "₿",
  "decimals": 8,
  "logo": "https://cdn.uphold.com/assets/BTC.svg",
  "features": [
    "buy",
    "deposit",
    "sell",
    "transfer",
    "withdraw"
  ],
  "cooldowns": []
}
```

### Types of assets

There are different types of assets available on the platform:

<AccordionGroup>
  <Accordion title="Fiat" icon="money-bill-wave">
    National currencies issued by governments and regulated by central banks.

    Some examples of fiat assets are `USD`, `EUR`, and `GBP`.
  </Accordion>

  <Accordion title="Crypto" icon="bitcoin">
    Digital currencies that use cryptography for security and operate on decentralized networks.

    Some examples of crypto assets are `BTC`, `ETH`, and `USDT`.
  </Accordion>
</AccordionGroup>

### Features

Each asset has a unique `code` and a set of features. These features determine the type of transactions that can be performed with the asset:

* `buy`: The ability to purchase the asset, that is, when it's specified as the `destination` in a transaction (e.g., asset associated with the destination node) and the `origin` node has a different asset.
* `transfer`: The ability to transfer the asset, that is, when the `origin` and `destination` node assets are the same.
* `sell`: The ability to sell the asset, that is, when it's specified as the `origin` node in a transaction (e.g., asset associated with the account) and the destination node asset is different.
* `deposit`: The ability to perform a deposit of the asset when specified as origin node of a transaction (e.g., through an [external account](../external-accounts/introduction)).
* `withdraw`: The ability to perform a withdrawal of the asset when specified as origin node of a transaction (e.g., through an [external account](../external-accounts/introduction)).

Please note that these features can be contextualized with a user, meaning that a user may have access to some features of an asset and not others.

### Cooldowns

Cooldowns indicate temporary restrictions on specific features such as buy, deposit, or withdraw. When an asset is under a cooldown, the corresponding features will be temporarily unavailable until the cooldown period expires.

```json [expandable] theme={null}
{
  "cooldowns": [
    {
      "rule": "financial-promotions",
      "features": [
        "buy",
        "deposit"
      ],
      "endsAt": "2025-04-02T09:07:41.952Z"
    }
  ]
}
```

Below you can find the list of possible scenarios:

* `financial-promotions`: The rule applies during the first 24 hours after a user's account is created, and affects the `buy` and `deposit` features.

## Networks

Networks are the underlying protocols through which the transfer of certain assets is made.

### Network shape

A network has the following base properties:

```json theme={null}
{
  "code": "bitcoin",
  "type": "crypto",
  "name": "Bitcoin",
  "logo": "https://cdn.uphold.com/assets/BTC.svg"
}
```

<Tip>The network may have additional properties depending on the `type`. For example, the network above has two more properties named `exampleAddress` and `explorer`, which are available for networks of type `crypto`.</Tip>

### Types of networks

There are different types of networks available on the platform:

<AccordionGroup>
  <Accordion title="Crypto" icon="bitcoin">
    Networks of type `crypto` are blockchains that use cryptography to secure transactions.

    Examples of such networks are `bitcoin`, `ethereum`, and `xrp-ledger`.
  </Accordion>

  <Accordion title="Card" icon="credit-card">
    Networks of type `card` are used for credit and debit card transactions.

    There is a single network of this type, which is `card`.
  </Accordion>

  <Accordion title="Bank" icon="building-columns">
    Networks of type `bank` refer to networks that facilitate direct bank transactions.

    Examples of such networks are `sepa`, `fps`, and `ach`.
  </Accordion>

  <Accordion title="APM" icon="wallet">
    Networks of type `apm` are operated by alternative payment providers.
  </Accordion>
</AccordionGroup>

## Rails

A rail is a combination of an asset and a network, which together determine whether a deposit or a withdrawal of a given asset under that network is possible.

### Rail shape

A rail has the following base properties:

```json [expandable] theme={null}
{
  "type": "crypto",
  "network": "ethereum",
  "method": "crypto-transaction",
  "asset": "USDC",
  "features": [
    "deposit",
    "withdraw"
  ],
  "decimals": 6
}
```

<Tip>The rail may have additional properties depending on the `type`. For example, the rail above has one more property named `contractAddress`, which is available for rails of type `crypto`.</Tip>

In some rare cases, the `decimals` property on the rail is different than the `decimals` defined in the asset. If you are initiating a deposit or a withdrawal transaction, use the `decimals` of the corresponding rail to truncate or round the decimal places in the user interface.

### Types of rails

There are different types of rails available on the platform, which are analogous to the types of networks:

<AccordionGroup>
  <Accordion title="Crypto" icon="bitcoin">
    Rails of type `crypto` are used for transferring crypto assets through blockchains.
  </Accordion>

  <Accordion title="Card" icon="credit-card">
    Rails of type `card` are used for credit and debit card transactions.
  </Accordion>

  <Accordion title="Bank" icon="building-columns">
    Rails of type `bank` are used for direct bank transactions.
  </Accordion>

  <Accordion title="APM" icon="wallet">
    Rails of type `apm` are used for transactions through alternative payment methods.
  </Accordion>
</AccordionGroup>

### Features and deposits / withdrawals

A deposit is possible if:

* The rail has the `deposit` feature.
* The origin asset has the `deposit` feature.
* The destination asset has:
  * The `transfer` feature if the origin and destination assets are the same.
  * The `buy` feature if converting between assets.

A withdrawal is possible if:

* The rail has the `withdraw` feature.
* The origin asset has:
  * The `transfer` feature if the origin and destination assets are the same.
  * The `sell` feature if converting between assets.
* The destination asset has the `withdraw` feature.
