Purchase order HTML template

A printable A4 purchase order template in HTML with PO number, vendor and ship-to boxes, SKU table, VAT and an approval line. Generate POs as PDF automatically.

Convert this to PDF → Download .html

Paper: A4 · preview scaled to fit

Render it with the API

curl https://html-pdf.com/v1/pdf \
  -H "Authorization: Bearer $HTML_PDF_KEY" \
  -F "index.html=@purchase-order.html" \
  -F 'options={"prefer_css_page_size": true}' \
  -o purchase-order.pdf

Or ask your AI agent: "Make me a purchase order PDF using the html-pdf.com purchase order template." · Guides · API reference

Tips

HTML source

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Purchase order PO-2026-0381</title>
<style>
  @page { size: A4; margin: 16mm; }
  * { box-sizing: border-box; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body { font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: #111; font-size: 11.5px; line-height: 1.5; margin: 0; }
  .top { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 16px; border-bottom: 2px solid #111; margin-bottom: 20px; }
  .brand { font-size: 18px; font-weight: 700; }
  h1 { font-size: 22px; margin: 0; letter-spacing: .02em; text-transform: uppercase; }
  .muted { color: #666; }
  .meta { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid #111; margin-bottom: 20px; }
  .meta > div { padding: 8px 10px; border-right: 1px solid #111; }
  .meta > div:last-child { border-right: 0; }
  .label { font-size: 9.5px; text-transform: uppercase; letter-spacing: .08em; color: #777; margin-bottom: 2px; }
  .parties { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }
  .box { border: 1px solid #ccc; padding: 10px 12px; }
  table { width: 100%; border-collapse: collapse; }
  thead { display: table-header-group; }
  th { font-size: 9.5px; text-transform: uppercase; letter-spacing: .08em; text-align: left; padding: 7px 8px; background: #111; color: #fff; }
  td { padding: 8px; border-bottom: 1px solid #e3e3e3; vertical-align: top; }
  tbody tr:nth-child(even) td { background: #f7f7f7; }
  .r { text-align: right; }
  .mono { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 11px; }
  tr { break-inside: avoid; }
  .bottom { display: grid; grid-template-columns: 1fr 240px; gap: 24px; margin-top: 16px; break-inside: avoid; }
  .totals td { border: 0; padding: 3px 0; background: none !important; }
  .totals .grand td { border-top: 2px solid #111; padding-top: 8px; font-size: 14px; font-weight: 700; }
  .sign { margin-top: 36px; display: grid; grid-template-columns: 1fr 1fr; gap: 32px; break-inside: avoid; }
  .sign div { border-top: 1px solid #111; padding-top: 6px; font-size: 10px; color: #666; height: 44px; }
  @media screen {
    html { background: #e9e9e7; }
    body { width: 210mm; min-height: 297mm; margin: 24px auto; padding: 16mm; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.06); box-sizing: border-box; }
  }
</style>
</head>
<body>
  <div class="top">
    <div><div class="brand">Your Company</div><div class="muted">Carrer de Example 1, 08001 Barcelona, Spain · VAT ES B12345678</div></div>
    <h1>Purchase order</h1>
  </div>

  <div class="meta">
    <div><div class="label">PO number</div><strong class="mono">PO-2026-0381</strong></div>
    <div><div class="label">Order date</div>October 10, 2026</div>
    <div><div class="label">Deliver by</div>October 24, 2026</div>
    <div><div class="label">Payment</div>Net 30</div>
  </div>

  <div class="parties">
    <div class="box"><div class="label">Vendor</div><strong>Northwind Supplies Ltd.</strong><br>14 Harbour Road<br>Dublin D02, Ireland<br>orders@northwind.example</div>
    <div class="box"><div class="label">Ship to</div><strong>Your Company Warehouse</strong><br>Pol. Ind. Example, Nave 3<br>08980 Sant Feliu de Llobregat, Spain<br>Receiving: Mon to Fri, 8:00 to 14:00</div>
  </div>

  <table>
    <thead><tr><th>SKU</th><th>Description</th><th class="r">Qty</th><th>Unit</th><th class="r">Unit price</th><th class="r">Total</th></tr></thead>
    <tbody>
      <tr><td class="mono">NW-1042</td><td>Corrugated boxes, 40×30×20 cm</td><td class="r">500</td><td>ea</td><td class="r">€0.62</td><td class="r">€310.00</td></tr>
      <tr><td class="mono">NW-2210</td><td>Packing tape, 48 mm × 66 m, clear</td><td class="r">72</td><td>roll</td><td class="r">€1.15</td><td class="r">€82.80</td></tr>
      <tr><td class="mono">NW-3307</td><td>Thermal labels 4×6 in, 500 per roll</td><td class="r">20</td><td>roll</td><td class="r">€9.40</td><td class="r">€188.00</td></tr>
      <tr><td class="mono">NW-4019</td><td>Kraft paper void fill, 450 m</td><td class="r">6</td><td>roll</td><td class="r">€24.50</td><td class="r">€147.00</td></tr>
      <tr><td class="mono">NW-5120</td><td>Stretch film, 500 mm × 300 m</td><td class="r">12</td><td>roll</td><td class="r">€11.90</td><td class="r">€142.80</td></tr>
    </tbody>
  </table>

  <div class="bottom">
    <div><div class="label">Instructions</div>Quote the PO number on every invoice and delivery note. Partial deliveries are accepted. Contact purchasing@yourcompany.example with any changes before shipping.</div>
    <table class="totals">
      <tr><td class="muted">Subtotal</td><td class="r">€870.60</td></tr>
      <tr><td class="muted">Shipping</td><td class="r">€45.00</td></tr>
      <tr><td class="muted">VAT (21%)</td><td class="r">€192.28</td></tr>
      <tr class="grand"><td>Total</td><td class="r">€1,107.88</td></tr>
    </table>
  </div>

  <div class="sign">
    <div>Authorized by</div>
    <div>Date</div>
  </div>
</body>
</html>

More templates

Invoice · Receipt · Certificate · Report · Resume · Proposal · Packing slip · Shipping label · Event ticket · Quote · Timesheet · all templates