Send a customer an offer
Send one customer an offer to accept on your website: a custom price, a deposit, a hold on their card, their card saved until you approve, an invoice, or pay in person. Nothing is charged until they accept.
Ask the assistant: "Send Maya an offer for the wedding cake at $450, deposit now." You see exactly what she’ll see, and it’s emailed once you OK it.
Pick how they pay. Card now (or a deposit now and the rest at pickup). A hold on their card, charged on the day, if the day is within 7 days; further out, save their card now and charge it on the day instead. Save their card now and charge it when you approve, by a deadline you set. An invoice due in so many days. Or in person.
An offer stays open up to 30 days. If your price changes before they accept, they see the new one and agree again.
Things priced by quote show customers an Ask for a quote form. Their requests land on Products, under Quote requests, where you answer with your price and send it as an offer.
For agents
Write it with commerce.draftOffer (customerId, lines with quotedMinor for a price by quote, collect: card, authorize with eventAt, save_then_charge with approveWithinDays, invoice with netDays, or in_person; requestId when it answers commerce.quoteRequests), then send with commerce.sendOffer (it emails the customer, so it waits for the owner’s confirmation). commerce.withdrawOffer takes it back, and commerce.declineRequest turns down a request. The customer reads the offer as commerce.offer. Load the commerce.firstOffer skill for the whole flow.