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
Jurisdiction | Currency | Payment Rails |
---|---|---|
United States | USD | ACH debit, domestic and international wire transfers, CUBIX transfers, Go Network |
Europe | EURO | SEPA 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 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
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
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
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
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
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
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.