Every wedding vendor I have talked to has the same story. Somewhere around booking number twenty, a client cancels six weeks out, asks for the deposit back, and the vendor realises the "contract" was a WhatsApp message that said "ok booked!". The second-most-common story is the quote that got sent as a photo of a notes app, with one line item missing, and the argument that followed on the wedding day.

Both problems have the same fix: a quote and a contract that come from the same numbers. Here is the structure I use, with the spreadsheet logic that keeps the two in sync.

Start with one settings sheet

The mistake most vendors make is writing percentages in three places: the quote says "30% deposit", the contract says "40% second payment", and the payment reminder you send says something else. Put every rule in one place and let everything reference it:

Setting Example
Deposit (retainer) 30%
Second payment 40%, due 30 days before
Final balance = 100% − deposit − second
Quote validity 14 days
Reschedule fee 10% of contract
Late fee 0.1% per day, capped at 5%

The final-balance cell is a formula, not a number, so it can never fail to add up. A one-line check next to it (=IF(ROUND(dep+second+final,4)=1,"OK","CHECK")) catches the day you change the deposit and forget the rest.

The quote: codes, not retyping

A pricelist with a short code per item (PKG-03, ADD-06) means the quote sheet needs only two inputs per line: code and quantity. Name, unit and price come from a lookup:

=IFERROR(INDEX(Pricelist!$C$5:$C$64, MATCH(A13, Pricelist!$A$5:$A$64, 0)), "CODE NOT FOUND") 

INDEX/MATCH rather than XLOOKUP because clients open your PDF, but you might open the sheet in Google Sheets, LibreOffice or an older Excel, and all of them evaluate this one. A COUNTIF on the code column flags duplicates before they bite.

The totals block then reads Subtotal → Discount → Tax (only if a Yes/No setting says you collect it) → Total → Deposit to book → Remaining balance. The deposit line is =ROUND(Total * Setup!Deposit, 2) — the same cell the contract will quote.

Due dates from the event date

Payment schedules fail because due dates are typed by hand. Compute them:

Second payment due = EventDate − Setup!DaysBeforeSecond Final balance due = EventDate − Setup!DaysBeforeFinal Status = IF(paid >= due_amount, "PAID", IF(TODAY() > due_date, "OVERDUE", IF(paid > 0, "PARTIAL", "DUE"))) 

Add a late-fee estimate that is capped (MIN(overdue × rate × days, overdue × 5%)). A fee without a cap looks predatory in a dispute; a capped one is the number a mediator will accept.

The 11 clauses the contract needs

The clause list that has held up for the vendors I have worked with, in order:

  1. Scope — the exact line items from the quote, by code, and a sentence saying anything not listed is not included.
  2. Date, venue, timeline — plus a deadline for the client's final run of show. This is the clause that saves you when "we moved the first dance" becomes "you missed the first dance".
  3. Fees and payment — the instalment table, the account, who pays transfer fees, and that the date is not reserved until the deposit lands.
  4. Cancellation and rescheduling — deposit non-refundable, one reschedule for a fee, new date within 12 months.
  5. Force majeure — obligations suspended, new date without a reschedule fee, sunk costs not refunded.
  6. Deliverables, delivery, revisions — counts, formats, turnaround in business days, number of revision rounds, and a deadline for the client to pick album photos.
  7. Copyright and portfolio use — copyright stays with you, client gets a personal-use licence, an explicit opt-out for social posting.
  8. Obligations of each side — crew meals, vendor passes, travel for destination events, your right to substitute crew.
  9. Liability cap — total liability limited to what was paid. Standard in creative services.
  10. Dispute resolution and governing law — negotiation first, then your local courts or mediation.
  11. General — amendments in writing (email counts), e-signatures valid, exhibits listed.

Then a one-page delivery and acceptance record. The signature on it starts the revision clock, which closes the "I only just looked at the gallery" conversation nine months later.

One habit that matters more than the template

Walk the client through the checklist before sending the contract. Twenty clauses, two minutes on a call or a voice note. Clients sign faster when nothing in the document surprises them, and the vendors who do this report almost no disputes — not because the contract is tougher, but because expectations were set when everyone was still happy.

If you would rather not build this yourself, I packaged the workbook (7 sheets, 450+ formulas, zero macros) and the 11-section agreement as the Wedding Vendor Contract & Quotation Pack 2026 — English edition ($14, Excel + Word, works in Google Sheets/Docs). There is also an Indonesian-language edition with local tax and stamp-duty wording.