Quote Generator
Universal quote / estimate generator with line items, discounts, tax, trade presets, and printable PDF. No signup.
How this is calculated
The engine sums each line as qty × unitPrice, then
applies a discount and tax based on the modes you pick. Modes are
independent — you can use per-line discount with aggregate tax, or
any other combination.
lineSubtotal = qty × unitPrice
quoteSubtotal = Σ lineSubtotal // aggregate basis
= Σ lineNet // per-line discount basis
discount = aggregate: applyDiscount(subtotal, discountSpec)
= per-line: Σ (linePct/100 × lineSubtotal)
taxable = subtotal − discount
tax = aggregate: taxable × rate
= per-line: Σ (lineTaxPct/100 × lineNet)
= inclusive: taxable − taxable / (1 + rate)
total = inclusive: taxable
= otherwise: taxable + tax
An amount discount is clamped to the subtotal so the total
never goes negative. inclusive tax mode treats line prices
as gross — the tax line is the extracted portion, and the headline
total equals the taxable base.
Trade preset values are metadata for the printable header only. They never branch the math, which keeps this generator usable for any trade.