curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods \
--header 'api-key: <api-key>' \
--header 'api-nonce: <api-key>' \
--header 'api-sign: <api-key>'import requests
url = "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods"
headers = {
"api-key": "<api-key>",
"api-sign": "<api-key>",
"api-nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'api-key': '<api-key>', 'api-sign': '<api-key>', 'api-nonce': '<api-key>'}
};
fetch('https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-sign", "<api-key>")
req.Header.Add("api-nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"name": "Bitcoin",
"method_id": "11111111-1111-1111-1111-111111111111",
"fee_amount": "0.00010000",
"fee_asset": "BTC",
"fee_asset_class": "currency",
"minimum": "0.00100000",
"is_disabled": false,
"asset": "BTC",
"asset_class": "currency",
"network_info": {
"network": "Bitcoin",
"explorer": "https://www.blockchain.com/btc/tx/{tx_id}"
}
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset supplied without asset_class",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Permission Denied",
"data": {
"message": "Caller lacks read access to vault VABCDEF234567A"
},
"detail": "The caller does not have access to the requested vault.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:AssetNotFound",
"status": 404,
"title": "Asset Not Found",
"data": {
"message": "Asset BTC with class currency was not found"
},
"detail": "No asset matched the supplied asset and asset_class.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/ReadUpstream",
"status": 500,
"title": "Internal Server Error",
"data": "<unknown>",
"detail": "Failed to read response from upstream custody service.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/Connect",
"status": 503,
"title": "Service Unavailable",
"data": "<unknown>",
"detail": "Downstream custody service is temporarily unreachable; retry with backoff.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}List withdrawal methods
Returns the withdrawal methods available for the vault. Each entry carries the method identifier, fee and fee asset, minimum withdrawal amount, disabled flag, and the network metadata for the underlying chain. Filter by asset and asset_class together to limit results to a single asset.
Rate limit: 200 requests per 30 seconds per IP.
curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods \
--header 'api-key: <api-key>' \
--header 'api-nonce: <api-key>' \
--header 'api-sign: <api-key>'import requests
url = "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods"
headers = {
"api-key": "<api-key>",
"api-sign": "<api-key>",
"api-nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'api-key': '<api-key>', 'api-sign': '<api-key>', 'api-nonce': '<api-key>'}
};
fetch('https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawal-methods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-sign", "<api-key>")
req.Header.Add("api-nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"name": "Bitcoin",
"method_id": "11111111-1111-1111-1111-111111111111",
"fee_amount": "0.00010000",
"fee_asset": "BTC",
"fee_asset_class": "currency",
"minimum": "0.00100000",
"is_disabled": false,
"asset": "BTC",
"asset_class": "currency",
"network_info": {
"network": "Bitcoin",
"explorer": "https://www.blockchain.com/btc/tx/{tx_id}"
}
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset supplied without asset_class",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Permission Denied",
"data": {
"message": "Caller lacks read access to vault VABCDEF234567A"
},
"detail": "The caller does not have access to the requested vault.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:AssetNotFound",
"status": 404,
"title": "Asset Not Found",
"data": {
"message": "Asset BTC with class currency was not found"
},
"detail": "No asset matched the supplied asset and asset_class.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/ReadUpstream",
"status": 500,
"title": "Internal Server Error",
"data": "<unknown>",
"detail": "Failed to read response from upstream custody service.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/Connect",
"status": 503,
"title": "Service Unavailable",
"data": "<unknown>",
"detail": "Downstream custody service is temporarily unreachable; retry with backoff.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}Authorizations
Path Parameters
Vault identifier, a V-prefixed 14-char base32 string with a final check character.
"VABCDEF234567A"
Query Parameters
Filter results to a single asset code (e.g. BTC). Requires asset_class when supplied.
"BTC"
Asset class filter. Required when asset is supplied. Currently only currency is supported.
"currency"
Response
Withdrawal methods available for the vault, optionally filtered by asset.
Funding method name (e.g. Bitcoin, ACH, SEPA).
"Bitcoin"
Funding method identifier.
"11111111-1111-1111-1111-111111111111"
Withdrawal fee amount, fixed-precision decimal as string.
"0.00010000"
Asset code the fee is charged in. May differ from the asset being withdrawn.
"BTC"
Asset class of the fee asset. Currently always currency.
"currency"
Minimum withdrawal amount, fixed-precision decimal as string.
"0.00100000"
Whether this method is temporarily disabled.
false
Asset code (e.g. BTC, USD).
"BTC"
Asset class. Currently always currency.
"currency"
Network metadata for the underlying chain. Omitted for methods without an associated chain.
Show child attributes
Show child attributes
Was this page helpful?