Proforma Invoice Generator

Build a proforma invoice for a wholesale quote or a cross-border shipment, with HS codes, Incoterms and a customs-ready layout.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Your details

From
Buyer
Terms
days
Goods
Payment

Printable proforma invoice

proforma-PF-2026-014.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Proforma Invoice PF-2026-014</title>
<style>
  * { box-sizing: border-box; }
  body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; color: #111; margin: 0; padding: 32px; font-size: 13px; line-height: 1.5; background: #fff; }
  .doc { max-width: 760px; margin: 0 auto; }
  .row { display: flex; justify-content: space-between; gap: 24px; }
  .head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 28px; gap: 16px; }
  h1 { font-size: 22px; margin: 0 0 4px; letter-spacing: -0.02em; }
  h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin: 24px 0 8px; }
  table { width: 100%; border-collapse: collapse; margin-top: 8px; }
  th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #e3e3e3; font-size: 12.5px; }
  th { text-transform: uppercase; font-size: 10.5px; letter-spacing: 0.05em; color: #666; border-bottom: 2px solid #111; }
  td.num, th.num { text-align: right; }
  .totals { margin-top: 12px; width: 260px; margin-left: auto; }
  .totals div { display: flex; justify-content: space-between; padding: 4px 0; }
  .totals .grand { font-weight: 700; border-top: 2px solid #111; margin-top: 4px; padding-top: 8px; font-size: 15px; }
  .muted { color: #666; }
  .box { border: 1px solid #ddd; border-radius: 8px; padding: 12px 14px; }
  .sig { margin-top: 40px; display: flex; gap: 40px; }
  .sig div { flex: 1; border-top: 1px solid #111; padding-top: 6px; font-size: 11px; color: #666; }
  @media print { body { padding: 0; } }
</style>
</head>
<body>
<div class="doc">

    <div class="head">
      <div><h1>Proforma Invoice</h1><p class="muted">PF-2026-014 · not a demand for payment</p></div>
      <div class="box" style="text-align:right"><p><strong>Harbour &amp; Co</strong></p><p class="muted" style="white-space:pre-line">48 Quay Street
Cork, Ireland</p><p class="muted">hello@harbourco.com</p></div>
    </div>
    <div class="row">
      <div><h2>Buyer</h2><p><strong>Wren &amp; Co</strong></p><p class="muted" style="white-space:pre-line">12 Baker Street
London, UK</p></div>
      <div style="text-align:right"><h2>Terms</h2><p>Date: 2026-09-30</p><p>Valid for 30 days</p><p>Incoterm: FOB</p><p>Origin: Ireland</p><p>Reason: sale</p></div>
    </div>
    <h2>Goods quoted</h2>
    <table><thead><tr><th>Description</th><th>HS tariff no.</th><th class="num">Qty</th><th class="num">Unit price</th><th class="num">Amount</th></tr></thead><tbody><tr><td>Wool scarf</td><td>6214.20</td><td class="num">48</td><td class="num">$18.00</td><td class="num">$864.00</td></tr><tr><td>Gift box</td><td>4819.50</td><td class="num">48</td><td class="num">$2.50</td><td class="num">$120.00</td></tr></tbody></table>
    <div class="totals">
      <div><span>Goods subtotal</span><span>$984.00</span></div>
      <div><span>Freight and insurance</span><span>$120.00</span></div>
      <div class="grand"><span>Total (FOB)</span><span>$1104.00</span></div>
    </div>
    <h2>Payment</h2>
    <p class="muted" style="white-space:pre-line">Wire transfer only. IBAN IE00 AAAA 0000 0000 00. SWIFT AAAAIE2D.</p>
    <p class="muted">This proforma invoice is for customs and quoting purposes only. It is not a demand for payment and is not a tax invoice.</p>
  
</div>
</body>
</html>

Open the downloaded file and print it (Ctrl or Cmd+P), then choose Save as PDF, to get a PDF copy.

Live preview

A proforma invoice vs a real invoice

A proforma invoice is a quote, formatted like an invoice so it can double as a customs document. It states what the buyer would pay if they went ahead, but it isn't a demand for payment and isn't a tax invoice, which the printed copy says outright.

  • Wholesale buyers use it to confirm price and terms before placing a purchase order.
  • Customs authorities use it to assess duty on a shipment, or to release a sample or gift where no real sale is happening.
  • Your bank may want one to process a wire transfer or open a letter of credit.

Incoterms shown

TermWho pays freight to destinationWho's responsible in transit
EXWBuyer, from your doorBuyer, from your door
FOBBuyer, from the port of originBuyer, once loaded on the vessel
CIFSeller, includes freight and insuranceSeller, until the goods reach the destination port
DAPSeller, to the named placeSeller, until the goods arrive, before unloading
DDPSeller, including import dutySeller, right up to delivery

These five are commonly used for ecommerce and small wholesale shipments. The ICC's Incoterms® rules publish the full 2020 set and exact definitions; use the term your freight forwarder or buyer actually agreed to.

Questions people ask

Do I need an HS tariff number?

For anything crossing a border, yes: it's what customs uses to assess duty. Look yours up on your country's tariff database, or ask your freight forwarder if you're not sure.

Is a proforma invoice the same as a packing list?

No. A proforma invoice states price and terms before a sale is final. A packing slip lists what's physically in a shipped box, usually without prices.

What does "reason for export" affect?

It tells customs whether duty should apply. A sample with no commercial value, or a repair being returned, is often treated differently to a straightforward sale.

Can I use this for a domestic wholesale quote?

Yes. Leave the HS tariff number and country of origin blank if they don't apply, and pick an Incoterm loosely (or skip relying on it) for a shipment that stays in one country.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com

Last reviewed 30 September 2026.

Sources: International Chamber of Commerce: Incoterms® rules