🔒 Money & Payments

Immutable Quote Versions

The price a customer saw at checkout is the price on record. Always.

Shipped December 17, 2025

✦ Key takeaways

  • Every quote is a write-once record. Freebo never mutates a quote that has been shown to or accepted by a customer.
  • When you raise prices on a product, existing reservations are unaffected — they still point to the quote version that was in force at booking time.
  • The immutable version chain gives you a complete audit trail: you can reconstruct exactly what any customer was charged and why, at any point in time.

Booking software that lets you edit pricing in place is a liability. Change a price, and what’s on the invoice might no longer match what the customer’s credit card statement says. Disputes become hard to defend. Refund math breaks. Accounting has to reconcile by hand.

Freebo solved this with immutable quote versions. A quote version is a snapshot: it captures the base price, every line item, tax rate, fee rate, promo discount, and grand total at a specific moment. Once created, it is never changed.

When you update a product’s pricing, Freebo creates a new quote version. New reservations pick up the new version. Existing reservations keep their original version. The price a customer agreed to is the price that lives on their reservation — permanently.

  1. Customer initiates checkout

    Freebo calculates a quote against the current pricing configuration. The quote version is created and its ID is returned to the checkout session.

  2. Payment is captured

    The payment intent is created for the grand total in the quote version. The dollar amount on the Stripe PaymentIntent matches the quote exactly.

  3. Reservation is created

    The reservation record stores the active quote version ID. This link is permanent — the reservation always knows exactly what it was priced against.

  4. Pricing changes later

    When you raise your rates, a new quote version is created for the product. Future bookings use the new version. Past reservations are unchanged.

What happens when I apply a partial refund — does it create a new quote version?
Refunds and quote deltas (modifications) create ledger events that reference the original quote version. The quote version itself is never rewritten — only the outstanding balance changes, tracked in the ledger.
Can I see the full pricing history for a product?
Yes. The quote version table gives you a chronological history of every pricing state your product has been in, with timestamps. You can see exactly when rates changed and what they changed to.