Skip to main content

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"
},
caution

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 email
  • request - Request digital asset from a user or email
  • transfer - Transfer funds between two of one user’s accounts
  • buy - Buy a digital asset
  • sell - Sell a digital asset
  • fiat_deposit - Deposit funds into a fiat account from a financial institution
  • fiat_withdrawal - Withdraw funds from a fiat account
  • exchange_deposit - Deposit money into Coinbase Pro
  • exchange_withdrawal - Withdraw money from Coinbase Pro
  • vault_withdrawal - Withdraw funds from a vault account
  • advanced_trade_fill: Fills for an advanced trade order
  • trade: Trade a digital asset
  • receive: 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 factors
  • canceled - Transaction was canceled
  • waiting_for_signature - Vault withdrawal is waiting for approval
  • waiting_for_clearing - Vault withdrawal is waiting to be cleared
ParameterDescription
id stringTransaction ID
type string, enumeratedTransaction type
status string, enumeratedStatus
amount money hashAmount of any supported digital asset. Value is negative to indicate the debiting of funds for the following transaction type cases:
  • advanced_trade_fill, sell
  • pro_deposit
native_amount money hashAmount in user's native currency. Value is negative to indicate the debiting of funds for the following transaction type cases:
  • advanced_trade_fill, sell
  • pro_deposit
description stringUser defined description
created_at timestamp
updated_at timestamp
resource string, constant transaction
resource_path string
instant_exchange boolean
advanced_trade_fill hashOnly provided if the transaction type is advanced_trade_fill. Contains information about the fill posted.
details hashDetailed information about the transaction
network hash, optionalInfo about crypto networks including on-chain transaction hashes. Only available for certain types of transactions.
to hash, optionalReceiving party of a debit transaction. Usually another resource but can be another type like email. Only available for certain types of transactions.
from hash, optionalOriginating 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, optionalAssociated crytpo address for received payment
application hash, optionalAssociated OAuth2 application

Advanced Trade Fill

ParameterDescription
fill_price stringPrice this fill was posted at
product_id string
order_id stringThe UUID of the order this fill belongs to
commissionCommission on the entire order. This commission is not per fill. Always represented in quote currency.
order_side string, enumeratedSide the order was placed on. Possible values: BUY, SELL

Details

ParameterDescription
title stringDescription of transaction with currency. Example: "Received Bitcoin"
subtitle string or null
header stringAmount received, in amount and equivalent native amount. Example: "Received 0.005378 BTC ($49.92)"
health stringHealth of transaction. Example: "Positive"

Network

ParameterDescription
status string, enumeratedPossible values:
  • off_blockchain
  • confirmed
  • pending
  • unconfirmed
status_description string or nullDescription of status

From

ParameterDescription
id stringUUID of user who the transaction is from
resource string or nulluser
resource_path stringIf resource is user, this path is in the form of v2/users/{userUUID}
currencyCurrency 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.

tip

Coinbase recommends that you always supply a unique idem field for each transaction.

danger

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

ParameterTypeRequiredDescription
type constant sendstringRequiredType send is required when sending money
tostringRequiredA blockchain address, or an email of the recipient
amountstringRequiredAmount to be sent
currencystringRequiredCurrency of the amount
descriptionstringOptionalNotes to be included in the email to the recipient
skip_notificationsbooleanOptionalDon't send notification emails for small amounts (e.g., tips)
idemstringOptional[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_institutionbooleanOptionalIf 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_websitestringOptionalThe website of the financial institution or exchange. Required if to_financial_institution is true.
destination_tagstringOptionalFor 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 to wallet
  • wallet to vault

HTTP Request

POST https://api.coinbase.com/v2/accounts/:account_id/transactions

Scopes

  • wallet:transactions:transfer

Arguments

ParameterTypeRequiredDescription
type constant transferstringRequiredType transfer is required when transferring different cryptocurrencies between accounts
tostringRequiredID of the receiving account
amountstringRequiredAmount to be transferred
currencystringRequiredCurrency for the amount
descriptionstringOptionalNotes 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"
}
},
}

Was this helpful?