Auctions
Time-boxed bidding with a clear winner and a buy-out finalization step. Built on top of the basic listing flow.
Auction lifecycle
┌─────────┐ ┌────────┐ ┌─────────┐
create │ waiting │──────▶│ active │──────▶│ ended │ ──▶ winner buys out
└─────────┘ └────────┘ └─────────┘
▲ │
│ │
(no bids, (winner inactive
can remove) 48h auto-cleanup)
- waiting —
now < auction_starts_at. Visible in the market butSubmit bidis disabled. - active — bids accepted; current price = highest bid.
- ended —
now > auction_ends_at. No more bids. Only the highest bidder sees Buy out.
Bidding rules
A bid is accepted if all of these hold:
- Listing exists and is of type
auction. - Auction has not ended (
auction_ends_at > NOW()). amount >= price(the seller's reserve).amount > currentMax(must outbid the leader).- Bidder has at least
amountin their bank.
What auctions cost
- No fee to bid — submitting an offer is free.
- Listing fees still apply to the seller, same as buy-now. See Exchange.
- Commission is taken from the final sale price the same way as buy-now.
After the auction ends
The seller has nothing to do. The winner sees a Buy out button next to the listing:
- Winner clicks Buy out.
- Server validates: are they the highest bidder? does the auction actually end?
- Money moves: winner → seller (minus commission) → zone owner (if any).
- Vehicle is transferred to the winner's garage; listing is deleted.
Cancellation
You can cancel an auction:
- If
status == 'waiting'(no bids yet)
You cannot cancel:
- Once
active(any bid placed locks the auction) - Once
ended(winner gets first dibs)
UI events
The frontend listens to koja_carmarket:client:auctionUpdated:
{ listingId: number, event: 'started' | 'ended' | 'bid_placed' }
started— fires the minuteauction_starts_atis crossedbid_placed— fires on every accepted bid (broadcast to all clients)ended— fires when the auction is over (either by time or by buy-out)
The market view auto-refreshes on these events so bidders see live data without polling.
Related pages
- Exchange Zones — A player can own an entire zone and run it like a small business: set listing fees, take commission on every sale, cap how many listings can run concurrently.
- Overview — What players can actually do with Koja-Carmarket, from their POV.
- Parking Slots — Before a player can list a car, they need at least one parking slot in the zone they want to list in.
- Listings — The simplest flow: a player lists a vehicle from their garage at a fixed price; another player walks up to the market zone, opens the tablet, and buys it.
- Test Drives — Let a buyer try the vehicle before they commit.
- Features — back to the section overview