Skip to content
Economy & Taxes

Economy & Taxes

Multi-Currency Support

XAuctionHouse supports all currencies defined in XCore's economy system. Sellers can specify which currency to use when creating a listing:

/ah sell 500 gems
/ah auction 1000 1d coins

The default-currency setting in config.yml determines which currency is used when none is specified. If left empty, the primary Vault currency is used.

# Default currency for listings (empty = use vault primary currency)
default-currency: ""

Each listing displays its currency in the item lore, so buyers always know what currency they are paying in.

Tax System

A configurable tax/commission can be applied to every sale:

tax:
  enabled: false
  rate: 0.05       # 5% tax
  type: SELLER     # SELLER or BUYER
TypeBehaviorExample (item priced at 1000, 5% tax)
SELLERTax is deducted from the seller's proceedsBuyer pays 1000, seller receives 950
BUYERTax is added on top of the price for the buyerBuyer pays 1050, seller receives 1000

Tax information is shown in the confirmation GUI before purchase so there are no surprises.

Rate by rank

A rate can be attached to a permission node, ah.tax.<name>, and the lowest rate a player holds wins — so a rank never makes somebody worse off than the default, and stacking two ranks is not a puzzle.

tax:
  enabled: true
  rate: 0.05
  type: SELLER
  rates:
    vip: 0.03
    mvp: 0.02

A player with ah.tax.vip pays 3%, one holding both ah.tax.vip and ah.tax.mvp pays 2%, everyone else pays 5%. Leave rates empty to charge everyone the flat rate.

Both modes apply to auctions as well: under BUYER the tax is charged on top of the bid at the moment it is placed, under SELLER it is deducted from the payout when the auction ends.

An item only changes hands once the payment has actually been collected. If the withdrawal is refused — insufficient funds, or another economy plugin vetoing the transaction — the purchase is aborted rather than completed on credit.

Market prices

/ah price answers the question every trade starts with: what does this actually go for? Hold an item, or name one, and you get the average, the lowest, the highest and the last sale — read from what has really been sold, not from a price list somebody maintains by hand.

/ah price
/ah price DIAMOND

The same numbers back a Market page on the XCore dashboard, so an administrator can watch what the economy is doing without logging in.

The history is recorded at the moment of sale, for the price actually paid — for an auction that is the winning bid, not the (zero) fixed price.

Pending Payments

When a seller is offline at the time of sale, their payment is queued. On their next login, they receive a summary of all sales that happened while they were away:

During your absence:
  ▸ Steve bought your Diamond Sword (+$500)
  ▸ Alex bought your Iron Pickaxe (+$200)

The notification delay is configurable to avoid conflicts with login screens:

delay-message: 1000  # Delay in ms before showing join notifications

Price Limits

A maximum price cap prevents abuse:

maximum-price: 1000000000

For auctions, you can also set a minimum starting bid:

auction:
  min-starting-bid: 1

Players who try to list above the maximum or below the minimum receive an error message.