Offers and requests are the source of truth
A custom offer is not a product and not an order. Offers and requests are their own records (custom post types wco_offer and wco_request). A WooCommerce order is created only when the customer accepts and checks out, and exists purely for payment and fulfillment.
Offers are snapshotted at send time
When a seller sends an offer, the associated product’s details (name, image, price) and the store’s fee configuration are frozen onto the offer. Editing or even deleting the product later never changes a sent offer; checkout falls back to a hidden placeholder product carrying the snapshotted details. The same applies to admin fee settings: changing fees affects future offers only.
Checkout is 100% native WooCommerce
Accepting an offer places a priced line item into the WooCommerce cart and sends the customer to the standard checkout (or cart, which is configurable). Shipping, taxes, coupons, and every payment gateway work untouched. Both the classic checkout and the Checkout Block are supported. The offer is checked out in its own isolated cart, so it can’t be mixed with unrelated cart items; the customer’s previous cart is restored afterwards.
Statuses synchronize automatically and safely
Order events drive the offer status one-directionally (paid order → Purchased offer, cancelled order → cancelled offer), with guards that make status loops and illegal jumps impossible. See Statuses & Lifecycle.
