# How CS2 Skin Pricing Works: Float, Wear, and Markets

*2026-08-09 — hunbenji, AssetPay team*

Two AK-47 | Redlines are listed at the same moment. One is worth $40, the other $400. Nothing in the item's name tells you which is which — the difference lives in float values, pattern seeds and sticker history.

If your platform credits users for deposited skins, that gap is your problem. Undervalue and your users go somewhere else. Overvalue and you lose money on every deposit. Here's what actually drives the number, and why "just use the Steam price" doesn't hold up.

## Float: the number that splits identical skins

Every CS2 gun skin carries a **float value**, a number between 0 and 1 fixed when the item is created. It represents wear and it never changes. Float maps to five named tiers:

| Wear | Float range |
| --- | --- |
| Factory New (FN) | 0.00 – 0.07 |
| Minimal Wear (MW) | 0.07 – 0.15 |
| Field-Tested (FT) | 0.15 – 0.38 |
| Well-Worn (WW) | 0.38 – 0.45 |
| Battle-Scarred (BS) | 0.45 – 1.00 |

Two things stop this being a simple five-bucket system. The tier boundaries are cliffs: a 0.069 float is Factory New, 0.071 is Minimal Wear, they look near-identical, and they price tiers apart. And within a tier, the extremes carry premiums — collectors pay well over the normal range for a 0.0004 "pristine" example or a 0.999 near-max.

Each skin also has its own allowed float range, so some skins simply cannot exist in certain wears.

## Patterns: when the seed is worth more than the skin

Alongside float, every skin has a **pattern seed** that decides how the texture is placed on the weapon. For most skins it's cosmetic noise. For a few families it's most of the value:

- **Case Hardened** skins with heavy blue coverage, the "blue gems", trade at multiples of the base price. The most sought-after seeds reach collector-auction territory.
- **Doppler** knives split into phases and rare variants — Ruby, Sapphire, Black Pearl — with dramatically different values under one market name.
- **Fade** percentages grade continuously, and "full fade" takes the premium.

So a single market-hash-name can cover items an order of magnitude apart in value. A pricing engine keyed only on the item name will eventually credit $40 for a $4,000 pattern. It will also get selected against by users who know precisely which of their items your engine misprices, which is the more expensive failure of the two.

## Stickers, StatTrak and souvenirs

Three more layers sit on the same weapon. Applied stickers add anywhere from nothing to more than the gun is worth — the Katowice 2014 line is the canonical example, turning commodity skins into four-figure collectibles — and sticker value is its own market with its own condition dimension, scraped versus intact. StatTrak variants, which count kills, are supplied more scarcely and priced accordingly. Souvenir drops from tournament matches sit on a third price track entirely.

## Why there is no single "market price"

Skin prices come from markets, and the markets disagree.

[Steam Community Market](https://steamcommunity.com/market/) prices are denominated in Steam wallet funds, which can only be spent inside Steam, so they run structurally higher than cash. Credit Steam-listed prices for deposits and you will systematically overpay against real liquidity.

Third-party cash marketplaces — the CSFloat, Skinport and DMarket tier — reflect what items convert to in money, with their own fees, depth and regional skews. Chinese marketplaces are the deepest liquidity pool in the skin economy, and divergence between them and Western markets is normal rather than a data error.

Then there's the thin end of the market. For low-volume items, the "current price" might be three listings put up by the same person. Pricing that survives contact with those items needs volume-awareness and outlier rejection rather than a single last-sale read.

Watching all of those venues yourself means running half a dozen scrapers and API integrations that each break in their own way. This is the niche market-data aggregators grew into, and it's how we handle it: [cs2.sh](https://cs2.sh) rolls order books, buy orders, liquidity and realized-sales archives from Buff, YouPin, CSFloat, Skinport, Steam and others into one normalized USD feed, and our pricing service consumes that instead of maintaining venue plumbing. Whatever engine you build or buy, a fair first question is which markets its numbers can actually see.

Add the timers from [trade holds and locks](/blog/steam-trade-holds-what-merchants-need-to-know), because a trade-locked item isn't worth its tradable price, and "what is this skin worth?" turns into a genuinely hard engineering problem: multiple feeds, per-item attribute inspection, liquidity weighting and staleness handling, all evaluated at the moment of the trade.

## Rust: the economy without floats

Rust skins have no float, no wear, no patterns and no stickers. A Rust item of a given type is fungible. Pricing pressure comes from supply mechanics instead: items rotate through the [in-game item store](https://store.steampowered.com/itemstore/252490/) in limited windows, and out-of-rotation items appreciate on scarcity.

That's simpler per item. It's still a second economy with its own dynamics, which means supporting both games means running two pricing models rather than one model with a flag on it.

## What this means at deposit time

For a merchant platform, all of the above compresses into one requirement: **price at trade time, against real liquidity, per individual item.** Read each deposited item's float, pattern, stickers and lock status. Weight multiple markets by actual depth. Then verify that the trade which completes contains exactly the items you priced.

That's what [AssetPay's pricing engine](/about) runs under its checkout — eligibility, real-time price context, offer creation and receipt verification in one trace, with the result delivered to your backend as a [signed webhook](/docs).

We don't claim to price every edge case perfectly. Rare pattern tiers in particular are thin, sometimes auction-driven markets, and any engine that tells you it has them solved is describing an ambition.

## Frequently asked questions

### Why is the Steam Market price higher than what deposit sites credit?

Steam prices are in wallet funds that never leave Steam. Cash-market value is what a skin converts to in money, and it's lower. Honest deposit pricing tracks cash markets.

### Can users check a skin's float and pattern before depositing?

Yes. The data is public per item and inspect tools read it. Serious traders know their floats and seeds precisely, so your pricing needs to be at least as informed as your users are.

### Where does AssetPay's price data come from?

From the markets themselves, through [cs2.sh](https://cs2.sh)'s market-data API: live order books, buy orders, liquidity and realized-sales history across the major CS2 marketplaces in one normalized feed. The fair-value model on top is our own; the raw data is the whole market's.

### How volatile are skin prices?

Market-wide moves of several percent happen on game updates and platform-rule changes; the late-2025 CS2 trade-protection update repriced the whole market. Individual items swing harder on case retirements and shifts in what people actually play. That volatility is why price verification belongs at settlement rather than at page load.

---

Building on CS2 or Rust and want deposit pricing you don't have to maintain yourself? [Start with the docs](/docs), or [come ask the team](/contact).


---

Written by hunbenji — Writes AssetPay's engineering guides: Steam trade mechanics, API integration, and the settlement infrastructure behind skin payments.
