A Saved Quote Is Not a Frozen Price
When a guest says “hold this one for me”, what you keep is the stay, not that moment’s price.
Sellers can save a stay as a quote, reopen it days later and turn it into a payment link for the guest. Creating the link checks who owns the quote, whether it is still valid and whether it is for the same hotel; the amount never comes from the quote but from a fresh price check, and the quote is then marked converted.
In a chat, a guest likes a hotel but wants to ask the family first. The seller saves the stay as a quote: hotel, dates, rooms and guests, currency, valid for 7 days by default and up to 90. A few days later the guest writes back, “let’s book it”, and the seller needs to turn that quote into a link the guest can pay through.
The tempting mistake is to treat a quote as a price promise. Supplier prices move; if the payment link reused the stored amount, either the seller would absorb the difference or the guest would pay a price that no longer exists. Ownership is the other quiet question: a quote should become an order only in its owner’s hands, and only for the hotel it was made for.
Creating a payment link from a quote now checks three things first: the quote belongs to the person creating the link, it is active and unexpired, and it is for the same hotel. If any check fails, the request is refused. The amount is not read from the quote; it comes from a fresh price check at that moment, so the quote only proves where the order came from. Once the link exists, the quote is marked converted and records which payment it became. If that marking ever fails, the failure is recorded and the link stays.
Reopening a saved quote is lighter too. It can skip recalculating a whole month of calendar prices and return just the quote, with its status, validity and search conditions, before the seller checks today’s prices on the hotel page. Each row in the quote list now also carries the IDs of its hotels, not just a hotel count.