Page tree
Skip to end of metadata
Go to start of metadata

Custom prices allow you to highly customize and tightly control your TradeSkillMaster price settings. This page contains detailed information on all the features which custom prices provide.

Fixed Gold Amount

If you're just getting started, or if you know exactly what the price should be, you can simply use a fixed gold amount.



Percent of Price Source

There are multiple price sources which you can use in your custom prices. Type /tsm sources to view the sources which are available to use. The first word in the list is the key which you can include in your custom price.The keys are not case sensitive. Global prices are an average of both Region prices of the same category. Check the Price Sources Explained page for details on each Price Source.

Below is a sample list (yours may be different):

Sample List
avgBuy (Avg Buy Price)
avgSell (Avg Sell Price)
Crafting (Crafting Cost)
DBGlobalHistorical (AuctionDB - Global Historical Price)
DBGlobalMarketAvg (AuctionDB - Global Market Value Average)
DBGlobalMinBuyoutAvg (AuctionDB - Global Minimum Buyout Average)
DBGlobalSaleAvg (AuctionDB - Global Sale Average)
DBHistorical (AuctionDB - Historical Price)
DBMarket (AuctionDB - Market Value)
DBMinBuyout (AuctionDB - Minimum Buyout)
DBRegionHistorical (AuctionDB - Region Historical Price)
DBRegionMarketAvg (AuctionDB - Region Market Value Average)
DBRegionMinBuyoutAvg (AuctionDB - Region Minimum Buyout Average)
DBRegionSaleAvg (AuctionDB - Region Sale Average)
Destroy (Destroy Value)
matPrice (Crafting Material Cost)
maxBuy (Max Buy Price)
maxSell (Max Sell Price)
VendorBuy (Buy from Vendor)
VendorSell (Sell to Vendor)
50% dbmarket
110% crafting

Arithmetic Operators

You can use basic arithmetic such as '+', '-', '*', and '/' in your custom prices. In addition, you can use '%' as a shorthand for '/100 *' (which is the definition of percentage) as well as any number of parenthesis.

50% dbmarket + 5g
(dbmarket / 2) + crafting
((dbminbuyout + 10g) + (dbmarket + 10g)) * 2
(vendorbuy + 100g) / 2
crafting / 0.95 

min() and max()

The min() and max() functions are provided which will evaluate to the lowest or highest of the parameters respectively. If any of the parameters are invalid, they will be silently ignored (unless they all are).

min(50% dbmarket, 100g)
min(dbmarket, dbregionmarketavg)
max(vendorsell, dbminbuyout, avgsell, 20g)


Returns the first parameter which is a valid price. This can be useful to specify a fallback price in case something is invalid (i.e. if you're using dbminbuyout and there are no auctions currently posted).

first(dbminbuyout, dbglobalmarketavg)
first(avgsell, crafting, 100g)


If the first parameter is greater than 0, will return the second parameter. Otherwise, check() will return the third parameter. See this thread for more details and examples.

check(dbmarket - 1000g, 95% dbmarket, 50% dbmarket)


This is a special function for dealing with item conversions. The convert() function has one required parameter which is the price source to be used in calculating the value of the items which convert to the target item. This parameter cannot be a custom price string and must be simply a price source. Conversions include milling, prospecting, transforming (e.g. greater essences to lesser essences and vice versa) and also vendor trades for inks. The function will return the lowest cost of all possible conversions of the item.



Item Parameters

Any price source can be evaluated as a function where you pass an item link or item string in order to evaluate the price source for that specific item. By default, the price source will be evaluated for the item which the entire custom price is being evaluated for. This also works for convert() as the second parameter.


dbminbuyout([Ghost Iron Ore])
matprice([Ink of Dreams])
dbmarket + convert(dbminbuyout, item:79251)