What is a floor price in programmatic, and how do deal floors work?
Part of Curated deals and PMPs

The short answer
A floor price is the lowest CPM a seller will accept for an impression. In OpenRTB it travels as bidfloor, with its currency in bidfloorcur. An auction floor applies to everyone bidding on the impression; a deal floor applies only to bids on one deal ID, and a deal marked at 3 turns the floor into the fixed agreed price.
Key takeaways
- A floor is a minimum, not a price: in a first price auction the buyer pays its own bid, which only has to clear the floor.
- A deal floor sits in the Deal object and replaces the impression floor for bids on that deal ID.
- A deal floor's currency does not inherit from the impression, so a CAD floor must say CAD or it is read as USD.
- Video and audio deals can carry floors by ad duration, so a 30 second spot and a 15 second spot can need different bids.
- A deal that receives requests but does not win may be bidding under the floor once fees are taken out.
What does a floor price mean in a programmatic auction?
Definition
- Floor price (bid floor, reserve price)
- The minimum CPM a seller will accept for an impression. Bids below it are not eligible to win, whatever else the auction does.
The OpenRTB 2.6 specification (opens in a new tab) gives the floor two fields on each impression: bidfloor, described as the minimum bid for the impression expressed in CPM with a default of 0, and bidfloorcur, the ISO 4217 currency code with a default of USD. A floor of 0 means the seller has signaled no minimum in the request, though the exchange or the publisher's ad server can still apply rules of its own that the buyer never sees.
The floor is not what the buyer pays. In a first price auction the winner pays its own bid. In a second price auction, which OpenRTB calls Second Price Plus and still lists as the default value of the request's at field, the winner pays just above the second highest bid, and the floor stands in for that bid when only one buyer bids. Google's unified first price auction best practices (opens in a new tab) for Ad Manager puts it plainly: in a first price auction buyers pay what they bid, so floors no longer close the gap between the highest and second bid.
What is the difference between a hard floor and a soft floor?
Hard floor and soft floor are market terms, not OpenRTB fields: the specification defines one bidfloor per impression and one per deal, with no soft floor field. A hard floor is an absolute minimum, and any bid under it is rejected. A soft floor was a second, higher threshold used in second price auctions. A winning bid above the soft floor paid the usual second price, while a winning bid between the hard and the soft floor paid its own bid, so the seller captured more on thin auctions without turning bids away.
Soft floors only mean something when the winner would otherwise pay less than it bid. In a first price auction every winner already pays its own bid, so the soft threshold has nothing left to do. A buyer who hears the term in a negotiation should ask which auction type the deal runs under.
| Floor type | What it does | Where the buyer sees it | What to ask the seller |
|---|---|---|---|
| Hard floor | Rejects every bid below the stated CPM | bidfloor on the impression or the deal | Is the request floor the final minimum, or do ad server rules add to it? |
| Soft floor | In second price auctions, made winners between the hard and soft floor pay their own bid | Not an OpenRTB field; known only from the seller | Which auction type does the deal run under? |
| Target CPM floor | Floors vary request by request while the seller aims at an average | A changing bidfloor across requests | Is the floor fixed, or does it move to match bids? |
| Deal floor | Sets the minimum for bids on one deal ID only | bidfloor inside the Deal object | Is the deal floor in the currency of the line item? |
| Fixed deal price | The floor is the agreed price, not a starting point | Deal object with at set to 3 | Is the buying platform set to a fixed rate type? |
| Duration floor | Sets different minimums by video or audio ad length | durfloors or mincpmpersec | Which creative lengths will run on the deal? |
How is a deal floor passed in the bid request?
A deal floor travels inside the Deal object, under the Pmp object of the impression. OpenRTB 2.6 gives each Deal its own bidfloor and bidfloorcur, plus an optional at that overrides the request's auction type for that deal: 1 for first price, 2 for Second Price Plus and 3 when the value in bidfloor is the agreed deal price. The specification's own sample request shows one impression with an open floor of 0.03 and two deals on it, one at 2.5 in first price and one at 2.0 in second price, each locked to a different buyer seat.
Section 7.11 of the OpenRTB implementation guide (opens in a new tab) sets the order buyers should read floors in. A buyer bidding with a deal ID should use the floor guidance in that Deal object. If the deal carries none, or the buyer is bidding in the open market, it should use the floor in the Video or Audio object, and failing that, or for banner and native, the floor on the impression. The same guide says a seller should give a deal only one form of floor guidance: bidfloor, mincpmpersec or durfloors.
Read a deal floor in this order
- Find the Deal object for your deal ID. Its bidfloor applies to your bid on that deal, whatever the impression floor says.
- Read the deal's currency on its own. The specification says Deal.bidfloorcur does not inherit from the impression's currency; it is stated or it defaults to USD.
- Check the deal's at value. A 3 means the floor is the price you agreed, so a bid under it is not a valid deal bid.
- Look for duration floors on video and audio. durfloors sets a floor per creative length range, and mincpmpersec sets a minimum per second of ad time.
- Fall back only when the deal is silent. Without deal guidance, use the Video or Audio floor, then the impression floor.
Duration floors change the bid by creative. The specification's own DurFloors illustration prices 1 to 15 seconds at a floor of 5, 16 to 30 seconds at 10 and more than 31 seconds at 20, and warns that ranges may overlap, in which case buyer and seller agree which floor applies.
When should a deal use a fixed price instead of an auction floor?
A fixed price deal uses the floor as the price itself. In OpenRTB that is a Deal object with at set to 3, and in IAB Tech Lab's Deals API (opens in a new tab) it is a pricetype of 3, Fixed Price. The Deals API says the dealfloor is a minimum bid for the deal and, unless the price type is fixed, should be used as guidance to buyers. It also notes that deals curated around data points can carry varying price points from request to request, so suppliers may offer bid guidance in place of a single floor.
| Question | Fixed price (at 3) | Auction floor (at 1 or 2) |
|---|---|---|
| What the buyer pays | The agreed CPM on every won impression | Its own bid in first price, or the second price plus an increment |
| Price certainty | High: the CPM is known before launch | Lower: the clearing price moves with competition |
| Chance to buy cheaper | None below the agreed price | Yes, when competition is thin and the floor is low |
| Competition on the deal | One buyer or a few, as in a preferred deal | Invited buyers bid against each other |
| Main risk | Paying the agreed price on impressions worth less | Losing impressions to higher bids or other deals |
| Fits when | Known publishers, budget plans set in a fixed CPM | Price discovery across several publishers or a curated package |
The choice follows the plan. A fixed price suits a buyer who must hold a planned CPM across a flight, or who has negotiated first access to one publisher's sections, as in a preferred deal. An auction floor suits a package of many sites where the right price is not known yet. When volume must also be promised, the deal is programmatic guaranteed. This page gives no view on what a floor should be; that is a commercial term between buyer and seller.
Why can a high floor stop a deal from spending?
A floor set above what buyers will pay removes the deal from the auction without any error message. Google's best practices guide warns sellers that setting floors too high can result in lost revenue when bidders drop out of the auction. For the buyer the same thing looks like a deal that receives bid requests and records bids but wins few impressions.
Display & Video 360's deal troubleshooting page (opens in a new tab) groups these losses under bid too low, with reasons that include bid was below auction floor and bid was below deal floor. It defines below the minimum bid as a bid below the floor of the deal, or the exchange or publisher floor in open auction. When that reason dominates, the fix is on one side or the other: the buyer raises the bid, or the seller lowers the floor.
When a deal loses on price, check these first
- The bid that leaves the buying platform, after its fees and margins, is above the deal floor.
- The deal floor and the line item are in the same currency, or the conversion is understood on both sides.
- A fixed price deal is set up with a fixed rate type, so the platform does not bid under the agreed price.
- Video creatives are the lengths the duration floors expect, and the bid matches the floor for that length.
- The seller has confirmed whether ad server pricing rules apply to the deal on top of the deal floor.
- Win notices are read for the minimum price to win, which tells the buyer how far off the bid was.
The last check uses OpenRTB's ${AUCTION_MIN_TO_WIN} macro, which returns the price needed to tie the winning bid when a bid loses, and the price needed to tie the next bid, or the floor if there was only one, when it wins. Exchanges may send it empty, so ask whether yours fills it.
What does a floor problem look like on a real deal?
Fictional example
A CAD video deal for a running shoe retailer in Ontario
A fictional specialty running shoe retailer with stores in Toronto, Ottawa and Hamilton wants online video beside training plans, race calendars and shoe reviews, in English, during the spring race season. A sports publisher group offers a private auction deal on its running and fitness sections, with the floor agreed in Canadian dollars.
In the first days the trader sees requests and bids but very few wins. The seller's bid request shows the deal floor without a bidfloorcur value, so the buying platform reads the floor as USD, which is higher than the CAD amount agreed. The deal also carries duration floors, and the retailer's 30 second spot falls in a range with a higher floor than the 15 second cut the line item was priced for.
The seller adds CAD to the deal's currency field, and the trader prices the 30 second line item to the floor for that length. Nothing else in the deal changes.
What should a deal request include besides the floor?
Price is one term of a deal. The seller or curator who builds it also needs the sites, geography, languages and formats, and the buyer needs to know which exchange can actually sell each site before asking for a floor there. The curated deals and PMP guide walks through the full list to deal sequence; the panel below covers the inventory side.
Frequently asked questions
Is a floor price the same as the price a buyer pays?
No. The floor is only the minimum a bid must reach. In a first price auction the buyer pays its own bid, which can sit well above the floor. In a second price auction it pays just above the next highest bid. Only in a fixed price deal, marked at 3 in OpenRTB, is the floor also the price paid.
Can a publisher set different floors for different buyers?
Yes. A deal is one way to do it: each deal ID carries its own floor and can be limited to named buyer seats. The OpenRTB implementation guide recommends a deal ID for any situation where a preferential floor may be assigned to a seat. Ad server pricing rules can also set floors for particular advertisers or buyers.
Do ad server pricing rules apply to deals?
It depends on the deal and the ad server. Google's Ad Manager pricing rules page says the rules do not apply to Programmatic Direct campaigns, which include Programmatic Guaranteed and Preferred Deal line items. Private auctions are covered by the rules, but a deal level setting can let a private auction deal skip them.
Does a floor of zero mean the impression is cheap?
No. A bidfloor of 0 is simply the default value in OpenRTB and means no minimum was sent in the request. The exchange or the publisher can still apply rules that are not shown to the buyer, and competition sets the clearing price. Read zero as no stated floor, not as no value.
Sources
- OpenRTB 2.6 specification (opens in a new tab)IAB Tech Lab, OpenRTB repository
- OpenRTB 2.x implementation guide, section 7.11 Guidance on the Use of Floors (opens in a new tab)IAB Tech Lab, OpenRTB repository
- Deals API 1.0 specification (opens in a new tab)IAB Tech Lab, deal-api repository
- Pricing rules (opens in a new tab)Google Ad Manager Help
- Unified first price auction: best practices (version 2.0) (opens in a new tab)Google
- Troubleshoot your deals and line items (opens in a new tab)Display & Video 360 Help
Researched and written by PlacementGraph Research. Read how we research, source and update these pages. Corrections: diana@placementgraph.com.