Deposit Assets

Overview

BitGo enables you to deposit both crypto and fiat currencies. Your 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 countries.

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 endpoint. Depositing an unsupported asset may result in the asset becoming unrecoverable.

Prerequisites

Get Started

Steps

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

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"
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

{
    "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. Deposit Fiat Currency

Depositing fiat currency from your bank account requires using your bank's app or API to initiate a wire or an ACH deposit. Review your bank's documentation or contact them to learn more. Currently, ACH deposits are only available for clients with a Crypto-as-a-Service (CaaS) integration.

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 endpoint.

See Also