Free quote generator
Fill in your prices and download a clean quote PDF to send to your customer. No sign-up, and no watermark.
- No sign-up
- No watermark
- 10 free PDFs a day
Live preview
Estimated total $16,000.00
Free for up to 10 PDFs a day. Includes a small “Made with PDFgen” line at the foot of each page.
Your quote in three steps
- Q-3391
Step 1
Fill in your details
Add your logo, the quote details and each item. The page updates as you type.
$16,000.00
Step 2
Check the preview
What you see is what you get, and totals are worked out for you.
- PDF
quote.pdf
Step 3
Download the PDF
Download your quote, ready to send or print.
Anatomy of a quote
Everything that belongs on the page, and where it goes.
What a good quote does
A quote tells a customer what a job will cost before they commit. Clear line items make it easy to compare with other offers, and show which part of the price pays for what, which saves a round of questions.
An expiry date matters as much as the price. Material costs and your availability change, so a "valid until" date stops an old number from coming back months later. Thirty days is common, and shorter works better when your costs move quickly.
Make every quote automatic
This request creates the document in the form above, and it updates as you type. Connect it to your app or order system and each quote makes itself.
- The same template, filled from your own data
- A PDF back from a single POST request
- No browsers or servers to run yourself
curl -X POST https://pdfgen.com/api/v1/generate \-H "Authorization: Bearer pdfg_live_xxx" \-H "Content-Type: application/json" \-d '{"data": {"company": {"name": "Beacon Consulting","address": "41 Harbor Lane\nBoston, MA 02110"},"client": {"name": "Riverside Retail Group","address": "900 River Road\nHartford, CT 06103"},"quoteNumber": "Q-3391","currency": "USD","taxRate": 0,"notes": "This estimate is non-binding and excludes applicable taxes.","issuedDate": "2026-11-03","validUntil": "2026-12-03","items": [{"description": "Discovery workshop","quantity": 1,"unitPrice": 2500,"lineTotal": 2500,"amount": 2500},{"description": "Implementation (per month)","quantity": 3,"unitPrice": 4000,"lineTotal": 12000,"amount": 4000},{"description": "Training and handover","quantity": 1,"unitPrice": 1500,"lineTotal": 1500,"amount": 1500}],"subtotal": 16000,"tax": 0,"shipping": 0,"total": 16000},"format": "A4","engine": "handlebars","html": "<div style=\"max-width:760px;margin:0 auto;padding:48px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#111827;\">\n <div style=\"display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:36px;\">\n <div>\n {{#if logo}}<img src=\"{{logo}}\" alt=\"\" style=\"display:block;max-width:200px;max-height:56px;margin:0 0 10px;\">{{/if}}\n <h1 style=\"font-size:24px;font-weight:800;margin:0;\">{{company.name}}</h1>\n {{#if company.address}}<p style=\"color:#6b7280;margin:6px 0 0;font-size:13px;white-space:pre-line;\">{{company.address}}</p>{{/if}}\n </div>\n <div style=\"text-align:right;\">\n <h2 style=\"font-size:28px;letter-spacing:2px;color:#0f766e;margin:0;font-weight:800;\">QUOTE</h2>\n <p style=\"margin:6px 0 0;color:#6b7280;font-size:13px;\">#{{quoteNumber}}{{#if issuedDate}} · {{formatDate issuedDate}}{{/if}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;font-size:13px;\">Valid until {{formatDate validUntil}}</p>\n </div>\n </div>\n <p style=\"font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#9ca3af;margin:0 0 6px;\">Prepared for</p>\n <p style=\"margin:0;font-weight:600;\">{{client.name}}</p>\n {{#if client.address}}<p style=\"margin:2px 0 0;color:#6b7280;font-size:13px;white-space:pre-line;\">{{client.address}}</p>{{/if}}\n <div style=\"height:28px;\"></div>\n <table style=\"width:100%;border-collapse:collapse;font-size:14px;\">\n <thead>\n <tr style=\"background:#f0fdfa;text-align:left;\">\n <th style=\"padding:12px;border-bottom:1px solid #ccfbf1;\">Service</th>\n <th style=\"padding:12px;border-bottom:1px solid #ccfbf1;text-align:center;\">Qty</th>\n <th style=\"padding:12px;border-bottom:1px solid #ccfbf1;text-align:right;\">Price</th>\n </tr>\n </thead>\n <tbody>\n {{#each items}}\n <tr>\n <td style=\"padding:12px;border-bottom:1px solid #f3f4f6;\">{{description}}</td>\n <td style=\"padding:12px;border-bottom:1px solid #f3f4f6;text-align:center;\">{{quantity}}</td>\n <td style=\"padding:12px;border-bottom:1px solid #f3f4f6;text-align:right;\">{{formatCurrency amount ../currency}}</td>\n </tr>\n {{/each}}\n </tbody>\n </table>\n {{#if taxRate}}\n <table style=\"font-size:14px;line-height:inherit;min-width:240px;margin:20px 0 0 auto;\">\n <tr><td style=\"padding:4px 0;color:#6b7280;\">Subtotal</td><td style=\"padding:4px 0;text-align:right;\">{{formatCurrency subtotal currency}}</td></tr>\n <tr><td style=\"padding:4px 0;color:#6b7280;\">Tax ({{taxRate}}%)</td><td style=\"padding:4px 0;text-align:right;\">{{formatCurrency tax currency}}</td></tr>\n </table>\n {{/if}}\n <div style=\"display:flex;justify-content:flex-end;margin-top:20px;\">\n <div style=\"background:#0f766e;color:#fff;padding:14px 24px;border-radius:8px;font-size:16px;font-weight:800;\">\n Estimated total: {{formatCurrency total currency}}\n </div>\n </div>\n <p style=\"margin-top:40px;font-size:12px;color:#9ca3af;\">{{notes}}</p>\n</div>"}' --output quote.pdf
Questions, answered
The things people usually ask before they download.
What is the difference between a quote and an estimate?
An estimate is an informed guess that can change as the work goes on. A quote is usually a firmer price for a defined job. If yours can change, say so in the notes: this generator lets you word that however you need.
Is a quote legally binding?
It can be, depending on where you are and how it is worded, particularly once a customer accepts it. If you do not want to be held to a figure, label it as an estimate and state that it is non-binding. For anything high value, check with a legal adviser.
How long should a quote be valid?
Thirty days is a common default. Choose less if your supplier prices change often, and more for projects with long approval cycles.
Is this quote generator really free?
Yes. You can create up to 10 PDFs a day without an account or a credit card.
Will there be a watermark on my PDF?
No. Your document stays clean, with one small “Made with PDFgen” line at the foot of each page.
Do you store what I enter?
No. Your details are sent to our server to create the PDF and are not saved. The form lives in your browser, so copy anything you want to keep before leaving the page.
Can I create quotes automatically?
Yes. The API call further up this page produces the same quote from your own data, so your app or order system can create them without anyone filling in a form.
More free generators
See all toolsPurchase Order generator
Order from a supplier with vendor, ship-to and itemized costs in one numbered document.
Create onePacking Slip generator
List what is in the box, with ordered and shipped quantities and backorder notes.
Create oneGST Invoice generator
Create an Indian tax invoice with CGST and SGST or IGST worked out from the place of supply.
Create one