Skip to content

Buy

Buying is one transaction. You submit the seller's signed order together with payment, the contract validates everything, splits the payment, and transfers the token to you — all atomically. Either the whole thing happens or none of it does.

What happens in the transaction

   You call fulfillOrder(order, signature) with ETH attached

        ├─ 1. CHECK   collection allowed · order not expired
        │             nonce unused and not below the maker's floor
        │             signature really is the maker's
        │             maker still owns the token
        │             marketplace still approved to move it

        ├─ 2. CONSUME the nonce is marked used, before any money moves

        ├─ 3. PAY     royalty  ──► ERC-2981 receiver
        │             platform fee ──► fee recipient
        │             remainder ──► seller
        │             any overpayment ──► refunded to you

        └─ 4. TRANSFER the NFT moves from seller to you — LAST

That ordering is not incidental. The nonce is consumed before any external call, and the token transfers after payment has settled, so a re-entrant callback cannot buy the same order twice or take the token without paying.

One transaction, one outcome

There is no "payment pending" state and no window where you have paid but do not hold the token. If the transaction reverts, you keep your ETH — you pay only gas.

Paying

Listings are priced in native ETH. You send the price as the transaction's value; there is no token approval to grant and no wrapped asset involved.

Overpayment is refunded in the same transaction

The contract requires at least the price and refunds the excess to you before the transaction ends. You do not need to compute an exact amount to the wei, and you cannot lose the difference.

Underpayment reverts. Nothing is taken.

You also need enough ETH on top of the price to cover gas. Gas on this chain is cheap, but the price plus gas must both fit in your balance.

What you receive

Two things, and they are the same thing:

  • The ERC-721 token, transferred directly from the seller's wallet to yours.
  • The redemption right for the specific CS2 skin backing it.

There is no separate step to claim the skin and no registry to update. Whoever holds the token can withdraw the item — burn the token and a trade offer is sent to their saved Steam trade URL. The skin you can redeem is the exact physical asset the original depositor sent: same float, same paint seed, same stickers, same name tag.

Before buying based on stats, note that float, paint seed, and sticker data come from third-party lookups, can be absent, and are not on-chain. null means "not looked up", and paintSeed: 0 is a real seed. See Metadata and Risks & limitations.

Why a fill can fail

A listing is a signature, and the world moves between when it was signed and when you click. The contract re-checks everything at fill time, so a stale listing reverts rather than half-settling. The interface pre-checks the same conditions immediately before sending, so most of these surface as a message rather than a failed transaction — but a fill can still lose a race.

ReasonWhat happened
ExpiredThe order's expiry timestamp has passed.
Already soldSomeone filled it first; the nonce is consumed.
CancelledThe seller cancelled that nonce, or raised their minimum nonce past it.
Seller no longer owns itThey transferred, sold elsewhere, or burned the token. The order is dead.
Approval revokedThe seller revoked the marketplace's operator approval, so the transfer cannot execute.
UnderpaymentLess than the price was attached.
Marketplace pausedTrading is administratively paused. See Admin & upgrades.

None of these can take your money. Every one of them reverts the whole transaction before payment settles; your only cost is gas.

A listing disappearing is normal

Sellers cancel, transfer, and let orders expire constantly, and several of those require no transaction at all — so a listing can become unfillable with no on-chain trace until someone tries. If a listing vanishes between page load and click, that is the system working.

Buying your own listing

Blocked on chain

Filling your own order reverts with SelfPurchase, so you cannot do it by accident.

It used to succeed, and was strictly bad for whoever tried: the sale price came back to you, but the royalty and platform fee did not, so you finished with the same token and less ETH. That also made it a fixed-cost way to fake trading volume, which is the real reason it is now rejected.

Verifying a purchase

Everything about the sale is public on-chain:

  • The OrderFulfilled event names the order hash, maker, taker, collection, token id, currency, price, royalty amount, and platform fee.
  • The ERC-721 Transfer event records the token moving to you.
  • ownerOf(tokenId) on LootSkins confirms you hold it.

Addresses: Deployments. Event shapes: Events & indexing.

Next

LootFi is not affiliated with, endorsed by, or sponsored by Valve Corporation. Counter-Strike and Steam are trademarks of Valve Corporation.