Free Quote Generator

A priced quote with a validity date — the same clean document as an invoice, but asking for a decision rather than for money. Download it as a PDF, then reissue it as an invoice when the work is agreed.

See every design with previews on the templates page.

Line items

Add a line item to see the totals.

Remember stores your business profile only in this browser. Reset clears the current draft but does not erase that saved profile; Forget removes the saved profile.

Everything is computed and drawn in this browser. Your clients, prices, notes and logo are never uploaded, stored, or seen by us — there is no server to send them to.

A quote does not demand money

That sounds obvious and is easy to get wrong: paste your invoice template, change the heading, and the bottom line still reads "balance due" — which asks a client to pay for work they have not agreed to yet. This tool sets the bottom line from the document type. The heading follows the type too — QUOTE — the last line reads "Quote total" on every template, and the paid and payment-method fields are left off entirely, because neither exists yet. The arithmetic above that line is the same engine the invoice generator uses, and every computed amount on this page was produced by it when the page was built, so the prose cannot drift from the tool.

Guide: Receipts, quotes, and the bottom-line label builds the same invoice, receipt and quote side by side and explains why the last line is the one that changes between them. The rest of the guides are collected at /guides/.

A worked quote, line by line

Take a fictional garden quote from Hollow Lane Gardens to M. Okafor, dated 1 October 2026 and valid until 31 October 2026, with three lines: site clearance at 1 × $450.00, turf supplied and laid at 36.5 × $12.75, and border plants at 14 × $8.99. The engine computes each line as quantity × unit price and rounds it to a cent immediately: $450.00, $465.38 and $125.86. The turf line is the one to look at. The exact product of 36.5 and 12.75 ends in half a cent, and the engine rounds half away from zero, so the printed line is $465.38 rather than a figure that cannot be printed. The subtotal is the sum of those three rounded lines, $1,041.24, and because nothing else is set — no discount, no tax, no shipping — the bottom line is the same figure: Quote total $1,041.24.

The number field was left blank, so the document is numbered QTE-20261001: the prefix QTE- and the quote date, with no counter, because the tool stores nothing between sessions and cannot know what you issued last week. The second date prints as "Valid until 31 October 2026", written out in words so that a reader who expects month-first and one who expects day-first see the same day.

Why the bottom line says "Quote total"

Three documents share this form, and the engine names the last line differently for each: "Balance due" on an invoice, "Amount paid" on a receipt, "Quote total" on a quote. The reason is written into the engine itself: a receipt that says "Balance due" invites a second payment, and a quote that says "Balance due" reads as a demand for money that is not owed yet. That last line is not something you edit; it follows from which generator you opened, and every template prints it.

The quote form has no Already paid field, and the engine discards one if it arrives. A fictional deck-repair quote from R. Castellano Carpentry to the Pembertons, one line at 1 × $1,800.00, handed to the engine with an amount paid of 500.00 anyway, reports an amount paid of $0.00 and a quote total of $1,800.00. The identical input built as an invoice reports an amount paid of $500.00, can print the total and the amount paid as rows of their own, and ends with "Balance due" $1,300.00. Same line, same engine, different claim about money — which is what the bottom-line guide is about. When the work is agreed, reissue the same lines in the invoice generator and reference the quote number in the notes; nothing carries a document from one generator to the other, because nothing is stored.

Discount comes off before tax

The order of operations is subtotal → discount → taxable base → tax → shipping → total. The discount comes off before tax because tax is owed on what was actually charged. A fictional website quote from a design studio: visual design at 1 × $2,400.00, development at 32 hours × $85.00; subtotal $5,120.00. A 10% discount takes off $512.00, leaving a taxable base of $4,608.00. Tax added on top at 8.875% is computed on that base, $408.96, and the quote total is $5,016.96. Worked the other way round — tax on the undiscounted subtotal — the tax line would read $454.40, which is $45.44 of tax on money the client was never asked for. The rate is yours: the tool applies the percentage you type, with up to four decimal places, and does not look up whether the sale is taxable or at what rate.

Prices that already include tax

Set tax to "already included" and the engine treats your unit prices as gross: the tax is found inside them by dividing by 1 + the rate, and the total does not change. A fictional catering quote from Birch and Thyme Catering to a school parents' association, priced in pounds with 20% VAT included: buffet at 40 × £18.50, delivery and setup at 1 × £60.00; subtotal £800.00. The engine divides that by 1.2 to find the net, £666.67, and reports the difference as the tax: £133.33. The quote total stays £800.00, because the tax is already inside the lines and adding it again would charge it twice.

The common misreading is to take 20% of the gross. On the same lines that gives £160.00 — the figure the engine produces when the mode is set to "added on top" — and it overstates the tax by a fifth, because 20% of a tax-inclusive price is tax on the tax. If you typed gross prices and left the mode on "added on top", that is exactly what the document would show, with every individual figure looking plausible. The sales tax vs. VAT guide covers which shape of tax is which; this page only covers what the engine does with the mode you select.

Shipping is added after tax

Shipping is added after tax, which is a simplification: some jurisdictions tax freight, and this tool does not model that. A fictional furniture quote: an oak dining table at 1 × $1,250.00, dining chairs at 6 × $145.00; subtotal $2,120.00. Tax added on top at 7% is $148.40, computed on the $2,120.00 of goods only; shipping of $95.00 is then added, and the quote total is $2,363.40. If freight is taxable where you trade, add it as a line item instead so it falls inside the taxable base: the same quote with delivery entered as a line at 1 × 95.00 has a subtotal of $2,215.00, tax of $155.05, and a total of $2,370.05 — $6.65 more tax. Which of the two applies to you is not something the engine decides.

Rounding: once, at the line, half away from zero

Every amount is held as an integer number of cents. Binary floating point cannot represent most decimal fractions exactly — 0.1 + 0.2 evaluates to 0.30000000000000004 — and down a long column those fractions accumulate into a subtotal that disagrees with the lines above it. Integer cents make the addition exact.

Each line is rounded to a cent immediately, and the subtotal is the sum of the rounded lines. Keeping full precision and rounding only at the end would be marginally more accurate and visibly wrong, because the printed lines would not add up to the printed subtotal, and a quote is read by someone with a calculator. Rounding is half away from zero, the way people round by hand; banker's rounding is not used.

Two consequences are easy to see. A sub-cent unit price is rounded to a printable price before multiplying: a line of 3 × 0.125 is computed as 3 × $0.13 = $0.39, so the figures on the page multiply out as printed. And quantities are held to four decimal places, so 3.3333 hours at $85.00 comes to $283.33, with nothing lost between the keyboard and the PDF.

Put a date on it

Use the Valid until field. Pick a validity and put it on the document; it does the awkward work for you: when a client returns six months later expecting the old price, the document has already said no. Prices move; a quote without an expiry pretends they do not.

The field is optional, and the engine checks it rather than trusting it. The validity must be a real calendar date, and it cannot fall before the quote date: a quote dated 1 October 2026 with a validity of 30 September 2026 is refused with the message "The second date cannot be before the document date." Dates print in words — 31 October 2026 — rather than in a numeric form that reads differently on either side of the Atlantic.

Limits the engine enforces

  • The line count is capped; add one line too many and the engine answers "A document holds at most 200 lines."
  • Tax rates up to 100% and discounts up to 100%, each with at most four decimal places. Past the ceiling: "The tax rate cannot exceed 100%."
  • A discount can reduce a quote to zero, never below it. Three sample packs at 3 × $4.50 with a 100% discount come to a quote total of $0.00, the discount line showing $13.50 — the whole subtotal and not a cent more.
  • Quantities are held to four decimal places. Negative quantities, prices, discounts and shipping are refused rather than silently flipped: "Quantity cannot be negative."
  • A document with no lines is refused: "Add at least one line item."
  • Notes are limited to 600 characters.
  • 10 currency symbols are offered. The symbol is a label printed on the document; no conversion is performed and no exchange rate is applied, so every figure stays in the currency you entered.

How to read the finished quote

The heading is set from the document type, QUOTE. Each line is quantity × unit price rounded once, and the totals stack prints only the rows the figures justify. Subtotal always appears. Discount appears only when it is greater than zero, as a negative figure. The tax row appears only when there is tax, labelled with your tax label and the rate: "Tax" by default, or "VAT (included)" by default when the mode is "already included". Shipping appears only when it is non-zero. The total and amount-paid rows an invoice can print once something has been paid never appear on a quote, because a quote has nothing paid against it. The last line is "Quote total", and on a quote it always equals the total, since there is no payment to subtract. The line amounts are the rounded products of the quantities and unit prices you typed, so they add exactly to the subtotal — a property of the engine, which every template honours.

Common misreadings

  • Subtracting a percentage from a tax-inclusive price. The tax inside a gross price is found by division; subtracting the rate overstates it, as the catering quote above shows.
  • Typing gross prices with the mode on "added on top". Every figure looks plausible and the total is too high by the whole tax.
  • Expecting the discount to come off the total. It comes off the subtotal, before tax, so the tax line is smaller than the rate applied to the undiscounted lines.
  • Expecting shipping to be taxed. It is added after tax; a taxable delivery charge belongs on a line of its own.
  • Looking for a balance due. A quote has no payment against it and prints no balance; the bottom line is a price.
  • Reading the quote number as a sequence. Left blank, it is the quote date, and two quotes made blank on the same day share it.
  • Expecting the lines to sum at full precision. Each line is rounded once; the subtotal is the sum of what is printed, not of the unrounded products.

What this generator does not do

It is a document generator, not an accounting system and not tax advice. It does not decide whether a sale is taxable, which rate applies, or whether your prices are shown inclusive or exclusive of tax; it applies the rate you type in the mode you select. It does not decide whether an accepted quote binds you — that depends on where you trade and on what the quote itself says, and the notes field is where such conditions can be written. It does not track acceptance, convert a quote into an invoice, number documents sequentially across sessions, validate tax numbers, convert currencies, or apply per-jurisdiction tax rules. It stores nothing: the Remember box keeps your own business details in this browser only, and closing the tab discards the quote, so download the PDF. For the mechanics behind every figure here, the methodology page is the reference; for the difference between the three documents, start with invoice vs. receipt vs. quote.

Questions

What is the difference between a quote and an estimate?

Some trades treat a quote as a fixed price and an estimate as an approximate one, but that is a convention rather than a legal test; whether an accepted quote binds you at that price depends on the jurisdiction and on what the quote itself says. If the scope could change, say estimate and say why — a quote that quietly becomes larger costs more trust than it earns.

Why does a quote need a validity date?

Because your costs move. A quote with no expiry is an open offer a client can accept in eight months, after your suppliers have raised prices. A validity date closes that without any awkward conversation.

Should a quote show tax?

Show it the way the client will be charged, and label it. A business client may need the pre-tax figure, since the tax may be reclaimable; a consumer wants the number they will actually pay. Ambiguity here is an easy way to end up arguing at invoicing time; the sales tax vs. VAT guide on this site covers which shape of tax is which.

How do I turn an accepted quote into an invoice?

Reissue the same lines as an invoice with its own number, and reference the quote number in the notes. Keep the figures identical to what was accepted — a client who spots the total drifting between quote and invoice will read it as either sloppiness or a trick.

Why is there no "Already paid" field on a quote?

Because nothing has been paid against a quote; it prices work that has not been agreed. The invoice form has the field and subtracts the amount from the balance due. The quote form leaves it out, and the engine behind both ignores an amount paid on a quote, so the bottom line is always the full quote total. Where a deposit is part of the offer, the notes field is where it can be written on a quote; once the work is agreed it becomes a figure on the deposit invoice.

Why is the tax line smaller than the rate times the total?

Because with tax "already included" the engine finds the tax inside the price by dividing by 1 + the rate, rather than taking the rate off the top. A £800.00 quote with 20% VAT included contains £133.33 of tax, not £160.00; the larger figure is 20% of a price that already has the tax in it, which taxes the tax. If the tax line is instead larger than you expected, check that tax-inclusive prices were not entered with the mode set to "added on top".

What happens if the valid-until date is before the quote date?

The engine refuses to build the document and says "The second date cannot be before the document date." Both dates have to be real calendar dates. The validity is optional, so leaving it blank is allowed; a validity earlier than the issue date is not, since it would describe an offer that expired before it was made.

Does the quote number continue from my last quote?

No. Nothing is stored between visits, so the tool cannot know what you issued before. Leave the field blank and the number is built from the quote date with a QTE- prefix — QTE-20261001 for a quote dated 1 October 2026 — which means two blank quotes made on the same day share a number. Type your own and keep the register yourself; the how-to-number-invoices guide on this site covers the schemes.

A document generator, not legal or tax advice. Whether a quote binds you where you trade is a question for a professional. Nothing is stored — download the PDF before closing the tab.