# Deposit Assets

Source: https://developers.bitgo.com/docs/deposit-assets

## Overview

BitGo enables you to deposit both crypto and fiat currencies. Your [Go Account](/docs/wallet-types#go-account) is the only wallet type that's multi asset and capable of holding fiat currencies. All other wallets are coin specific.

Depositing coins and tokens into your wallet requires you to get your BitGo wallet address and initiate the deposit from another wallet you control.

Depositing fiat currency into your Go Account requires either an ACH or wire transfer from your bank account to a BitGo bank account. Your bank may charge a wire-transfer fee. Contact your bank to learn more. Deposits can't occur from [blacklisted](/docs/wallets-whitelists-blacklists) countries.

> 📘 **Note**
>
> BitGo assesses risk for potential fraud on every ACH deposit. Deposits with a higher risk assessment may take longer to settle. BitGo may reject transfers if deemed too high risk.

Assets on the BitGo platform can have four different ticker symbols, depending on the where the asset is held. Testnet assets are generally prepended with `t` to denote they're in the test environment. Fiat currencies in relation to bank accounts use the `fiat` prefix. Once deposited into a Go Account, all assets use the `ofc` prefix to denote their status as an off-chain token. For example:

* USD has the following ticker symbols:
  * `fiatusd` is USD when adding a bank account or getting banking deposit information in production.
  * `tfiatusd` is USD when adding a bank account or getting banking deposit information in testnet.
  * `ofcusd` is USD in a Go Account in production.
  * `ofctusd` is USD in a Go Account in production in testnet.
* Solana has the following ticker symbols:
  * `sol` is Solana in any wallet type other than a Go Account in production.
  * `tsol` is Solana in any wallet type other than a Go Account in testnet.
  * `ofcsol` is Solana in a Go Account in production.
  * `ofctsol` is Solana in a Go Account in testnet.

> 📘 **Note**
>
> Before depositing other assets to your Go Account for trading, ensure the asset is tradable by calling the [List Products](/reference/tradeproducts) endpoint. Depositing an unsupported asset may result in the asset becoming unrecoverable.

## Prerequisites

[Get Started](/docs/get-started-intro)

## Cookbook

Need just the steps? Expand the cookbook below to get started:

<Cookbook slug="deposit-fiat" title="Deposit Fiat" />

## Steps

<Tabs>
<Tab title="Deposit Fiat">
Connect your bank accounts by manually passing your account details to BitGo.

### 1. Get Deposit Details

Get bank account details for BitGo and a memo ID. All wire transfers must include a memo ID. This ID links your deposit to your account.

>Endpoint: [Get deposit info](/reference/fiatgetdepositinfo)

```shell cURL
export ACCESS_TOKEN="YOUR_ACCESS_TOKEN"
export GO_ACCOUNT_ID="GO_ACCOUNT_ID"
export CURRENCY="tfiatusd" # The BitGo-supported fiat currency you want to deposit

curl -X GET \
  "https://app.bitgo-test.com/api/v2/bankaccounts/deposit/info?goAccountId=$GO_ACCOUNT_ID&currency=$CURRENCY" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```
```js JavaScript
export type Fee {
  amount: string
  individualFees:
    {
        type: "static" | "variable",
        amount: string
    }[]
}

export type BankAccount {
  id: string;
  description?: string;
  idHash: string;
  currency: string;
  accountNumber: string;
  token: string;
  name: string;
  shortCountryCode: string;
  enterpriseId: string;
  trustOrg: string;
  ownerName: string;
  verificationState: string;
  createdAt: string;
  ownerAddressLine1: string;
  ownerAddressLine2?: string;
  ownerAddressCityLocality?: string;
  ownerAddressStateProvince?: string;
  ownerAddressPostalCode?: string;
  ownerAddressCountryCode: string;
  bankAddressLine1: string;
  bankAddressLine2?: string;
  bankAddressCityLocality?: string;
  bankAddressStateProvince?: string;
  bankAddressPostalCode?: string;
  bankAddressCountryCode: string;
  virtualDepositOnly: boolean;
  type: string;
  routingNumber?: string;
  swiftCode?: string;
  accountType: string;
  fee: Fee
}

export type DepositInfo = {
  memoId: string;
  bankAccounts: BankAccount[];
};
```

#### Step Result

```json JSON
{
    "memoId": "JVAIBEMHXT",
    "bankAccounts": [
        {
            "id": "64ae84bdb25d190007958872b5104a7f",
            "idHash": "cd303c82c4c74abf",
            "currency": "tfiatusd",
            "accountNumber": "5766400",
            "token": "tusd",
            "name": "Customers Bank ",
            "shortCountryCode": "US",
            "enterpriseId": "5bd795f1bf7435a503a0a647ec5d3b3d",
            "trustOrg": "BitGo Trust",
            "ownerName": "BitGo Trust Company, Inc",
            "verificationState": "approved",
            "createdAt": "2024-03-07T17:10:57.146Z",
            "ownerAddressLine1": "6216 S Pinnacle Pl Ste #101",
            "ownerAddressCityLocality": "Sioux Falls",
            "ownerAddressStateProvince": "SD",
            "ownerAddressPostalCode": "57108",
            "ownerAddressCountryCode": "US",
            "bankAddressLine1": "40 General Blvd Suite #200",
            "bankAddressCityLocality": "Malvern",
            "bankAddressStateProvince": "PA",
            "bankAddressPostalCode": "19355",
            "bankAddressCountryCode": "US",
            "virtualDepositOnly": false,
            "type": "wire",
            "routingNumber": "031302971",
            "accountType": "unknown",
            "fee": {
                "amount": "1600",
                "individualFees": [
                    {
                        "type": "static",
                        "amount": "1600"
                    }
                ]
            },
        },
    ]
}
```

### 2. Initiate Wire Transfer

Depositing fiat currency from your bank account requires using your bank's app or API to initiate a wire transfer. Review your bank's documentation or contact them to learn more about sending a wire transfer.

> 📘 **Note**
>
> Ensure to include the memo ID in order to prevent delays in accrediting deposits to your Go Account.

#### Step Result

The balance of fiat currency in your Go Account updates with the deposited amount. The deposited balance is immediately available for trades.

## Next

You can verify successful deposits with the [Get Account Balance](/reference/tradeaccountsbalances) endpoint.
</Tab>
<Tab title="Deposit Crypto">
You can deposit coins and tokens using either the wallet ID or wallet address. However, depositing using the wallet ID is only possible between two BitGo wallets.

You can fetch all the addresses for a wallet using the [List Addresses](/reference/v2walletaddresses) endpoint. Once you have the wallet address, initiate the deposit from another wallet you control.

If depositing from another one of your BitGo wallets, transaction flows differ depending on the sending-wallet type. For details, see [Wallets Overview](/docs/wallets-overview).

## Next

You can use the hash ID to view the transaction on a blockchain explorer. You can also verify successful deposits with the [Get Wallet by ID](/reference/v2walletgetbyid) or [Get Wallet by Address](/reference/v2walletgetwalletbyaddress) endpoints.
</Tab>
</Tabs>

## See Also

* [API Reference: Get Wallet by Address](/reference/v2walletgetwalletbyaddress)
* [API Reference: Get Wallet by ID](/reference/v2walletgetbyid)
* [API Reference: List Products](/reference/tradeproducts)
* [API Reference: Add Bank Account](/reference/v2bankaccountadd)
* [BitGo Wallet Types](/docs/wallet-types)
* [Blacklist Reference](/docs/wallets-whitelists-blacklists)
* [Crypto-as-a-Service Overview](/docs/crypto-as-a-service-overview)
* [Wallets Overview](/docs/wallets-overview)
