Under Your shop, Sell more, Products, add what you sell at the desk: a name, the price, VAT if you charge it, and a stock count if you want one kept (leave it blank and nothing is counted). Take off sale hides a product from the sheet without touching old sales.
Then, on a booking in the diary, in a class, or on a customer's profile, press Sell. The sheet has today's booking ticked at what it owes, your products with a plus and minus each, and your passes with one tap. Pick how it was paid - cash, card, transfer or other - check the amount (change it for a round-down or a tip) and press the button, which names the total. That records one payment for the lot: the booking shows paid as it always did, the products come off the stock, the pass goes on the customer, and the activity log says what was sold. Takings count it all.
Pressed by mistake? Not paid after all on the booking undoes the whole sale. A card taken through Stripe cannot be undone that way; refund it instead.
In the FullDiary app it is the same: Products under Your shop, Sell more, and a Sell button on a booking, beside each person in a class and on a customer. That arrives with the app's next update.
On your booking page too: tick Offer it on the booking page on a product and customers see "Anything to collect when you come in?" at the checkout, with a plus beside each product. They pay for it with the booking, and the booking in your diary says "To collect: Massage oil x2" so you hand it over when they arrive. Nothing is posted. A receipt or an invoice from a sale is on its way.
