Free Invoice Generator for Small Business

NOYO
Free Invoice Generator free forever · no sign-up

Make a clean, professional invoice in about two minutes. Add your logo, fill in the details, and hit Print / Save PDF. No account, no watermark, no catch — your business details are remembered on this device so the next invoice takes seconds.

🔒 Runs entirely in your browser — nothing you type is uploaded to our servers.

1 Your business

Your logo
Saved automatically on this device — you won't have to type it again.

2 Invoice details

3 Customer details

4 Items

Products, services, hours — quantity accepts decimals (e.g. 1.5 hours).

5 Totals & notes

Use this for separate tax lines, like GST 5% and PST 7%. When tax details are added, their sum becomes the tax total.
Subtotal
$0.00
Total
$0.00

6 Invoice preview

INVOICE
Invoice #:
Invoice Date:
Paid

Bill To

Ship To

Item Qty Unit Price Line Total
Subtotal $0.00
Discount -$0.00
Shipping $0.00
Taxes $0.00
Total $0.00

Invoice done. Now make the package match. 📦

NOYO makes biodegradable mailer bags in 100+ designs your customers will actually post about — packs from just 25, free shipping in the US & Canada, 700+ five-star reviews.

Tidal Amber biodegradable mailer bag Camelia Bloom biodegradable mailer bag Pastel Petals biodegradable mailer bag Midnight Galaxy biodegradable mailer bag Shop Biodegradable Mailers

Frequently asked questions

Is this invoice generator really free?

Yes — completely free, no sign-up, no watermark, no locked features. We make eco-friendly packaging for small businesses; this is our way of being useful before you ever need a mailer.

Where is my invoice data stored?

Only in your own browser. Nothing you type is uploaded to any server. Your business details and logo are saved locally on your device so they're pre-filled next time you visit.

How do I save my invoice as a PDF?

Click Print / Save PDF, then choose "Save as PDF" as the destination in your browser's print dialog. The invoice is formatted to fit a standard Letter page.

Can I add my own logo?

Yes — upload a PNG or JPG in the "Your business" section and it appears at the top of the invoice. Like everything else here, the logo never leaves your device.

'); d.close(); // fonts are already cached by the parent page; small delay lets the frame lay out setTimeout(()=>{ try{ frame.contentWindow.focus(); frame.contentWindow.print(); } finally { setTimeout(()=>frame.remove(), 2000); } }, 800); } /* ---------- Klaviyo signup (only network call on the page, and only on submit) ---------- */ async function signup(){ const input=$('signupEmail'); const msg=$('signupMsg'); const btn=$('btnSignup'); const email=input.value.trim(); if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){ msg.className='signup-msg error'; msg.textContent='That email doesn’t look right — mind checking it?'; return; } btn.disabled=true; btn.textContent='Sending...'; try{ const resp=await fetch(`https://a.klaviyo.com/client/subscriptions/?company_id=${KLAVIYO_COMPANY_ID}`,{ method:'POST', headers:{'Content-Type':'application/json','revision':'2024-10-15'}, body:JSON.stringify({data:{type:'subscription',attributes:{custom_source:'Free Invoice Generator (noyo.co)',profile:{data:{type:'profile',attributes:{email,properties:{lead_magnet:'invoice-generator'}}}}},relationships:{list:{data:{type:'list',id:KLAVIYO_LIST_ID}}}}}) }); if(resp.ok||resp.status===202){ msg.className='signup-msg ok'; msg.textContent='You’re in! Keep an eye on your inbox. 🎉'; input.value=''; } else { throw new Error('bad status '+resp.status); } } catch(e){ msg.className='signup-msg error'; msg.textContent='Hmm, that didn’t go through. Please try again in a minute.'; } finally{ btn.disabled=false; btn.textContent='Send me free stuff'; } } /* ---------- wire up ---------- */ $('btnAddItem').onclick=()=>{items.push({name:'',qty:1,price:0}); update();}; $('btnAddTaxLine').onclick=()=>{taxLines.push({name:'',amount:0}); update();}; $('btnPrint').onclick=printInvoice; $('btnPrintTop').onclick=printInvoice; $('btnPrintPreview').onclick=printInvoice; $('btnClear').onclick=clearAll; $('btnClearTop').onclick=clearAll; $('btnLoadSample').onclick=loadSample; $('btnCopySummary').onclick=copySummary; $('btnCopyBilling').onclick=()=>{$('shippingAddress').value=$('billingAddress').value; renderPreview();}; $('btnSignup').onclick=signup; $('signupEmail').addEventListener('keydown',e=>{ if(e.key==='Enter') signup(); }); $('madeWith').addEventListener('change',renderPreview); document.querySelectorAll('.input,.textarea,.select').forEach(el=>el.addEventListener('input',renderPreview)); document.querySelectorAll('.select').forEach(el=>el.addEventListener('change',renderPreview)); $('invoiceDate').value = today; loadSaved(); if (!$('invoiceDate').value) $('invoiceDate').value = today; update();