All templates
Sales quote template
A4 portraitAn A4 sales quote (estimate) with an itemized table, an estimated-total panel, a validity date, and a sign-to-accept block. One API call per prospect turns your numbers into the PDF you attach.

The exact PDF the API produces. What you preview is what you generate.
Generate with the API
Use this template, publish it to get a template id, then call the API with your data. Replace YOUR_TEMPLATE_ID and YOUR_API_KEY with your own.
import { writeFile } from "node:fs/promises";
import { PdfGlyph } from "pdfglyph";
const client = new PdfGlyph({
apiKey: "YOUR_API_KEY",
baseUrl: "https://api.pdfglyph.dev",
});
const { pdf } = await client.generate({
templateId: "YOUR_TEMPLATE_ID",
data: {
"quoteNumber": "QUO-2026-0117",
"issueDate": "June 10, 2026",
"validUntil": "July 10, 2026",
"company": {
"name": "Northwind Studio",
"addressLine1": "128 Maple Avenue, Suite 5",
"addressLine2": "Portland, OR 97204",
"email": "hello@northwind.studio"
},
"client": {
"name": "Acme Corporation",
"addressLine1": "500 Industrial Parkway",
"addressLine2": "Austin, TX 78701"
},
"items": [
{
"description": "Discovery and strategy workshop",
"quantity": "1",
"rate": "$2,500.00",
"amount": "$2,500.00"
},
{
"description": "Brand identity system",
"quantity": "1",
"rate": "$4,200.00",
"amount": "$4,200.00"
},
{
"description": "Marketing site (design + build)",
"quantity": "1",
"rate": "$6,800.00",
"amount": "$6,800.00"
}
],
"subtotal": "$13,500.00",
"taxLabel": "Tax (8.5%)",
"taxAmount": "$1,147.50",
"total": "$14,647.50",
"preparedBy": "Jordan Reyes",
"notes": "This estimate is valid for 30 days. A 50% deposit is due on acceptance, with the balance on delivery."
},
});
// pdf is a Uint8Array — write it to a file, return it, or stream it.
await writeFile("document.pdf", pdf);Sample data
The JSON this preview was rendered from. Match these fields, or edit the template to fit the data you already have.
{
"quoteNumber": "QUO-2026-0117",
"issueDate": "June 10, 2026",
"validUntil": "July 10, 2026",
"company": {
"name": "Northwind Studio",
"addressLine1": "128 Maple Avenue, Suite 5",
"addressLine2": "Portland, OR 97204",
"email": "hello@northwind.studio"
},
"client": {
"name": "Acme Corporation",
"addressLine1": "500 Industrial Parkway",
"addressLine2": "Austin, TX 78701"
},
"items": [
{
"description": "Discovery and strategy workshop",
"quantity": "1",
"rate": "$2,500.00",
"amount": "$2,500.00"
},
{
"description": "Brand identity system",
"quantity": "1",
"rate": "$4,200.00",
"amount": "$4,200.00"
},
{
"description": "Marketing site (design + build)",
"quantity": "1",
"rate": "$6,800.00",
"amount": "$6,800.00"
}
],
"subtotal": "$13,500.00",
"taxLabel": "Tax (8.5%)",
"taxAmount": "$1,147.50",
"total": "$14,647.50",
"preparedBy": "Jordan Reyes",
"notes": "This estimate is valid for 30 days. A 50% deposit is due on acceptance, with the balance on delivery."
}Start from the Sales quote template
Open it in the editor as a new draft, adjust the HTML until it looks like yours, then generate PDFs from your code.