Invoice Generator

Create a clean, printable invoice with line items and tax, ready to send as a PDF in a couple of minutes.

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
Bill to
Details

YYYY-MM-DD, or however you write dates.

Items

One per line, comma separated. Avoid commas inside the description.

%
Notes

Printable invoice

invoice-INV-1042.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Invoice INV-1042</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>Invoice</h1><p class="muted">INV-1042</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 · +353 21 555 0134</p></div>
    </div>
    <div class="row">
      <div><h2>Bill to</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>Details</h2><p>Date: 2026-09-30</p><p>Due: 2026-10-14</p></div>
    </div>
    <table><thead><tr><th>Description</th><th class="num">Qty</th><th class="num">Unit price</th><th class="num">Amount</th></tr></thead><tbody><tr><td>Classic Tee (Black M)</td><td class="num">24</td><td class="num">$14.00</td><td class="num">$336.00</td></tr><tr><td>Canvas Tote</td><td class="num">12</td><td class="num">$9.50</td><td class="num">$114.00</td></tr><tr><td>Shipping</td><td class="num">1</td><td class="num">$18.00</td><td class="num">$18.00</td></tr></tbody></table>
    <div class="totals">
      <div><span>Subtotal</span><span>$468.00</span></div>
      
      <div class="grand"><span>Total due</span><span>$468.00</span></div>
    </div>
    <h2>Notes</h2><p class="muted" style="white-space:pre-line">Payment due within 14 days. Bank transfer: IBAN IE00 AAAA 0000 0000 00.</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

What's on the invoice

Fill in your details, the client's, and a line for each item, and the totals update as you type.

Total due = subtotal (quantity × unit price, summed) + subtotal × tax rate

Example: the default numbers

24 × Classic Tee at $14.00
$336.00
12 × Canvas Tote at $9.50
$114.00
Shipping
$18.00

Subtotal is $468.00. With no tax rate set, that's also the total due. Turn on a tax rate to add it as its own line, labeled sales tax, VAT or whatever you call it locally.

Sending and storing invoices

  1. 01

    Save as PDF

    Download the HTML file, open it in a browser and print (Ctrl or Cmd+P), then choose Save as PDF instead of a physical printer.

  2. 02

    Shopify

    Shopify emails an order confirmation automatically, but it isn't a formal invoice. Use this for wholesale orders, custom work, or anything you invoice outside the standard checkout.

  3. 03

    WooCommerce

    A PDF invoicing extension can automate this per order. This tool is the quicker option for a one-off invoice or a quote you're turning into a bill.

  4. 04

    Numbering

    Keep invoice numbers sequential (INV-1041, INV-1042…) so nothing is skipped or reused, which matters if your accountant or tax authority ever asks for a full run.

Questions people ask

Is this legally a valid invoice?

It covers the common fields (seller, buyer, items, tax, total, date), but exact legal requirements vary by country and business type. Check your local rules on required fields, sequential numbering and tax details before relying on it for compliance.

Can I add my logo?

Not directly in the form. Download the HTML file and add an <img> tag pointing at your logo's URL near the top if you want one in the printed version.

How do I show a discount?

Add it as its own line item with a negative unit price, for example "Discount code SAVE10, 1, -34.80".

Does it handle multiple currencies?

Set the currency symbol field to whatever you're billing in ($, €, £ or any text), and every amount uses it. There's no automatic exchange rate conversion.

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.