Edit the markdown and CSS for your invoice, then generate a PDF.
How to use the invoice tool
- Edit the invoice content in the Markdown editor on the left. Update the header, billing details, line items, and totals to match your invoice.
- Edit the styling in the CSS editor on the right. You can change fonts, colors, borders, or any other print style used by the PDF.
- Click Generate invoice to create your PDF. The content and styles are encoded and sent to the server, which renders the PDF in your browser as a download.
For Developers
Want to run this locally or build your own? Clone or fork the repository and generate invoices right from your terminal.
- 1
Clone or fork the repository
$ git clone https://github.com/vijayst/invoice - 2
Install the dependencies
Installs everything needed to build your invoice.
$ npm install - 3
Generate an invoice
Converts invoice.md and invoice.css into a PDF.
$ npm run generate
MCP
Invoice Studio with an AI client
In Cursor or Claude Desktop, add this MCP server. The client loads the tools so you can design an invoice and generate a PDF.
io.github.vijayst/invoice-studio
- 1
Add the server
Paste
io.github.vijayst/invoice-studiointo Cursor or Claude Desktop MCP settings and reload. The invoice tools appear in the client — no extra config file is required. - 2
Design and generate
Try prompts like these:
- Read the invoice template, update the line items and totals, regenerate, and show the preview.
- Change the billed-from details to my company and restyle the header.
- Generate this month's invoice and show me the preview.
- 3
Fork, clone, and export
Save the designed template into your own repo so you can reuse it for future invoices.
Fork vijayst/invoice on GitHub.
Clone your fork locally.
Keep this MCP server connected, then ask the agent to copy the studio files into the clone. Use the absolute path to the folder that contains
package.json.Export my studio files into /absolute/path/to/my-fork
That copies the invoice template, CSS, and data JSON from the running MCP workspace into your clone. The destination folder must already exist.
For the next invoice, point the agent to the cloned repo root, ask the agent to update the data, regenerate, and send
output/invoice.pdf.