Lesson 106: Enforcing Reserve Price Before Declaring an Auction Winner

Introduction

A reserve price is one of the most important concepts in any professional auction platform. It protects sellers by ensuring that an asset is not sold below a minimum acceptable price.

During testing of the Flipnzee Auctions plugin, a critical business logic issue was identified. Although the plugin correctly determined the highest bidder when an auction closed, it declared that bidder as the winner even when the highest bid failed to meet the reserve price.

This lesson corrects that behavior and aligns the plugin with industry-standard auction platforms.


The Problem

Consider the following auction:

SettingValue
Start Price$10
Reserve Price$500
Highest Bid$150

Before this lesson, the plugin performed the following sequence:

Auction Closed
        │
        ▼
Highest Bid Found
        │
        ▼
Winner Declared
        │
        ▼
Transaction Created
        │
        ▼
Transfer Created

Although technically correct from a bidding perspective, this is incorrect from a business perspective because the seller never agreed to sell below the reserve price.


Why This Is a Serious Issue

Reserve prices exist to protect sellers.

Without reserve price enforcement:

  • Sellers may unintentionally sell valuable websites below their minimum acceptable price.
  • Buyers may assume ownership has been secured even though the seller expected otherwise.
  • Transactions and transfer records may be created for auctions that should have ended without a sale.

Professional auction marketplaces never ignore reserve prices.


Lesson Objectives

By the end of this lesson, the Flipnzee Auctions plugin will:

  • Validate the highest bid against the reserve price.
  • Prevent a winner from being declared if the reserve price has not been met.
  • Prevent transactions from being created.
  • Prevent transfer records from being created.
  • Prevent winner notifications.
  • Display an appropriate auction status on the frontend.
  • Record the event in the activity log.

Expected Auction Flow

Scenario 1 – Reserve Price Not Met

Auction Ends
        │
        ▼
Highest Bid Retrieved
        │
        ▼
Compare With Reserve Price
        │
        ▼
Reserve NOT Met
        │
        ▼
No Winner
        │
        ▼
No Transaction
        │
        ▼
No Transfer
        │
        ▼
Reserve Not Met Message

Scenario 2 – Reserve Price Met

Auction Ends
        │
        ▼
Highest Bid Retrieved
        │
        ▼
Compare With Reserve Price
        │
        ▼
Reserve Met
        │
        ▼
Winner Declared
        │
        ▼
Notifications
        │
        ▼
Transaction Created
        │
        ▼
Transfer Created

Files Expected to Change

The implementation will primarily involve:

includes/
    class-bid-manager.php

Additional updates may be required in:

admin/
    class-admin-posts.php
includes/
    class-shortcodes.php
includes/
    class-activity-log.php

New Business Rules

When an auction closes:

  1. Retrieve the highest bid.
  2. Retrieve the reserve price.
  3. Compare both values.
  4. If the reserve has not been met:
    • do not declare a winner
    • do not create a transaction
    • do not create a transfer
    • do not send notifications
    • log the event
  5. Otherwise continue with the normal auction completion workflow.

Frontend Improvements

Instead of displaying:

🏆 Auction Closed

Winning Bid: $150

the plugin should display something similar to:

⚠ Auction Closed

Reserve price was not met.

No winning bidder.

This provides clear feedback to both buyers and sellers.


Activity Logging

A new activity type will be introduced for reserve price failures.

Example:

auction_reserve_not_met

Example log message:

Auction #45 closed.

Highest bid: $150

Reserve price: $500

No winner declared.

This creates a useful audit trail for administrators.


Why This Matters

Almost every major auction platform enforces reserve prices before completing a sale.

Examples include:

  • Flippa
  • Empire Flippers
  • GoDaddy Auctions
  • eBay Auctions
  • Heritage Auctions

Adding this safeguard moves the Flipnzee Auctions plugin closer to production-grade marketplace behavior.


What You’ll Learn

In this lesson, you will learn how to:

  • Implement business rule validation.
  • Separate bidding logic from selling rules.
  • Prevent invalid transactions.
  • Improve auction integrity.
  • Build auction software that reflects real-world marketplace practices.

Conclusion

Lesson 106 introduces one of the most important safeguards in any auction platform: reserve price enforcement.

Rather than automatically declaring the highest bidder as the winner, the plugin will first verify that the seller’s reserve price has been satisfied. If it has not, the auction will end without a winner, ensuring that no notifications, transactions, or transfer records are created incorrectly.

This enhancement significantly improves the reliability and professionalism of the Flipnzee Auctions plugin, bringing its behavior in line with established online auction marketplaces while protecting both buyers and sellers.

Leave a Reply