A modern, professional invoice generator built with vanilla HTML, CSS, and JavaScript. Create beautiful, customizable invoices with live preview and export to PDF.
Live Demo: invoice.innovgeist.com
- Custom Logo Upload - Upload your company logo (PNG, JPG, SVG supported)
- Company Details - Add company name, email, phone, and address
- Default Configuration - Pre-configured with your business details
- Client Information - Capture client name, email, phone, and address
- Client History - Save up to 10 clients in localStorage for quick reuse
- Quick Load - Select saved clients from dropdown to auto-fill form
- Auto-formatting - Clean display of client details on invoice
- Invoice Numbering - Custom invoice number support
- Date Management - Issue date and due date with date picker
- Multi-Currency Support - 9 currencies supported:
- USD ($)
- EUR (€)
- GBP (£)
- INR (₹)
- JPY (¥)
- CAD (C$)
- AUD (A$)
- CHF (Fr)
- CNY (¥)
- Tax Rate - Configurable tax percentage (0-100%)
- Discount Rate - Apply discounts as percentage
- Auto-calculation - Real-time subtotal, tax, discount, and grand total
- Built-in Converter - Convert between 9 major currencies
- Real-time Rates - Powered by Frankfurter API (free, no API key required)
- Quick Reference - Helpful for international invoicing
- Editable Column Headers - Customize column titles with text wrapping
- Dynamic Rows - Add/remove service line items
- Flexible Columns - Description, Quantity, Rate, and Amount
- Delete Columns - Remove unwanted columns (minimum 2 required)
- Auto-calculation - Amount = Quantity × Rate
- Custom Notes - Add personalized messages to clients
- Payment Terms - Specify payment conditions and methods
- Signature Upload - Add your signature as an image
- Clear Option - Remove signature when needed
- Professional Touch - Signature appears above signature line
- Print / Save PDF - Browser-based print with "Save as PDF" option
- Clean Output - All UI elements hidden in print view
- Full Page - Optimized for A4 paper size
- Live Preview - See changes in real-time
- Black & White Theme - Professional, clean aesthetic
- Responsive Design - Works on desktop and tablet
- Smooth Animations - Polished user experience
- HTML5 - Semantic markup
- CSS3 - Custom properties, Flexbox, Grid
- Vanilla JavaScript - ES6+ classes, async/await
- Google Fonts - Instrument Serif & DM Sans
- Modern web browser (Chrome, Firefox, Safari, Edge)
- No server required - runs entirely in the browser
- Clone the repository:
git clone https://github.com/yourusername/invoice-studio.git- Navigate to the project folder:
cd invoice-studio- Open
index.htmlin your browser:
# On macOS
open index.html
# On Windows
start index.html
# On Linux
xdg-open index.htmlOr simply double-click the index.html file.
-
Add Company Details
- Upload your logo (optional)
- Fill in company name, email, phone, and address
-
Enter Client Information
- Add client's name and contact details
- Click "Save Client" to save for future use
- Or select a previously saved client from the dropdown
-
Configure Invoice
- Set invoice number
- Select issue and due dates
- Choose currency
-
Add Services
- Click "Add Row" to add line items
- Enter description, quantity, and rate
- Amount calculates automatically
-
Apply Tax & Discount (optional)
- Enter tax percentage
- Enter discount percentage
-
Add Notes & Signature
- Write custom notes and payment terms
- Upload your signature image
-
Export
- Click "Print / Save PDF"
- Select "Save as PDF" as destination
- Click Save
- Click on any column header to edit the title
- Headers support multi-line text (auto-wrap)
- Hover over a header to see the delete button
- Cannot delete the Amount column
invoice-studio/
├── index.html # Main HTML file
├── styles.css # All styles and responsive design
├── script.js # Application logic
├── logo.png # Default company logo
└── README.md # Documentation
| Browser | Version |
|---|---|
| Chrome | 80+ |
| Firefox | 75+ |
| Safari | 13+ |
| Edge | 80+ |
Client data is stored in the browser's localStorage:
- Key:
invoiceStudio_clients - Format: JSON array of client objects
- Limit: Maximum 10 clients (oldest removed when exceeded)
- Persistence: Data persists across browser sessions
The currency converter uses the Frankfurter API:
- Free to use - No API key required
- Real-time rates - Updated daily
- Supported currencies - EUR, USD, GBP, INR, JPY, CAD, AUD, CHF, CNY
Edit the values in index.html:
<input type="text" id="companyName" value="Your Company Name">
<input type="text" id="companyEmail" value="your@email.com">Modify CSS variables in styles.css:
:root {
--ink: #000000;
--paper: #ffffff;
--accent: #000000;
/* ... */
}Update the currency select in index.html:
<select id="currency">
<option value="₿">BTC (₿)</option>
<!-- Add more currencies -->
</select>- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Fonts - Typography
- Frankfurter API - Currency exchange rates
- Design inspired by modern invoice templates
For support, please open an issue in the GitHub repository.
Made with care by Innovgeist