Quotes

Quote and Estimate Template

Proposal-style quote layout with validity block, scope summary, estimate table, and approval area.

quoteestimatesalesapprovalline-items

Template JSON

rev_20260529_v2_quote_estimate
{
  "schema": {
    "fields": [
      {
        "key": "issuer_name",
        "type": "string",
        "required": true,
        "label": "Issuer name",
        "default_value": "gPdf Operations"
      },
      {
        "key": "issuer_line",
        "type": "string",
        "required": true,
        "label": "Issuer address",
        "default_value": "210 Market Street, San Francisco, CA"
      },
      {
        "key": "recipient_name",
        "type": "string",
        "required": true,
        "label": "Recipient name",
        "default_value": "Northstar Labs"
      },
      {
        "key": "recipient_line",
        "type": "string",
        "required": true,
        "label": "Recipient address",
        "default_value": "88 Harbor Way, Oakland, CA"
      },
      {
        "key": "document_number",
        "type": "string",
        "required": true,
        "label": "Document number",
        "default_value": "DOC-2026-0529"
      },
      {
        "key": "document_date",
        "type": "string",
        "required": true,
        "label": "Document date",
        "default_value": "2026-05-29"
      },
      {
        "key": "due_date",
        "type": "string",
        "required": false,
        "label": "Due date",
        "default_value": "2026-06-12"
      },
      {
        "key": "status",
        "type": "string",
        "required": true,
        "label": "Status",
        "default_value": "Ready"
      },
      {
        "key": "subtotal",
        "type": "string",
        "required": true,
        "label": "Subtotal",
        "default_value": "$1,240.00"
      },
      {
        "key": "tax",
        "type": "string",
        "required": true,
        "label": "Tax",
        "default_value": "$108.50"
      },
      {
        "key": "total",
        "type": "string",
        "required": true,
        "label": "Total",
        "default_value": "$1,348.50"
      },
      {
        "key": "notes",
        "type": "string",
        "required": true,
        "label": "Notes",
        "default_value": "Generated from a gPdf source JSON template."
      },
      {
        "key": "qr_payload",
        "type": "string",
        "required": true,
        "label": "QR payload",
        "default_value": "https://gpdf.com/templates"
      },
      {
        "key": "items",
        "type": "array",
        "required": true,
        "label": "Line items",
        "items": [
          {
            "key": "description",
            "type": "string",
            "required": true,
            "label": "Description",
            "default_value": "Professional API usage"
          },
          {
            "key": "qty",
            "type": "number",
            "required": true,
            "label": "Quantity",
            "default_value": 1
          },
          {
            "key": "unit_price",
            "type": "string",
            "required": true,
            "label": "Unit price",
            "default_value": "$120.00"
          },
          {
            "key": "amount",
            "type": "string",
            "required": true,
            "label": "Amount",
            "default_value": "$120.00"
          }
        ]
      }
    ]
  },
  "layout": {
    "pages": [
      {
        "width": 210,
        "height": 297,
        "elements": [
          {
            "type": "rect",
            "x": 0,
            "y": 0,
            "width": 210,
            "height": 297,
            "z_index": 0,
            "fill": {
              "color": "#FFFFFF",
              "opacity": 1
            }
          },
          {
            "type": "rect",
            "x": 0,
            "y": 0,
            "width": 210,
            "height": 38,
            "z_index": 0,
            "fill": {
              "color": "#111827",
              "opacity": 1
            }
          },
          {
            "type": "rect",
            "x": 132,
            "y": 0,
            "width": 78,
            "height": 38,
            "z_index": 0,
            "fill": {
              "color": "#7C3AED",
              "opacity": 1
            }
          },
          {
            "type": "text",
            "x": 18,
            "y": 14,
            "frame": {
              "width": 86
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Quote and Estimate"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 19,
                "color": "#FFFFFF",
                "font_weight": "bold"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 144,
            "y": 12,
            "frame": {
              "width": 44
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Valid until"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "due_date",
                      "style": {
                        "font_weight": "bold"
                      }
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18,
                "align": "right"
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#FFFFFF"
              }
            },
            "z_index": 0
          },
          {
            "type": "rect",
            "x": 18,
            "y": 54,
            "width": 174,
            "height": 28,
            "z_index": 0,
            "fill": {
              "color": "#F5F3FF",
              "opacity": 1
            },
            "stroke": {
              "color": "#DDD6FE",
              "width": 0.25
            }
          },
          {
            "type": "text",
            "x": 24,
            "y": 60,
            "frame": {
              "width": 72
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Prepared for",
                      "style": {
                        "font_weight": "bold"
                      }
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "recipient_name"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "recipient_line"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#312E81"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 126,
            "y": 60,
            "frame": {
              "width": 58
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Quote"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "document_number",
                      "style": {
                        "font_weight": "bold"
                      }
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "status"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18,
                "align": "right"
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#312E81"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 18,
            "y": 96,
            "frame": {
              "width": 118
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Recommended scope",
                      "style": {
                        "font_weight": "bold"
                      }
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "notes"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 8,
                "color": "#374151"
              }
            },
            "z_index": 0
          },
          {
            "type": "table",
            "x": 18,
            "y": 124,
            "width": 168,
            "columns": [
              {
                "key": "description",
                "header": "Description",
                "width": {
                  "mode": "fixed",
                  "value": 90
                }
              },
              {
                "key": "qty",
                "header": "Qty",
                "width": {
                  "mode": "fixed",
                  "value": 16
                },
                "cell": {
                  "text": {
                    "text_align": "right"
                  }
                },
                "header_cell": {
                  "text": {
                    "text_align": "right"
                  }
                }
              },
              {
                "key": "unit_price",
                "header": "Unit",
                "width": {
                  "mode": "fixed",
                  "value": 28
                },
                "cell": {
                  "text": {
                    "text_align": "right"
                  }
                },
                "header_cell": {
                  "text": {
                    "text_align": "right"
                  }
                }
              },
              {
                "key": "amount",
                "header": "Amount",
                "width": {
                  "mode": "fixed",
                  "value": 34
                },
                "cell": {
                  "text": {
                    "text_align": "right"
                  }
                },
                "header_cell": {
                  "text": {
                    "text_align": "right"
                  }
                }
              }
            ],
            "rows": "{{#each items}}",
            "header": {
              "show": true,
              "repeat_on_page_break": true,
              "cell": {
                "fill": {
                  "color": "#5B21B6"
                },
                "text": {
                  "color": "#FFFFFF",
                  "font_size": 6.8,
                  "font_weight": "bold"
                }
              }
            },
            "cell": {
              "padding": {
                "x": 1.4,
                "y": 2
              },
              "text": {
                "color": "#1F2937",
                "font_size": 6.8
              }
            },
            "body": {
              "alternate_fill": {
                "color": "#F8FAFC"
              }
            },
            "grid": {
              "top": {
                "color": "#CBD5E1",
                "width": 0.2
              },
              "bottom": {
                "color": "#CBD5E1",
                "width": 0.2
              },
              "horizontal": {
                "color": "#E5E7EB",
                "width": 0.18
              },
              "left": {
                "color": "#E5E7EB",
                "width": 0.18
              },
              "right": {
                "color": "#E5E7EB",
                "width": 0.18
              }
            },
            "z_index": 0
          },
          {
            "type": "rect",
            "x": 18,
            "y": 226,
            "width": 52,
            "height": 30,
            "z_index": 0,
            "fill": {
              "color": "#FAFAFA",
              "opacity": 1
            },
            "stroke": {
              "color": "#E5E7EB",
              "width": 0.25
            }
          },
          {
            "type": "rect",
            "x": 79,
            "y": 226,
            "width": 52,
            "height": 30,
            "z_index": 0,
            "fill": {
              "color": "#FAFAFA",
              "opacity": 1
            },
            "stroke": {
              "color": "#E5E7EB",
              "width": 0.25
            }
          },
          {
            "type": "rect",
            "x": 140,
            "y": 226,
            "width": 52,
            "height": 30,
            "z_index": 0,
            "fill": {
              "color": "#111827",
              "opacity": 1
            }
          },
          {
            "type": "text",
            "x": 23,
            "y": 233,
            "frame": {
              "width": 42
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Subtotal"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "subtotal",
                      "style": {
                        "font_weight": "bold"
                      }
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#374151"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 84,
            "y": 233,
            "frame": {
              "width": 42
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Tax"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "tax",
                      "style": {
                        "font_weight": "bold"
                      }
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#374151"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 145,
            "y": 233,
            "frame": {
              "width": 42
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Estimated total"
                    },
                    {
                      "type": "line_break"
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "total",
                      "style": {
                        "font_weight": "bold"
                      }
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 7,
                "color": "#FFFFFF"
              }
            },
            "z_index": 0
          },
          {
            "type": "line",
            "x1": 18,
            "y1": 272,
            "x2": 86,
            "y2": 272,
            "stroke": {
              "color": "#9CA3AF",
              "width": 0.25
            },
            "z_index": 0
          },
          {
            "type": "line",
            "x1": 106,
            "y1": 272,
            "x2": 192,
            "y2": 272,
            "stroke": {
              "color": "#9CA3AF",
              "width": 0.25
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 18,
            "y": 276,
            "frame": {
              "width": 68
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Customer approval"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 6,
                "color": "#6B7280"
              }
            },
            "z_index": 0
          },
          {
            "type": "text",
            "x": 106,
            "y": 276,
            "frame": {
              "width": 70
            },
            "content": {
              "blocks": [
                {
                  "type": "paragraph",
                  "inlines": [
                    {
                      "type": "text",
                      "text": "Authorized by "
                    },
                    {
                      "type": "variable",
                      "scope": "binding",
                      "name": "issuer_name"
                    }
                  ]
                }
              ]
            },
            "defaults": {
              "paragraph": {
                "line_height": 1.18
              },
              "run": {
                "font_family": "NotoSans-Regular",
                "font_mode": "prefer",
                "font_size": 6,
                "color": "#6B7280"
              }
            },
            "z_index": 0
          }
        ]
      }
    ]
  }
}
Sample data
{
  "issuer_name": "gPdf Operations",
  "issuer_line": "210 Market Street, San Francisco, CA 94105",
  "recipient_name": "Northstar Labs",
  "recipient_line": "88 Harbor Way, Oakland, CA 94607",
  "document_number": "QTE-2026-0188",
  "document_date": "2026-05-29",
  "due_date": "2026-06-12",
  "status": "Valid 14 days",
  "subtotal": "$1,240.00",
  "tax": "$108.50",
  "total": "$1,348.50",
  "notes": "Structured PDF template with dynamic fields, production sample data, and default gPdf metadata.",
  "qr_payload": "https://gpdf.com/templates/quote-and-estimate-template",
  "items": [
    {
      "description": "Template render pages",
      "qty": 2400,
      "unit_price": "$0.018",
      "amount": "$43.20"
    },
    {
      "description": "Hosted PDF workflow support",
      "qty": 1,
      "unit_price": "$120.00",
      "amount": "$120.00"
    },
    {
      "description": "Batch validation window",
      "qty": 6,
      "unit_price": "$18.00",
      "amount": "$108.00"
    },
    {
      "description": "Archive delivery package",
      "qty": 1,
      "unit_price": "$95.00",
      "amount": "$95.00"
    }
  ]
}

Rendered PDF

PDF