First-price vs second-price auctions
What the winner actually pays under each auction model, and how Epom applies first price, second price and fixed-floor pricing to DSP banners and PMP deals — including the floor checks that decide whether a bid wins at all.
When several bidders compete for one impression, the auction type decides what the winner actually pays. Two models dominate programmatic advertising, and Epom exposes both — plus a fixed-price variant — as concrete controls on DSP banners and PMP deals. This page explains the industry concept, then pins each model to the exact Epom toggle and to the precise price the ad server clears at.
The two models
First price. The highest bidder wins and pays their own bid. Simple and transparent, but it puts the pressure on the buyer to bid-shade (guess how low they can go and still win), because overbidding costs them the full difference.
Second price. The highest bidder wins but pays just above the second-highest bid, not their own. Classic Vickrey logic: a buyer can safely bid their true value because winning never costs more than one increment over the runner-up. Historically the open-web default; largely displaced by first price on SSP-to-DSP paths, but still used inside deals and single-exchange auctions.
The difference only matters when more than one bid competes. With a single bidder there is no runner-up to price against. Epom’s answer for that case is covered under What Epom clears at: a lone second-price bid clears at the bid floor plus one cent, not at its own bid.
What Epom clears at
Epom’s auction type has three values:
| Auction type | Winner pays | When it applies |
|---|---|---|
| First price | Their own bid, unchanged | Default for DSP banner auctions |
| Second price | Two or more DSPs still have a bid after the deal and scan filters: the runner-up bid + $0.01, capped at the winning bid. Only one DSP does: the bid floor + $0.01, capped at the bid | A DSP banner with Always 2nd price as +$0.01 that is the only candidate; several DSP banners competing with Force First Price Auction Type switched off; second-price PMP deals |
| Bid floor price | Exactly the deal floor, whatever they bid | Fixed-price PMP deals only |
The + $0.01 increment (ONE_CENT) is Epom’s clearing step for second price. It never lifts the
price above what the winner actually bid, so if the runner-up (or the floor) is within a cent of
the winning bid, the winner simply pays its own bid.
Floors decide whether a bid can win at all. After the winner is chosen and its second-price price worked out, the price is compared with the bid floor sent in the request (the deal floor when the bid belongs to a PMP deal). A price below it leaves the auction with no winner, and the pick falls back to your direct demand. See The bid floor for where the floor comes from.
Second price on DSP banners
On an OpenRTB (DSP) banner the auction type is not a free-text field. It is worked out for every DSP request from the banner’s Always 2nd price as +$0.01 checkbox, the partner’s Force First Price Auction Type parameter, and how many DSP banners compete in this auction:
- One DSP banner, Always 2nd price on → second price. The lone candidate has no runner-up to under-cut, so it clears at the bid floor plus one cent (capped at its bid) — the partner pays the floor rather than its full bid.
- One DSP banner, Always 2nd price off → first price. The winner pays its bid.
- Several DSP banners, Force First Price Auction Type on or not set → first price. This is the default: the parameter’s default is on, and an absent value counts as on.
- Several DSP banners, Force First Price Auction Type explicitly off → second price. The winner clears at the runner-up bid plus one cent, capped at its own bid.
Always 2nd price only matters when the banner is the sole candidate; with several candidates the Force First Price parameter decides. The parameter has to be ticked on the DSP partner’s Parameters card before a banner can set it (see DSP partners). The type applied is the one of the winning bid’s own banner.
Note: the clearing math runs on Epom’s side after bids come back — it does not change what the DSP is told to bid. The bid request still carries an
at(auction type) value so the partner knows the model, but the final win price is computed from the returned bids using the rules above.
First / second / fixed on PMP deals
A PMP deal attached to a campaign carries its own auction type, set per deal row in the deal’s Auction type field. This overrides the banner’s setting for any bid that references the deal — the deal terms are the contract, so the deal’s model wins:
| Deal auction type | What the buyer pays | Use it for |
|---|---|---|
| First price | Their bid (any bid at or above the deal floor is accepted) | Standard preferred deals |
| Second price | Second-highest bid + $0.01, but never below the deal floor + $0.01, and never above their bid. With only one DSP answering: the deal floor + $0.01, capped at the bid | Deals where the buyer negotiated second-price billing |
| Bid floor price | Exactly the deal floor, whatever they bid | Fixed-price deals — a homepage takeover at “$X CPM” |
The fixed-price (Bid floor) case is the sharpest: the moment a bid clears the deal-floor and seat checks, its price is overwritten with the deal floor. The buyer’s bid amount above the floor is irrelevant — everyone on that deal clears at the same negotiated CPM. The second-price deal case adds the deal floor as a lower bound: with two or more bids the win clears at the runner-up
- $0.01, but never drops below
deal floor + $0.01, protecting the negotiated minimum. A bid priced below the deal floor is dropped before the winner is chosen.
A valid deal bid also skips the open-auction floor — the deal floor replaces your placement/site bid floors and the site CPM threshold, in both directions (a deal priced below your open floor still clears; a generous open floor doesn’t protect you from a cheaply-priced deal). See PMP private deals for the seat-match and private-auction rules around this.
Where auctions sit in ad selection
The auction is step 8 of ad selection: it runs only if the selection pipeline already picked a programmatic banner. Everything before it — targeting, capping, limits, priority tiers — decides whether an auction even happens; the auction type decides only what the winner pays once it does. If no acceptable bid arrives, the programmatic banners are dropped and selection re-runs over your direct demand (the same priority tier first, then the tiers below), so a lost auction still fills with your own ads when possible.
Corner cases
Corner case: with a private auction on a deal-only campaign, non-deal (open-auction) bids are rejected — the auction runs only among bids that reference a valid deal, each priced by that deal’s auction type. See PMP private deals.
Corner case: a second-price discount needs a runner-up. With two or more answering DSPs the winner pays the runner-up plus a cent; with a single answering DSP the “runner-up” is your bid floor, so the partner pays the floor plus a cent however high it bid. On thin, single-partner inventory Always 2nd price therefore lowers the price to the floor — worth knowing before you tick it on a partner that bids well above it.
Corner case: the one-cent increment means the reported win price on a second-price auction is rarely a round number. A cleared price like
$2.34isrunner-up $2.33 + $0.01(orfloor $2.33 + $0.01), not the winner’s bid — reading it as the buyer’s bid overstates what they were willing to pay.
Related
- How ad selection works — where the auction sits in the pipeline
- OpenRTB (DSP) banners — the Always 2nd price control
- Manage PMP deals on a campaign — the deal Auction type field
- Sell premium inventory through PMP private deals
- Glossary