Table of Endpoints
| Name | Method | Endpoint | Legacy Scope | CDP API Key Scope |
|---|---|---|---|---|
| Withdraw Funds | POST | /v2/accounts/:account_id/withdrawals | wallet:withdrawals:create | transfer |
| Commit Withdrawal | POST | /v2/accounts/:account_id/withdrawals/:withdrawal_id/commit | wallet:withdrawals:create | transfer |
| List Withdrawals | GET | /v2/accounts/:account_id/withdrawals | wallet:withdrawals:read | view |
| Show Withdrawal | GET | /v2/accounts/:account_id/withdrawals/:withdrawal_id | wallet:withdrawals:read | view |
Overview
The Withdrawal resource represents a withdrawal of funds using a payment method (e.g., a bank). Each committed withdrawal also has an associated transaction.You can start a withdrawal with the flag,
commit: false, which is useful if you want to display a withdrawal before executing. Withdrawals made with commit set to false will not complete nor receive an associated transaction until a separate commit request is made.| Parameter | Description |
|---|---|
id string | Resource ID |
status string, enumerable | Status of the withdrawal. Valid values: created, completed, canceled |
payment_method hash | Associated payment method (e.g., a bank) |
transaction hash | Associated transaction (e.g., a bank, fiat account) |
amount money hash | Amount |
subtotal money hash | Amount without fees |
fee money hash | Fee associated to this withdrawal |
created_at timestamp | |
updated_at timestamp | |
resource string, constant withdrawal | |
resource_path string | |
committed boolean | Has this withdrawal been committed? |
payout_at timestamp, optional | When a withdrawal isn’t executed instantly, it receives a payout date for the time it will be executed |
Example Withdrawal Resource
{
"id": "67e0eaec-07d7-54c4-a72c-2e92826897df",
"status": "completed",
"payment_method": {
"id": "83562370-3e5c-51db-87da-752af5ab9559",
"resource": "payment_method",
"resource_path": "/v2/payment-methods/83562370-3e5c-51db-87da-752af5ab9559"
},
"transaction": {
"id": "441b9494-b3f0-5b98-b9b0-4d82c21c252a",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/441b9494-b3f0-5b98-b9b0-4d82c21c252a"
},
"amount": {
"amount": "10.00",
"currency": "USD"
},
"subtotal": {
"amount": "10.00",
"currency": "USD"
},
"created_at": "2015-01-31T20:49:02Z",
"updated_at": "2015-02-11T16:54:02-08:00",
"resource": "withdrawal",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/withdrawals/67e0eaec-07d7-54c4-a72c-2e92826897df",
"committed": true,
"fee": {
"amount": "0.00",
"currency": "USD"
},
"payout_at": "2015-02-18T16:54:00-08:00"
}
Withdraw Funds
Withdraws a user-defined amount of funds from a fiat account.HTTP Request
POST https://api.coinbase.com/v2/accounts/:account_id/withdrawals
Scopes
wallet:withdrawals:create
Arguments
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | string | Required | Withdrawal amount |
currency | string | Required | Currency for the amount |
payment_method | string | Required | ID of payment method used for the withdrawal. List Payment Methods: GET /payment-methods |
commit | boolean | Optional | If false, this withdrawal is not immediately completed. Use the commit call to complete it. Default value: false |
Examples
Request
curl https://api.coinbase.com/v2/accounts/82de7fcd-db72-5085-8ceb-bee19303080b/withdrawals /
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c' \
-d '{
"amount": "10",
"currency": "USD",
"payment_method": "83562370-3e5c-51db-87da-752af5ab9559"
}'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
withdrawal = client.withdraw('2bbf394c-193b-5b2a-9155-3b4732659ede',
{"amount" => "10",
"currency" => "USD",
"payment_method" => "83562370-3e5c-51db-87da-752af5ab9559"})
import requests
# For instructions generating JWT, check the "API Key Authentication" section
JWT_TOKEN = "<your_jwt_token>"
# Coinbase API base URL
ENDPOINT_URL = "https://api.coinbase.com/v2/accounts/:account_id/withdrawals"
def withdraw():
# Generate headers with JWT for authentication
headers = {
"Authorization": f"Bearer {JWT_TOKEN}"
}
data = {
"amount": "10",
"currency": "USD",
"payment_method": "83562370-3e5c-51db-87da-752af5ab9559"
}
# Make the API request
response = requests.post(ENDPOINT_URL, data=data, headers=headers)
return response.json() # Return the JSON response
withdraw = withdraw()
print(withdraw)
var Client = require('coinbase').Client;
var client = new Client({'apiKey': 'API KEY',
'apiSecret': 'API SECRET'});
client.getAccount('2bbf394c-193b-5b2a-9155-3b4732659ede', function(err, account) {
account.withdraw({"amount": "10",
"currency": "USD",
"payment_method": "83562370-3e5c-51db-87da-752af5ab9559"}, function(err, tx) {
console.log(tx);
});
});
Response (200)
{
"transfer": {
"user_entered_amount": {
"value": "9",
"currency": "USD"
},
"amount": {
"value": "9",
"currency": "USD"
},
"total": {
"value": "9",
"currency": "USD"
},
"subtotal": {
"value": "9",
"currency": "USD"
},
"idem": "97c0dcf2-daf7-446c-8dcc-66a9b72b6391",
"committed": false,
"id": "97c0dcf2-daf7-446c-8dcc-66a9b72b6391",
"instant": false,
"source": {
"type": "LEDGER_ACCOUNT",
"network": "internal_retail",
"payment_method_id": "",
"ledger_account": {
"account_id": "6c770048-a3aa-580b-b153-2a6791649ee4",
"currency": "USD",
"owner": {
"id": "5a48fda3bbf66c03a6509af2",
"uuid": "",
"user_uuid": "",
"type": "RETAIL"
}
}
},
"target": {
"type": "EXTERNAL_PAYMENT_METHOD",
"network": "ach",
"payment_method_id": "",
"external_payment_method": {
"payment_method_id": "5a48fe239b15170130598e9c"
}
},
"payout_at": "2025-04-12T19:29:48.611016197Z",
"status": "",
"user_reference": "",
"type": "TRANSFER_TYPE_WITHDRAWAL",
"created_at": null,
"updated_at": null,
"user_warnings": [],
"fees": [],
"total_fee": {
"title": "Fee Total",
"description": "Total fee associated with this transaction",
"amount": {
"value": "0.00",
"currency": "USD"
},
"type": "COINBASE"
},
"cancellation_reason": null,
"hold_days": 0,
"nextStep": null,
"checkout_url": "",
"requires_completion_step": false
}
}
Commit Withdrawal
Completes a withdrawal that is created incommit: false state.
HTTP Request
POST https://api.coinbase.com/v2/accounts/:account_id/withdrawals/:withdrawal_id/commit
Scopes
wallet:withdrawals:create
Arguments
NoneExamples
Request
curl https://api.coinbase.com/v2/accounts/82de7fcd-db72-5085-8ceb-bee19303080b/withdrawals/a333743d-184a-5b5b-abe8-11612fc44ab5/commit /
-X POST /
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
withdrawal = client.commit_withdrawal('2bbf394c-193b-5b2a-9155-3b4732659ede',
'a333743d-184a-5b5b-abe8-11612fc44ab5')
import requests
# For instructions generating JWT, check the "API Key Authentication" section
JWT_TOKEN = "<your_jwt_token>"
# Coinbase API base URL
ENDPOINT_URL = "https://api.coinbase.com/v2/accounts/:account_id/withdrawals/:withdrawal_id/commit"
def commit_withdrawal():
# Generate headers with JWT for authentication
headers = {
"Authorization": f"Bearer {JWT_TOKEN}"
}
# Make the API request
response = requests.post(ENDPOINT_URL, headers=headers)
return response.json() # Return the JSON response
commit = commit_withdrawal()
print(commit)
var Client = require('coinbase').Client;
var client = new Client({'apiKey': 'API KEY',
'apiSecret': 'API SECRET'});
client.getAccount('2bbf394c-193b-5b2a-9155-3b4732659ede', function(err, account) {
account.getWithdrawal('a333743d-184a-5b5b-abe8-11612fc44ab5', function(err, tx) {
tx.commit(function(err, resp) {
console.log(resp);
});
});
});
Response (200)
{
"transfer": {
"user_entered_amount": {
"value": "9",
"currency": "USD"
},
"amount": {
"value": "9",
"currency": "USD"
},
"total": {
"value": "9",
"currency": "USD"
},
"subtotal": {
"value": "9",
"currency": "USD"
},
"idem": "97c0dcf2-daf7-446c-8dcc-66a9b72b6391",
"committed": false,
"id": "97c0dcf2-daf7-446c-8dcc-66a9b72b6391",
"instant": false,
"source": {
"type": "LEDGER_ACCOUNT",
"network": "internal_retail",
"payment_method_id": "",
"ledger_account": {
"account_id": "6c770048-a3aa-580b-b153-2a6791649ee4",
"currency": "USD",
"owner": {
"id": "5a48fda3bbf66c03a6509af2",
"uuid": "",
"user_uuid": "",
"type": "RETAIL"
}
}
},
"target": {
"type": "EXTERNAL_PAYMENT_METHOD",
"network": "ach",
"payment_method_id": "",
"external_payment_method": {
"payment_method_id": "5a48fe239b15170130598e9c"
}
},
"payout_at": "2025-04-12T19:29:48.611016197Z",
"status": "",
"user_reference": "CODE",
"type": "TRANSFER_TYPE_WITHDRAWAL",
"created_at": null,
"updated_at": null,
"user_warnings": [],
"fees": [],
"total_fee": {
"title": "Fee Total",
"description": "Total fee associated with this transaction",
"amount": {
"value": "0.00",
"currency": "USD"
},
"type": "COINBASE"
},
"cancellation_reason": null,
"hold_days": 0,
"nextStep": null,
"checkout_url": "",
"requires_completion_step": false
}
}
List Withdrawals
Lists withdrawals for an account.HTTP Request
GET https://api.coinbase.com/v2/accounts/:account_id/withdrawals
Scopes
wallet:withdrawals:read
Examples
Request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/withdrawals /
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
withdrawals = client.list_withdrawals('2bbf394c-193b-5b2a-9155-3b4732659ede')
import requests
# For instructions generating JWT, check the "API Key Authentication" section
JWT_TOKEN = "<your_jwt_token>"
# Coinbase API base URL
ENDPOINT_URL = "https://api.coinbase.com/v2/accounts/:account_id/withdrawals"
def list_withdrawals():
# Generate headers with JWT for authentication
headers = {
"Authorization": f"Bearer {JWT_TOKEN}"
}
# Make the API request
response = requests.get(ENDPOINT_URL, headers=headers)
return response.json() # Return the JSON response
withdrawals = list_withdrawals()
print(withdrawals)
var Client = require('coinbase').Client;
var client = new Client({'apiKey': 'API KEY',
'apiSecret': 'API SECRET'});
client.getAccount('2bbf394c-193b-5b2a-9155-3b4732659ede', function(err, account) {
account.getWithdrawals(function(err, txs) {
console.log(txs);
});
});
Response
{
"pagination": {
"ending_before": null,
"starting_after": null,
"limit": 25,
"order": "desc",
"previous_uri": null,
"next_uri": null
},
"data": [
{
"id": "67e0eaec-07d7-54c4-a72c-2e92826897df",
"status": "completed",
"payment_method": {
"id": "83562370-3e5c-51db-87da-752af5ab9559",
"resource": "payment_method",
"resource_path": "/v2/payment-methods/83562370-3e5c-51db-87da-752af5ab9559"
},
"transaction": {
"id": "441b9494-b3f0-5b98-b9b0-4d82c21c252a",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/441b9494-b3f0-5b98-b9b0-4d82c21c252a"
},
"amount": {
"amount": "10.00",
"currency": "USD"
},
"subtotal": {
"amount": "10.00",
"currency": "USD"
},
"created_at": "2015-01-31T20:49:02Z",
"updated_at": "2015-02-11T16:54:02-08:00",
"resource": "withdrawal",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/withdrawals/67e0eaec-07d7-54c4-a72c-2e92826897df",
"committed": true,
"fee": {
"amount": "0.00",
"currency": "USD"
},
"payout_at": "2015-02-18T16:54:00-08:00"
}
]
}
Show Withdrawal
Get a single withdrawal.HTTP Request
GET https://api.coinbase.com/v2/accounts/:account_id/withdrawals/:withdrawal_id
Scopes
wallet:withdrawals:read
Examples
Request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/withdrawals/67e0eaec-07d7-54c4-a72c-2e92826897df /
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
withdrawal = client.list_withdrawal('2bbf394c-193b-5b2a-9155-3b4732659ede',
'dd3183eb-af1d-5f5d-a90d-cbff946435ff')
import requests
# For instructions generating JWT, check the "API Key Authentication" section
JWT_TOKEN = "<your_jwt_token>"
# Coinbase API base URL
ENDPOINT_URL = "https://api.coinbase.com/v2/accounts/:account_id/withdrawals/:withdrawal_id"
def show_withdrawal():
# Generate headers with JWT for authentication
headers = {
"Authorization": f"Bearer {JWT_TOKEN}"
}
# Make the API request
response = requests.get(ENDPOINT_URL, headers=headers)
return response.json() # Return the JSON response
withdrawal = show_withdrawal()
print(withdrawal)
var Client = require('coinbase').Client;
var client = new Client({'apiKey': 'API KEY',
'apiSecret': 'API SECRET'});
client.getAccount('2bbf394c-193b-5b2a-9155-3b4732659ede', function(err, account) {
account.getWithdrawal('dd3183eb-af1d-5f5d-a90d-cbff946435ff', function(err, tx) {
console.log(tx);
});
});
Response
{
"data": {
"id": "67e0eaec-07d7-54c4-a72c-2e92826897df",
"status": "completed",
"payment_method": {
"id": "83562370-3e5c-51db-87da-752af5ab9559",
"resource": "payment_method",
"resource_path": "/v2/payment-methods/83562370-3e5c-51db-87da-752af5ab9559"
},
"transaction": {
"id": "441b9494-b3f0-5b98-b9b0-4d82c21c252a",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/441b9494-b3f0-5b98-b9b0-4d82c21c252a"
},
"amount": {
"amount": "10.00",
"currency": "USD"
},
"subtotal": {
"amount": "10.00",
"currency": "USD"
},
"created_at": "2015-01-31T20:49:02Z",
"updated_at": "2015-02-11T16:54:02-08:00",
"resource": "withdrawal",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/withdrawals/67e0eaec-07d7-54c4-a72c-2e92826897df",
"committed": true,
"fee": {
"amount": "0.00",
"currency": "USD"
},
"payout_at": "2015-02-18T16:54:00-08:00"
}
}