Skip to main content

Withdrawals

Two ways to send funds out of a Go Account: USD to a linked bank account (ACH) or crypto to an external address.


Crypto Withdrawal

Send crypto from the Go Account to an external address or another Go Account.

Check Balance

Before withdrawing, check the available balance.

Trading balance and withdrawal balance are not the same

Use withdrawableBalance for withdrawal checks. A customer can have funds visible in balance or tradableBalance that are not yet available to withdraw.

Send Crypto (sendcoins)

  • POST /api/v2/{coin}/wallet/{goAccountId}/sendcoins
  • address — the destination address or Go Account ID
  • amount — the amount in the smallest unit (e.g., satoshis for BTC, where 100,000,000 satoshis = 1 BTC)
  • walletPassphrase — the wallet passphrase set during Go Account creation
  • Returns a transfer object with an id and txid you can use to track the withdrawal

Example payload (BTC):

{
"address": "<destination-address>",
"amount": "50000",
"walletPassphrase": "<passphrase>"
}

The {coin} path parameter determines which asset to withdraw. For example, use ofcbtc for Bitcoin or ofctbtc for testnet Bitcoin.

Crypto withdrawal amounts use the smallest unit

For BTC, the amount is in satoshis, not whole BTC. If you send "50000", that means 0.0005 BTC.

Fee deduction

If withdrawal fees are configured for your account, the fee is automatically deducted from the withdrawal amount before the transaction is sent. See the Fees guide for details.

List Transfers

Track withdrawals (and deposits) for a wallet.

Get a Single Transfer


Fiat Withdrawal (USD to Bank)

Send USD from the Go Account back to a linked bank account. Requires an approved bank account.

Check for Approved Bank Account

Before initiating a fiat withdrawal, verify the customer has an approved bank account.

Only approved bank accounts can receive fiat withdrawals

If the bank account is still pending verification, the customer is not ready for ACH withdrawal yet. Keep the bank-linking and withdrawal steps separate in your UI and backend flow.

Get Deposit Info

Retrieve the bank account information needed to initiate the withdrawal.

Sandbox and production use different fiat currency codes

Use tfiatusd in sandbox and fiatusd in production when retrieving the bank transfer details. Hardcoding the wrong one is an easy environment-specific failure.

Initiate Withdrawal

Send USD from the Go Account to the linked bank account.

Settlement takes 1-3 business days via partner banks.


Putting It Together


Next Steps

  • Fees — How withdrawal fees are calculated
  • Funding — Deposit funds back in
  • Conversions — Buy or sell Bitcoin