> For the complete documentation index, see [llms.txt](https://daddy-studios.gitbook.io/daddy-studios-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://daddy-studios.gitbook.io/daddy-studios-docs/scripts/daddy-marketplace/configuration/fees.md).

# Fees & Taxes

Listings, their limits, and every way the marketplace takes money out of a trade.

## Listings

```lua
Config.Marketplace = {
    maxActiveListings    = 10,          -- per player
    listingDurationHours = 48,          -- 0 = never expire
    minPrice    = 1,                    -- per unit
    maxPrice    = 1000000,              -- per unit
    minQuantity = 1,
    maxQuantity = 1000,
    taxPercentage     = 0,
    listingFeePercent = 0,
    listingFeeMethod  = 'bank',
    canBuyOwnListing  = false,
    paymentMethods      = { 'cash', 'bank' },
    sellerReceiveMethod = 'bank',
    confirmAboveAmount  = 5000,
}
```

| Option                        | Meaning                                                                              |
| ----------------------------- | ------------------------------------------------------------------------------------ |
| `maxActiveListings`           | How many open listings one player may have                                           |
| `listingDurationHours`        | Unsold items return to the seller after this. `0` = never expire.                    |
| `minPrice` / `maxPrice`       | Price **per unit**. Per-item limits in `Config.ItemPriceLimits` narrow this further. |
| `minQuantity` / `maxQuantity` | Units per listing                                                                    |
| `canBuyOwnListing`            | Off by default; leaving it off stops self-trading tricks                             |
| `paymentMethods`              | How buyers may pay. `Config.ItemPaymentOverrides` narrows it per item.               |
| `sellerReceiveMethod`         | `'cash'` or `'bank'` — where the payout lands                                        |
| `confirmAboveAmount`          | Ask for an extra confirmation above this total. `0` = off.                           |

When a listing expires, the remaining items go back to the seller — into the delivery depot if their inventory is full or they are offline.

## Sale tax

```lua
taxPercentage = 0,   -- % taken from the SELLER's payout
```

Buyers always pay exactly the listed price. The tax is deducted from what the seller receives, so the price a buyer sees is the price they pay. A 10% tax on a $1,000 sale means the buyer pays $1,000 and the seller receives $900.

## Listing fee

```lua
listingFeePercent = 0,       -- % of price × quantity
listingFeeMethod  = 'bank',
```

A non-refundable fee charged **when the listing is created**, calculated from the full asking value. It is not returned when the listing is cancelled or expires. Off by default (`0`).

A small listing fee (1–2%) discourages players from spamming the market with unrealistic prices, because listing something costs them money whether it sells or not.

## Buy order fee

`Config.BuyOrders.taxPercentage` (default `5`) is a non-refundable creation fee, a percentage of the order total. If the order expires unfilled, the escrowed order money is refunded but this fee is not. See [Offers & Buy Orders](/daddy-studios-docs/scripts/daddy-marketplace/configuration/offers.md).

## Featured fee

Players pay a fixed price to feature a listing or auction for a number of hours. See [Featured Listings](/daddy-studios-docs/scripts/daddy-marketplace/configuration/featured.md).

## Where the money goes

By default every fee simply leaves the economy. To move it somewhere, fill in the hook at the bottom of `config.lua`:

```lua
Config.OnFeeCollected = function(amount, feeType)
    exports['qb-banking']:AddMoney('government', amount, 'marketplace-' .. feeType)
end
```

| `feeType`     | Source                          |
| ------------- | ------------------------------- |
| `'sale'`      | Sale tax and listing fee        |
| `'buy_order'` | Buy order creation fee          |
| `'featured'`  | Featured purchases and renewals |

It runs on the server with a positive whole `amount`. Details on the [Config Hooks](/daddy-studios-docs/scripts/daddy-marketplace/hooks.md) page.

{% hint style="info" %}
Fees are one of the few real money sinks a player-driven market gives you. Routing them into a government or society account turns them into budget instead of deleting them, which may or may not be what your economy needs — deleting money fights inflation, keeping it does not.
{% endhint %}

## Next steps

* [Auctions](/daddy-studios-docs/scripts/daddy-marketplace/configuration/auctions.md)
* [Offers & Buy Orders](/daddy-studios-docs/scripts/daddy-marketplace/configuration/offers.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://daddy-studios.gitbook.io/daddy-studios-docs/scripts/daddy-marketplace/configuration/fees.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
