Skip to main content

List User Purchases

Returns the user's purchase history: one row per buy, newest first, across all markets. Each row carries its status, the transaction_id that drives it and the on-chain hash once it settles. Platform-token and secondary-market buys appear here as pending (status = 1) from the moment they are submitted. For one row per token with summed quantities, use List User Holdings.

A user who has bought nothing gets an empty page, not a 404.

Required permission: purchase:view

Request​

GET /v2/users/{user_id}/purchases

Parameters​

NameTypeInDescription
user_idstringpathRequired. User ID
pageintegerqueryRequired. Page number, starting at 1
per_pageintegerqueryRequired. Items per page, 1–100
token_idstringqueryOnly the purchases of this token

Headers​

NameDescription
AuthorizationRequired. Bearer <access_token>

Example​

curl --request GET \
--url '{{baseUrl}}/v2/users/680c02896d91ca0145cfeb81/purchases?page=1&per_page=10' \
--header 'Authorization: Bearer <access_token>'

Response​

{
"data": [
{
"id": "6913872955654191dede37dc",
"token_id": "68ae06cfcccf4e8fc19362d1",
"quantity": 10,
"market_type": 0,
"status": 0,
"transaction_id": "6913872755654191dede37da",
"hash": "0x5b0c8f6e2a4d7c1b9e3f5a7d2c4b6e8f0a1c3e5d7b9f1a3c5e7d9b1f3a5c7e9d",
"wallet_id": "6a89b68e0c46ca4c941271aa",
"buyer_address": "0x3b4E4dd67EE4054514bA2101e981f4C4D44eFDDc",
"seller_address": "0x730d22ae2267fc5b40520605868ddb48c29331a7",
"price": {
"amount": "1.12",
"decimal": 6,
"symbol": "VUSD",
"address": "0xf2d90affe805280c004d0135343f2cbd7c96ce98"
},
"created_at": "2026-11-09T09:40:03Z"
}
],
"total": 1,
"page": 1,
"per_page": 10
}

Response Fields​

FieldTypeDescription
data[].idstringPurchase ID
data[].token_idstringToken bought
data[].quantityintegerWhole tokens bought
data[].market_typeinteger0 primary market, 1 secondary market, 2 external market
data[].statusinteger0 confirmed (settled on chain), 1 pending (submitted, awaiting confirmation), 2 failed (the chain rejected it)
data[].transaction_idstringUser transaction that drives the buy: poll it with Get User Transaction while the purchase is pending; its error holds the reason when it failed. Omitted when the row has none
data[].hashstringOn-chain transaction hash; empty until the buy settles
data[].wallet_idstringBuyer's wallet the purchase was charged to and settled into. Empty on rows written before purchases carried a wallet
data[].buyer_addressstringBuyer wallet address
data[].seller_addressstringPrimary market: the issuing node's diamond contract. Secondary market: the seller's wallet address
data[].priceobjectUnit price paid: amount (decimal string), decimal, symbol, address of the payment currency
data[].created_atstringWhen the purchase was recorded (RFC 3339)
totalintegerNumber of purchases matching the filter
pageintegerRequested page
per_pageintegerRequested page size

Errors​

StatusCodeDescription
40010015Validation failed (page, per_page) — see details
40010016user_id or token_id is not a valid 24-character hex id
50010000Unexpected server-side failure

See Errors for the error format and common codes.