Transactions
Transaction Resource
The Transaction resource represents an event on the account. An amount
can be positive (credit) or negative (debit). Transactions with counterparties have either a to
or from
field.
Some transactions include a linked resource in the payload of the type
value, for example, a buy
:
{
...
"type": "buy",
...
"buy": {
"id": "5c8216e7-318a-50a5-91aa-2f2cfddfdaab",
"resource": "buy",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/buys/5c8216e7-318a-50a5-91aa-2f2cfddfdaab"
},
As transactions represent multiple objects, resources with new type
or status
values may be added over time. See more about enumerable values.
Transaction types currently available:
send
- Send a supported digital asset to a corresponding address or emailrequest
- Request digital asset from a user or emailtransfer
- Transfer funds between two of one user’s accountsbuy
- Buy a digital assetsell
- Sell a digital assetfiat_deposit
- Deposit funds into a fiat account from a financial institutionfiat_withdrawal
- Withdraw funds from a fiat accountexchange_deposit
- Deposit money into Coinbase Proexchange_withdrawal
- Withdraw money from Coinbase Provault_withdrawal
- Withdraw funds from a vault accountadvanced_trade_fill
: Fills for an advanced trade ordertrade
: Trade a digital assetreceive
: Receive a digital asset
Transaction statuses vary based on the type of the transaction. As both types and statuses can change over time, we recommend that you use details
field for constructing human readable descriptions of transactions. Currently available statuses are:
pending
- Pending transactions (e.g., a send or a buy)completed
- Completed transactions (e.g., a send or a buy)failed
- Failed transactions (e.g., failed buy)expired
- Conditional transaction expired due to external factorscanceled
- Transaction was canceledwaiting_for_signature
- Vault withdrawal is waiting for approvalwaiting_for_clearing
- Vault withdrawal is waiting to be cleared
Parameter | Description |
---|---|
id string | Transaction ID |
type string, enumerated | Transaction type |
status string, enumerated | Status |
amount money hash | Amount of any supported digital asset. Value is negative to indicate the debiting of funds for the following transaction type cases:
|
native_amount money hash | Amount in user's native currency. Value is negative to indicate the debiting of funds for the following transaction type cases:
|
description string | User defined description |
created_at timestamp | |
updated_at timestamp | |
resource string, constant transaction | |
resource_path string | |
instant_exchange boolean | |
advanced_trade_fill hash | Only provided if the transaction type is advanced_trade_fill . Contains information about the fill posted. |
details hash | Detailed information about the transaction |
network hash, optional | Info about crypto networks including on-chain transaction hashes. Only available for certain types of transactions. |
to hash, optional | Receiving party of a debit transaction. Usually another resource but can be another type like email. Only available for certain types of transactions. |
from hash, optional | Originating party of a credit transaction. Usually another resource but can be another type like bitcoin network. Only available for certain types of transactions. |
address hash, optional | Associated crytpo address for received payment |
application hash, optional | Associated OAuth2 application |
Advanced Trade Fill
Parameter | Description |
---|---|
fill_price string | Price this fill was posted at |
product_id string | |
order_id string | The UUID of the order this fill belongs to |
commission | Commission on the entire order. This commission is not per fill. Always represented in quote currency. |
order_side string, enumerated | Side the order was placed on. Possible values: BUY , SELL |
Details
Parameter | Description |
---|---|
title string | Description of transaction with currency. Example: "Received Bitcoin" |
subtitle string or null | |
header string | Amount received, in amount and equivalent native amount. Example: "Received 0.005378 BTC ($49.92)" |
health string | Health of transaction. Example: "Positive" |
Network
Parameter | Description |
---|---|
status string, enumerated | Possible values:
|
status_description string or null | Description of status |
From
Parameter | Description |
---|---|
id string | UUID of user who the transaction is from |
resource string or null | user |
resource_path string | If resource is user , this path is in the form of v2/users/{userUUID} |
currency | Currency user sent |
Example transaction resource (send)
{
"id": "57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"type": "send",
"status": "completed",
"amount": {
"amount": "-0.00100000",
"currency": "BTC"
},
"native_amount": {
"amount": "-0.01",
"currency": "USD"
},
"description": null,
"created_at": "2015-03-11T13:13:35-07:00",
"updated_at": "2015-03-26T15:55:43-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"network": {
"status": "off_blockchain",
"name": "bitcoin"
},
"to": {
"id": "a6b4c2df-a62c-5d68-822a-dd4e2102e703",
"resource": "user",
"resource_path": "/v2/users/a6b4c2df-a62c-5d68-822a-dd4e2102e703"
},
"details": {
"title": "Sent bitcoin",
"subtitle": "to User 2"
}
}
Example transaction resource (buy)
{
"id": "8250fe29-f5ef-5fc5-8302-0fbacf6be51e",
"type": "buy",
"status": "pending",
"amount": {
"amount": "1.00000000",
"currency": "BTC"
},
"native_amount": {
"amount": "10.00",
"currency": "USD"
},
"description": null,
"created_at": "2015-03-26T13:42:00-07:00",
"updated_at": "2015-03-26T15:55:45-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/8250fe29-f5ef-5fc5-8302-0fbacf6be51e",
"buy": {
"id": "5c8216e7-318a-50a5-91aa-2f2cfddfdaab",
"resource": "buy",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/buys/5c8216e7-318a-50a5-91aa-2f2cfddfdaab"
},
"details": {
"title": "Bought bitcoin",
"subtitle": "using Capital One Bank"
}
}
List Transactions
Lists the transactions of an account by account ID.
HTTP Request
GET https://api.coinbase.com/v2/accounts/:account_id/transactions
Scopes
wallet:transactions:read
Example request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions /
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
txs = client.transactions('2bbf394c-193b-5b2a-9155-3b4732659ede')
from coinbase.wallet.client import Client
client = Client(<api_key>, <api_secret>)
txs = client.get_transactions('2bbf394c-193b-5b2a-9155-3b4732659ede')
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.getTransactions(function(err, txs) {
console.log(txs);
});
});
Example response (200)
{
"pagination": {
"ending_before": null,
"starting_after": null,
"limit": 25,
"order": "desc",
"previous_uri": null,
"next_uri": null
},
"data": [
{
"id": "4117f7d6-5694-5b36-bc8f-847509850ea4",
"type": "buy",
"status": "pending",
"amount": {
"amount": "486.34313725",
"currency": "BTC"
},
"native_amount": {
"amount": "4863.43",
"currency": "USD"
},
"description": null,
"created_at": "2015-03-26T23:44:08-07:00",
"updated_at": "2015-03-26T23:44:08-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/4117f7d6-5694-5b36-bc8f-847509850ea4",
"buy": {
"id": "9e14d574-30fa-5d85-b02c-6be0d851d61d",
"resource": "buy",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/buys/9e14d574-30fa-5d85-b02c-6be0d851d61d"
},
"details": {
"title": "Bought bitcoin",
"subtitle": "using Capital One Bank"
}
},
{
"id": "005e55d1-f23a-5d1e-80a4-72943682c055",
"type": "request",
"status": "pending",
"amount": {
"amount": "0.10000000",
"currency": "BTC"
},
"native_amount": {
"amount": "1.00",
"currency": "USD"
},
"description": "",
"created_at": "2015-03-24T18:32:35-07:00",
"updated_at": "2015-01-31T20:49:02Z",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/005e55d1-f23a-5d1e-80a4-72943682c055",
"to": {
"resource": "email",
"email": "rb@coinbase.com"
},
"details": {
"title": "Requested bitcoin",
"subtitle": "from rb@coinbase.com"
}
},
{
"id": "ff01bbc6-c4ad-59e1-9601-e87b5b709458",
"type": "transfer",
"status": "completed",
"amount": {
"amount": "-5.00000000",
"currency": "BTC"
},
"native_amount": {
"amount": "-50.00",
"currency": "USD"
},
"description": "",
"created_at": "2015-03-12T15:51:38-07:00",
"updated_at": "2015-01-31T20:49:02Z",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/ff01bbc6-c4ad-59e1-9601-e87b5b709458",
"to": {
"id": "58542935-67b5-56e1-a3f9-42686e07fa40",
"resource": "account",
"resource_path": "/v2/accounts/58542935-67b5-56e1-a3f9-42686e07fa40"
},
"details": {
"title": "Transfered bitcoin",
"subtitle": "to Secondary Account"
}
},
{
"id": "57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"type": "send",
"status": "completed",
"amount": {
"amount": "-0.00100000",
"currency": "BTC"
},
"native_amount": {
"amount": "-0.01",
"currency": "USD"
},
"description": null,
"created_at": "2015-03-11T13:13:35-07:00",
"updated_at": "2015-03-26T15:55:43-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"network": {
"status": "off_blockchain",
"name": "bitcoin"
},
"to": {
"id": "a6b4c2df-a62c-5d68-822a-dd4e2102e703",
"resource": "user",
"resource_path": "/v2/users/a6b4c2df-a62c-5d68-822a-dd4e2102e703"
},
"details": {
"title": "Send bitcoin",
"subtitle": "to User 2"
}
}
]
}
Show a Transaction
Get a single transaction for an account.
HTTP Request
GET https://api.coinbase.com/v2/accounts/:account_id/transactions/:transaction_id
Scopes
wallet:transactions:read
Example request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/57ffb4ae-0c59-5430-bcd3-3f98f797a66c /
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
tx = client.transaction('2bbf394c-193b-5b2a-9155-3b4732659ede', '57ffb4ae-0c59-5430-bcd3-3f98f797a66c')
from coinbase.wallet.client import Client
client = Client(<api_key>, <api_secret>)
tx = client.get_transaction('2bbf394c-193b-5b2a-9155-3b4732659ede', '57ffb4ae-0c59-5430-bcd3-3f98f797a66c')
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.getTransaction('57ffb4ae-0c59-5430-bcd3-3f98f797a66c', function(err, tx) {
console.log(tx);
});
});
Example response (200)
{
"data": {
"id": "57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"type": "send",
"status": "completed",
"amount": {
"amount": "-0.00100000",
"currency": "BTC"
},
"native_amount": {
"amount": "-0.01",
"currency": "USD"
},
"description": null,
"created_at": "2015-03-11T13:13:35-07:00",
"updated_at": "2015-03-26T15:55:43-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/57ffb4ae-0c59-5430-bcd3-3f98f797a66c",
"network": {
"status": "off_blockchain",
"name": "bitcoin"
},
"to": {
"id": "a6b4c2df-a62c-5d68-822a-dd4e2102e703",
"resource": "user",
"resource_path": "/v2/users/a6b4c2df-a62c-5d68-822a-dd4e2102e703"
},
"details": {
"title": "Send bitcoin",
"subtitle": "to User 2"
}
}
}
Send Money
Send funds to a network address for any Coinbase supported asset, or email address of the recipient. No transaction fees are required for off-blockchain cryptocurrency transactions.
Coinbase recommends that you always supply a unique idem
field for each transaction.
The Send money API is asynchronous, which means that Coinbase may delay or cancel the send when necessary. Coinbase recommends that you poll the status
field for the completed
state with the Show a Transaction API. You can also see if a transaction is pending
in the Send Money API response.
When used with OAuth2 authentication, this endpoint requires two factor authentication.
HTTP Request
POST https://api.coinbase.com/v2/accounts/:account_id/transactions
Scopes
wallet:transactions:send
Arguments
Parameter | Type | Required | Description |
---|---|---|---|
type constant send | string | Required | Type send is required when sending money |
to | string | Required | A blockchain address, or an email of the recipient |
amount | string | Required | Amount to be sent |
currency | string | Required | Currency of the amount |
description | string | Optional | Notes to be included in the email to the recipient |
skip_notifications | boolean | Optional | Don't send notification emails for small amounts (e.g., tips) |
idem | string | Optional | [Recommended] A token to ensure idempotence. If a previous transaction with the same idem parameter exists for this sender, that previous transaction is returned and a new one is not created. Max length is 100 characters. |
to_financial_institution | boolean | Optional | If true, send to another financial institution or exchange. Required if this send is to an address and is valued at over USD$3000. |
financial_institution_website | string | Optional | The website of the financial institution or exchange. Required if to_financial_institution is true . |
destination_tag | string | Optional | For select currencies, destination_tag or memo indicates the beneficiary or destination of a payment for select currencies. Example: { "type" : "send", "to": "address", "destination_tag" : "memo", "amount": "", "currency": "" } |
Example request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions /
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c' \
-d '{
"type": "send",
"to": "1AUJ8z5RuHRTqD1eikyfUUetzGmdWLGkpT",
"amount": "0.1",
"currency": "BTC",
"idem": "9316dd16-0c05"
}'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
tx = client.send('2bbf394c-193b-5b2a-9155-3b4732659ede',
{'to' => '1AUJ8z5RuHRTqD1eikyfUUetzGmdWLGkpT',
'amount' => '0.1',
'currency' => 'BTC',
'idem' => '9316dd16-0c05'})
from coinbase.wallet.client import Client
client = Client(<api_key>, <api_secret>)
tx = client.send_money('2bbf394c-193b-5b2a-9155-3b4732659ede',
to='1AUJ8z5RuHRTqD1eikyfUUetzGmdWLGkpT',
amount='0.1',
currency='BTC',
idem='9316dd16-0c05')
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.sendMoney({'to': '1AUJ8z5RuHRTqD1eikyfUUetzGmdWLGkpT',
'amount': '0.1',
'currency': 'BTC',
'idem': '9316dd16-0c05'}, function(err, tx) {
console.log(tx);
});
});
Response (201)
{
"data": {
"id": "3c04e35e-8e5a-5ff1-9155-00675db4ac02",
"type": "send",
"status": "pending",
"amount": {
"amount": "-0.10000000",
"currency": "BTC"
},
"native_amount": {
"amount": "-1.00",
"currency": "USD"
},
"description": null,
"created_at": "2015-01-31T20:49:02Z",
"updated_at": "2015-03-31T17:25:29-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/3c04e35e-8e5a-5ff1-9155-00675db4ac02",
"network": {
"status": "unconfirmed",
"hash": "463397c87beddd9a61ade61359a13adc9efea26062191fe07147037bce7f33ed",
"name": "bitcoin"
},
"to": {
"resource": "bitcoin_address",
"address": "1AUJ8z5RuHRTqD1eikyfUUetzGmdWLGkpT"
},
"details": {
"title": "Send bitcoin",
"subtitle": "to User 2"
}
}
}
Transfer Money (between accounts)
Transfer any Coinbase supported digital asset between two of a single user's accounts. The following transfers are allowed:
wallet
towallet
wallet
tovault
HTTP Request
POST https://api.coinbase.com/v2/accounts/:account_id/transactions
Scopes
wallet:transactions:transfer
Arguments
Parameter | Type | Required | Description |
---|---|---|---|
type constant transfer | string | Required | Type transfer is required when transferring different cryptocurrencies between accounts |
to | string | Required | ID of the receiving account |
amount | string | Required | Amount to be transferred |
currency | string | Required | Currency for the amount |
description | string | Optional | Notes to be included in the transfer |
Example request
curl https://api.coinbase.com/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions /
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c' \
-d '{
"type": "transfer",
"to": "58542935-67b5-56e1-a3f9-42686e07fa40",
"amount": "1"
}'
require 'coinbase/wallet'
client = Coinbase::Wallet::Client.new(api_key: <api key>, api_secret: <api secret>)
tx = client.transfer('2bbf394c-193b-5b2a-9155-3b4732659ede',
{'to' => '58542935-67b5-56e1-a3f9-42686e07fa40',
'amount' => '1')
from coinbase.wallet.client import Client
client = Client(<api_key>, <api_secret>)
tx = client.transfer_money('2bbf394c-193b-5b2a-9155-3b4732659ede',
to='58542935-67b5-56e1-a3f9-42686e07fa40',
amount='1')
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.transferMoney({'to': '58542935-67b5-56e1-a3f9-42686e07fa40',
'amount': '1'}, function(err, tx) {
console.log(tx);
});
});
Response (201)
{
"data": {
"id": "2e9f48cd-0b05-5f7c-9056-17a8acb408ad",
"type": "request",
"status": "pending",
"amount": {
"amount": "1.00000000",
"currency": "BTC"
},
"native_amount": {
"amount": "10.00",
"currency": "USD"
},
"description": null,
"created_at": "2015-04-01T10:37:11-07:00",
"updated_at": "2015-04-01T10:37:11-07:00",
"resource": "transaction",
"resource_path": "/v2/accounts/2bbf394c-193b-5b2a-9155-3b4732659ede/transactions/2e9f48cd-0b05-5f7c-9056-17a8acb408ad",
"to": {
"resource": "email",
"email": "email@example.com"
},
"details": {
"title": "Requested bitcoin",
"subtitle": "from email@example.com"
}
},
}