List your sales
What you have sold on Cru, one unit at a time, newest first: commission, what you received and profit.
Query parameters
ALL OPTIONAL| PARAMETER | DESCRIPTION |
|---|---|
| lwinstring · CSV · ≤ 20 | Only these wines: up to 20 comma-separated 18-digit LWIN18 codes. Anything else is refused with VALIDATION_INVALID_VALUE. |
| statusstring · CSV | Only sales in any of these states, comma-separated, in any case: transfer_needed, awaiting_transfer, on_purchase_order or delivered_to_cru. Anything else is refused with VALIDATION_UNSUPPORTED_VALUE. |
| deliverable_warehouse_codestring · CSV | Only sales of wine held outside Cru going to any of these Cru warehouses, comma-separated: UK_DRAK, HK_KERRY, SG_TOLL, FR_DARTESS, US_NAPA. Wine stored with Cru matches none. An unknown code is refused with VALIDATION_INVALID_VALUE. |
| sortstring | What to order by: traded_at, the date of the sale, the only choice. Default: traded_at |
| directionstring | desc for newest first, or asc for oldest first. Default: desc |
| limitinteger · 1–250 | Number of sales to return. A larger value is refused with VALIDATION_INVALID_VALUE, not reduced. Default: 50 |
| offsetinteger · ≥ 0 | Number of sales to skip. Default: 0 |
GET /trades is gone, and returns NOT_FOUND / 404. What you bought is GET /trades/purchases, in data.purchases, and what you sold GET /trades/sales, in data.sales. Neither has side, as a field or a parameter: sending side returns VALIDATION_UNKNOWN_PARAMETER / 400. Both take sort and direction, and a status filter of their own; sales also filter by deliverable_warehouse_code.
A sale is what GET /trades called a sell, without side. It is now in the market’s currency, which currency names, rather than the one it sold in: price is still the Sold For on Cru’s Sold list, converted where it sold in another currency. After traded_at, each sale now has that list’s other columns, from cru_id to status.
Each unit sold is its own sale, with quantity 1, its cru_id and no order number. sold_price, commission and settlement_fee take the sale down to net_proceeds, what you received, and profit_loss sets that against cost.
Once it sells, wine held outside Cru goes to the Cru warehouse deliver_to names, by deliver_by. status says how far it has got: transfer_needed until a transfer to Cru is booked, then awaiting_transfer, with transfer_ref naming the transfer; on_purchase_order while it is due in on a purchase order; and delivered_to_cru once it is there. Wine stored with Cru has no deliver_to, and is always delivered_to_cru.
Response fields
200 OK · pageddata.sales, newest first unless direction is asc. Every amount is in the market’s currency. meta.pagination counts sales.
Each item in sales[]
lwin18string
The 18-digit LWIN: wine, vintage and pack together. Match on all 18 digits.
wine_namestring | null
Cru’s name for the wine.
vintageinteger | null
The vintage year. 1000 means non-vintage.
pack_sizestring | null
Pack format, for example 6x75cl.
quantityinteger
Always 1: each unit sold is its own sale.
pricenumber | null
What the unit sold for, the Sold list’s Sold For. For wine held outside Cru, that is after Cru’s commission: sold_price less commission. For wine stored with Cru it is usually sold_price, but can differ, such as when the unit sold into a bid at another price.
totalnumber | null
The same as price, for one unit.
currencystring
The market’s. Every amount on a sale is in it, never at today’s rate: cost at the rate of the day it was bought, a sale of wine held outside Cru at the rate of the day it sold, and any other sale at the rate recorded with the unit.
referencenull
Always null: a sale has no order number.
traded_atdatetime | null
When it sold, RFC 3339 UTC.
cru_idinteger | null
The unit’s Cru ID.
transfer_refstring | null
The transfer that brings it to Cru, such as SM00004417, once one is booked.
costnumber | null
What you paid for it. null when no cost is recorded.
sold_pricenumber | null
The price Cru’s commission was worked out from, before the commission and any settlement_fee. For wine stored with Cru, its listing price, fixed on the unit when it was listed.
commission_percentnumber
Cru’s commission, as a percentage of sold_price. 0.0 for a supplier.
commissionnumber | null
Cru’s commission, as an amount.
settlement_feenumber | null
The warehouse’s fee, for wine held outside Cru. 0.0 for wine stored with Cru.
net_proceedsnumber | null
What you received, the Sold list’s You Received: sold_price less commission and settlement_fee.
profit_lossnumber | null
net_proceeds less cost. null when cost is.
profit_loss_percentnumber | null
profit_loss as a percentage of cost, to one decimal place. null when no cost is recorded.
deliver_tostring | null
For wine held outside Cru, the name of the Cru warehouse it goes to. null for wine stored with Cru.
deliverable_warehouse_codestring | null
That warehouse’s code: UK_DRAK, HK_KERRY, SG_TOLL, FR_DARTESS, US_NAPA. null for wine stored with Cru.
deliver_bydate | null
For wine held outside Cru, when it is due there, YYYY-MM-DD: its transfer’s expected date or, without one, two weeks after it sold. null for wine stored with Cru.
statusstring | null
Where the wine is in reaching Cru, as the status filter takes it: transfer_needed, awaiting_transfer, on_purchase_order or delivered_to_cru. Wine stored with Cru is always delivered_to_cru.
Errors
An lwin that is not 18-digit LWIN18 codes, or more than 20 of them, returns VALIDATION_INVALID_VALUE / 422. A status other than transfer_needed, awaiting_transfer, on_purchase_order or delivered_to_cru, a sort other than traded_at, or a direction other than desc or asc returns VALIDATION_UNSUPPORTED_VALUE / 422, and a deliverable_warehouse_code that is not a Cru warehouse code VALIDATION_INVALID_VALUE / 422. Missing or invalid credentials return AUTH_INVALID_CREDENTIALS / 401. A credential without trades:read gets AUTH_INSUFFICIENT_SCOPE / 403. View all error codes →