What methods are generally employed to handle checkout processes that involve unique items?--Selling paintings, for example. Some pitfalls maybe:

  1. A buyer purchases an item before a slower buyer is able to complete the checkout process.
  2. A buyer attempts to purchase an item that has already been purchased.

I thought of a couple of approaches.

Do away with the shopping cart and reserve items

Buyers would purchase items individually without adding them to a shopping cart. When a buyer visits the checkout page, the item is reserved. If we navigates away, the item is released.


  1. Minimises race conditions because buyers must decide whether to buy, and consequently items do not spend any time in a cart.


  1. It requires separate checkout process for each purchase.
  2. If payment method is handled on an external site (PayPal) there's a risk that buyers will not navigate back to the site and buy more items.
  3. Requires extra logic for reserving/releasing items.

Using a Cart

Allow users to add items to their cart. Upon checkout, verify inventory.


  1. Allows buyers to purchase multiple items in a single checkout.


  1. A bigger chance to have race conditions where the cart becomes stale as some of its contents get purchased by other buyers.

  2. Requires an elegant way of notifying the buyer that some of the items in the cart are no longer available.

  3. Opportunity to reserve items is minimal since time spent before checkout varies from buyer to buyer. Also, putting an expiration on a shopping cart could pressure and put off buyers.

Are there other ways to handle this type of situation? Can you see further advantages pitfalls in either approach?

  • 1
    Approach it the way ticketing systems for concerts and the like do: item is reserved for half an hour. If the purchase process isn't completed in that time, the reservation expires. Jul 10, 2013 at 19:19

2 Answers 2


There are several other variants. Using a traditional shopping cart and simply reserving the item as soon as the user puts it in the cart seems to be a common approach. It then becomes invisible to other users. Because of this, the shopping cart often expires quickly, releasing the item if the purchase is not completed in time.

I also know a site that allows its users to “save” the shopping cart and checks availability upon reloading it. The site then shows a list of all items that are not available anymore and suggests alternatives. There is therefore a distinction between an “active” shopping cart (item is reserved but only for a limited time) and a “saved” shopping cart (contains a reference to the item but does not guarantee its availability, the cart/list does not expire).

Amazon uses a variant of this idea for its “Marketplace” products (e.g. used books from third parties): The item is added to the shopping cart as every other item but it is not reserved in any way and as soon as it becomes unavailable, its spot in the cart/wish list is replaced by an entry that reads “This product is not available from this vendor anymore”.

I would expect that in most cases, race conditions would be rare. If having many customers interested in the same painting is in fact frequent, then it might make sense to rethink the whole business model. Maybe an auction would be more appropriate than a traditional retail approach. A reverse auction or some other way to emphasize the limited availability of the offer and the first-come-first-served factor could also work.


what about an auction format ?

ebay have been doing this for years of course, but if you think about it a lot of their transactions are unique items (even if the item itself is one of many, the transaction is for a 'unique' item because of the nature of the sellers)

with an auction format you would get the advantages from both sides above:

  1. The customers would decide when to buy as soon as they placed a bid. They would enter a contract at this point to buy if they won. Several buyers could all decide to buy, but they would be clear where they stood throughout.
  2. The customers would also be able to checkout out in one go. They could bid for several items and then finish the transaction in one process when all the auctions had finished.

The only problem with this solution would be extra logic, but it looks like both your proposed solutions have that problem already (notifications, inventory etc). As soon as you get away from straight forward selling of widgets you require extra logic.

You would also have to think about reserve prices and starting bids to ensure a good price for your items.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.