Fund Go Accounts

Overview

Crypto-as-a-Service (CaaS) enables you and your clients to move fiat between bank accounts and Go Accounts. BitGo supports multiple fiat payments rails to accommodate different client preferences, use cases, and regulatory environments.

Fiat Support

JurisdictionCurrencyPayment Rails
United StatesUSDACH debit, domestic and international wire transfers, CUBIX transfers, Go Network
EuropeEUROSEPA Instant, SEPA, BLINC transfers, Go Network

Prerequisites

Deposit Instructions

You can fetch your enterprise deposit instructions using the Get deposit info endpoint which returns the memo ID and available deposit bank accounts based on your enterprise jurisdiction. This information is useful when depositing with any of the payment rails we support. Some funding rails require memo ID and bank account details to match your deposit.

BitGo-Approved Bank Accounts

Fiat withdrawals to bank accounts require the use of BitGo-approved bank accounts. When you add a bank account to an enterprise it goes through a screening process. BitGo approves most bank accounts within 48 hours and they can be used for fiat operations immediately after approval. You can see the status of the bank account by calling the Get bank account endpoint and checking the verificationState field.

Steps

Select a funding rail to deposit or withdraw from your Go Accounts.

  • ACH
  • Wire
  • Go Network

ACH Deposits

ACH deposits enable USD transfers from BitGo-approved US bank accounts to Go Accounts and are well suited for B2B2C platforms where your users initiate funding through your frontend. ACH deposits are best used for:

  • Small-to-medium size deposits.
  • User experiences that demand a “pull” model.
  • Settlements that can wait 1–2 business days to settle.

Before initiating ACH deposits, your platform must fund a fraud reserve account that meets the following requirements:

  • Minimum account balance: $25,000 if no deposit history.
  • Standard account balance: 25% of the highest 2-day deposit volume in the previous month.
  • Must be replenished within 5 business days if funds are withdrawn.

In addition, to comply with Nacha rules, your ACH unauthorized returns must stay below 0.5% of total debits. If you exceed these thresholds, BitGo may suspend your ACH access.

1. Get Transfer Limit

The transfer limit is the amount you can deposit using ACH per calendar day and resets everyday at 12am EST.

Endpoint: Get Enterprise Transfer Limits

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X GET \ https://app.bitgo-test.com/api/tradfi/v1/enterprise-transfer-limits/$ENTERPRISE_ID/usd/ach-us/in \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "id": "01982d49-9f0d-7c50-847a-e04ea8a63165", "maximumTransferAllowed": "2500.00", "maximumTransferAllowedBase": 250000, "noLimit": false, "transferDirection": "in", "transferType": "ach-us" }'

Step Result

  • JSON
1 2 3 4 5 6 7 8 { "id": "string", "maximumTransferAllowed": "string", "maximumTransferAllowedBase": 0, "noLimit": true, "transferDirection": "in", "transferType": "ach-us" }

2. Get ACH Agreement

Get the ACH agreement for a BitGo-approved bank by passing the bank ID. You can view all your bank accounts by calling the Get Bank Accounts endpoint

Endpoint: Get ACH Agreement

  • cURL
1 2 3 4 5 6 7 export AMOUNT="<AMOUNT_TO_DEPOSIT>" export BANK_ID="<BANK_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X GET \ "https://app.bitgo-test.com/api/fiat/v1/transaction/ach-debit/agreement?amount=$AMOUNT&bankId=$BANK_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN"

Note: The query parameter amount is in base units (cents), but the agreement an amount in dollars.

Step Result

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 { "achAuthorizationLanguage": { "reviewAuthorization": "string", "accountInformation": { "accountHolderName": "string", "bankName": "string", "accountNumber": "string", "routingNumber": "string", "accountType": "checking" }, "authorizationDetails": "string", "acknowledgment": "string" } }

3. Initiate ACH Deposit

If you agree to the ACH agreement, you can proceed to initiate an ACH deposit.

Endpoint: Initiate ACH Deposit

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export AMOUNT="<AMOUNT_TO_DEPOSIT>" export BANK_ID="<BANK_ID>" export BANK_ID="<GO_ACCOUNT_ID>" curl -X POST https://app.bitgo-test.com/api/fiat/v1/transaction/ach-debit \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "amount": "$AMOUNT", "checkboxAgreement": true, "bankId": "'"$BANK_ID"'", "goAccountId": "'"$GO_ACCOUNT_ID"'" }'

Step Result

  • JSON
1 2 3 { "txId": "string" }

ACH Withdrawals

ACH withdrawals transfer USD from Go Accounts to BitGo-approved US bank accounts. ACH withdrawals are best for:

  • Low-to-medium value withdrawals.
  • Recurring user withdrawals.
  • Settlements that can wait 1–2 business days to settle.

ACH withdrawals must have a BitGo-approved bank for the recipient and are subject to standard ACH cutoff windows.

See Also