Deposits & Withdrawals
Moving funds in and out of a Coinbase App wallet (accounts, v2) is split by rail: fiat through a linked payment method, crypto through a blockchain address. Both need credentials — see API Keys Setup.
Fiat
from typed_coinbase import Coinbase
async with Coinbase.new() as client:
methods = await client.advanced_trade.payment_methods.list()
payment_method = methods['payment_methods'][0]['id']
deposit = await client.accounts.deposits.create(
'account-id', amount='10.00', currency='USD', payment_method=payment_method,
)
await client.accounts.deposits.commit('account-id', deposit['transfer']['id'])
await client.accounts.deposits.list('account-id', limit=25)
withdrawal = await client.accounts.withdrawals.create(
'account-id', amount='10.00', currency='USD', payment_method=payment_method,
)
await client.accounts.withdrawals.list('account-id', limit=25)commit=False on deposits.create/withdrawals.create stages the transfer without executing it, completed later with deposits.commit/withdrawals.commit.
Crypto
Receive by minting a new address; send with a caller-chosen idempotency token so a retried request can't double-send:
from typed_coinbase import Coinbase
async with Coinbase.new() as client:
address = await client.accounts.addresses.create('account-id', network='ethereum')
await client.accounts.addresses.list('account-id', limit=25)
send = await client.accounts.transactions.create('account-id', {
'type': 'send',
'to': '0x0000000000000000000000000000000000dEaD',
'amount': '0.001',
'currency': 'ETH',
'idem': 'a-unique-uuid-per-send',
})