How to build an invoice and quote builder with Claude Code
Stop paying a monthly fee to send your own invoices. Describe the billing workspace you want in plain words and Claude Code builds it: quotes with line items, discounts and tax in any currency, one click from quote to invoice, statuses the database enforces, a branded PDF, and reports, all under your own sign-in on a database you own.
Claude Code
$ Build an invoicing app: I build quotes with line items, discounts, a tax rate and a currency, turn a quote into an invoice, move documents through draft, finalized and archived, keep my clients on file, export each document as a branded PDF, and see reports. Everything belongs to my account and nobody else can see it.
- Quote editor adding up live
- Invoices, PDF and reports built
- Ready for you to review
What an invoice and quote builder actually is
At its core, this tool does exactly what you need: it manages your client list, calculates totals, turns quotes into invoices, and creates PDFs for your customers. Everything is completely private, linked only to your account, and hidden from the public.
Usually, you have to rent invoicing software. Monthly subscriptions often limit what you can do, charging extra based on how many clients you have, how many invoices you send, or taking a cut of your payments. They might even force their logo onto your documents unless you upgrade. Most other tools restrict you in at least one of these ways.
We keep things simple and all in one place. You can easily add line items, taxes, discounts (fixed or percentage), shipping fees, and choose your currency. Convert a quote to an invoice with a single click. You can easily track the status of any document: Draft, Finalized, or Archived. All your client details, custom fields, and brand colors are saved securely, and you can choose how your final PDF looks from our template gallery.
The biggest difference is how you pay. We don’t charge you per client, per invoice, or for removing our logo. Your only costs are data storage and standard web hosting, which can often be free. Because we don’t process payments or send emails for you, there are no hidden fees: you just download the PDF and get paid however you normally do. We even include a smart feature that helps you easily copy the design of an old invoice on your own AI key.
Perfect math every time
Subtotals, discounts, taxes, and shipping are automatically calculated as you type. Everything is formatted correctly for your chosen currency. Whether you’re looking at your screen or the final PDF, the numbers always match perfectly, saving you from the headaches and errors of manual spreadsheets.
Just your business, nothing else
Your account is entirely yours. Everything you create (clients, invoices, templates) is securely linked only to you. We designed this specifically for freelancers and solo business owners, meaning there are no complicated team roles to manage. You log in and see exactly what you need for your work.
100% private document creation
Your final invoices are created directly on your computer, using your logo, colors, and fonts. Your financial data is never sent to a remote server to be processed. This means your numbers stay completely private and secure, and your documents are generated instantly right in your browser.
The parts every invoice builder is built from
These six building blocks give you everything you need to manage your billing effortlessly. Start by creating quotes and invoices with instant calculations, then manage your entire workflow from a single dashboard.
Instant calculations for quotes & invoices
Add items with descriptions, quantities, unit prices, and individual discounts. Apply overall document discounts, set tax rates, and add shipping fees: everything recalculates instantly as you type. Quotes include expiration dates and terms, while invoices add due dates, payment methods, and bank details.
One-click conversion & revision tracking
Turn any approved quote into an invoice with a single click, keeping all client details, items, and totals connected. Need to make changes? Duplicate a quote to create numbered revisions (like R/1, R/2), while your invoices stay neatly ordered (like INV-1, INV-2).
Simple document status & tracking
Keep your workspace clean by marking documents as Draft, Finalized, or Archived. Filter your documents in seconds to find what you need. The system keeps your record-keeping accurate and flexible so you stay in full control of your workflow.
Custom branding & print-ready PDFs
Choose from stylish design templates like Professional, Classic, or Ledger. Personalize them with your logo, brand colors, custom fonts, and footers with a live preview as you make changes. Download print-ready PDFs anytime or export your financial reports.
Multi-currency support for global clients
Easily select from 30 major currencies for any quote or invoice. All amounts and totals are automatically formatted to match the official standard for that currency, helping you present clean, accurate documents to international clients.
Clients, reports & activity log
Store detailed client profiles with contact info, addresses, tax IDs, and private notes. Create custom fields for extra details, view visual dashboards with CSV report exports, and review an activity log to see what was changed and when.
Own the invoicing or rent it by the month
Most billing services charge you more as your business grows: limiting your clients, taking a cut of your payments, or raising monthly fees. Building your own simple tool gives you full ownership, complete data privacy, and zero recurring fees or hidden limits.
Build your own
Take full control of your invoicing. Enjoy a custom billing tool that belongs entirely to you, running smoothly without expensive software subscriptions. You get clean, professional branding and full freedom without paying third-party fees.
- No cap on clients, invoices or people who sign in, so the fiftieth client costs what the first one did
- Your logo on the PDF and nobody else’s, on every design
- A quote that becomes an invoice without retyping, with revisions numbered from the original
- Thirty currencies formatted per document, and no conversion you did not ask for
- Your clients’ names, addresses and amounts in a database you can dump and move
- Nothing to migrate away from later, because the code and the database are ordinary and yours
Rent traditional software
FreshBooks · Xero · Zoho Invoice · Wave · PandaDocRenting gets you up and running immediately with ready-made payment buttons and maintenance handled for you. However, you pay a recurring subscription that grows more expensive as your business scales.
- Live today, with a Pay now button and a paid status you did not have to build
- Accounting behind the invoice on the bigger products: expenses, bank feeds, an accountant’s login
- A monthly price that follows how many clients, invoices or seats you have
- A free tier that is free because the vendor’s logo is on your PDF, or because it earns on every payment
- Your design inside the vendor’s templates, and your data inside its export
- A percentage of every invoice paid through it, on top of the card fee
The plainest version of the meter: a price per month, a cap on how many clients you may bill at each tier, and a seat price for anyone else who signs in. A small business with more than five clients lands on Plus, which is the row to read for what renting a mature invoicing product actually costs once it fits. Card payments through it carry their own fee, quoted on the page as 2.9% plus 30 cents.
freshbooks.com · checked September 2026
The meter here is invoices. The entry plan caps you at twenty a month, counting approving as well as sending, so a business that invoices weekly lands on Growing. What you get for the step up is an accounting system rather than an invoicing tool, which is the honest comparison: Xero is what you rent when you want the ledger too, and this template is what you build when you do not.
xero.com · checked September 2026
Free, and the meter is the fine print: two users, five hundred invoices a year, and the vendor’s name on every PDF you send. For a freelancer that is a fair trade and this guide says so in the verdict. What the free tier is selling is the paid billing product beside it, and the branding line is how it does that.
zoho.com · checked September 2026
Free software that earns on the payment button: every card payment through it carries the fee, and the paid plan is mostly about taking Wave’s name off your invoice and putting your logo on it. Read this row for the shape most free invoicing takes, which is a payment processor with an invoice editor in front of it.
waveapps.com · checked September 2026
The quote half of this template, priced by the seat. PandaDoc sells proposals and signatures, and a quote with line items is a Business-tier feature at about fifty dollars a seat on the annual plan. Worth reading if what you actually send is a quote that has to look good, because it is the row where the meter is people rather than documents.
pandadoc.com · checked September 2026
Rule of thumb: if you send a handful of invoices a month and want to be paid by card tonight, rent one, and Wave or Zoho Invoice will do it for nothing but the card fee or their logo on your PDF. If invoicing is part of a product you sell, if your quotes carry revisions and your PDFs carry your brand, or if you bill in several currencies and do not want them converted for you, the software is worth owning, because the caps above are exactly where a growing business pays and your clients’ names and amounts are yours to keep in a database you control. The honest middle case is a business that needs to be paid online. Build this and connect a payment rail, and read the block on choosing how you get paid, because that fee exists whether you rent the software or own it.
Why build with Claude Code
Skip the accounting suite and the server engineering. Describe the quotes and invoices you send, the clients you bill and the way your PDF should look, and every document is saved under your own sign-in without you writing server code.
Claude Code removes that barrier. The whole workflow becomes a simple loop:
Describe
Say what you want in plain words in any language.
Build
It writes and edits real code across backend, auth, and UI.
Check
Run the app and see the change actually work.
Repeat
Ask for the next thing. Repeat.
No stage of that loop asks for the full-stack expertise or the months of boilerplate that stop most people, which is why one person can ship a working app in a couple of weeks.
Three hard partshandled for you
The data model, authentication, and access rules are what make software like this genuinely hard to build by hand. Describe them and Claude Code scaffolds all three. After that, the rest is mostly screens on top.
Any language is the interface
No code to write, and no English required either. Whether you need a new field, a renamed step, or an AI summary, describe it in whatever language you think in and Claude Code handles the implementation.
Whole project in context
It finds and reads the files a change touches, instead of needing you to paste them in, so each edit stays consistent with what is already there. Point it at the two or three files that matter and it stays fast.
Pay a developer, or do it with AI
Running your own invoicing app requires two simple things: data storage and website hosting, both of which start completely free. The real choice comes down to how you build the app itself: hiring a developer by the hour or creating it yourself with an AI coding assistant.
Hire a developer
Custom build, from scratch- Developer
- ~$11k-$43k
- Supabase (backend)
- Free tier · $25/mo (Pro plan)*
- Hosting
- $0 free tier
- AI template import
- Per upload on your own key
- Build time
- ~215 hrs of their work
~$11k-$43k for the build, then from $25/mo once real invoices go out
Our ~215-hour estimate, costed against the rate survey linked below, whose bands run from a $45-$75/hr global freelance average up through $100-$150+/hr for senior US developers, before the 20-40% an agency adds, which brackets the range at roughly $50/hr and $200/hr. Most of those hours go on arithmetic that has to be right in thirty currencies, a PDF that has to look like your company, and twelve tables that all have to agree about whose document this is.
Build it with Claude Code
From scratch, with Claude Code- Claude Code
- $20/month (Pro) to $200/month (Max)
- Backend (Supabase)
- Free tier · $25/month (Pro plan)*
- Hosting
- $0 on a free tier
- Your time
- ~103 hrs
~$20-$200/month while you build, then whichever plan you keep using
Claude Code itself is free. The cost sits in the Claude plan behind it. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: Pro, at $20/month, covers a template import or a short build, and a from-scratch build that runs for weeks tends to need the $100-$200/month Max plan instead, because it outlasts Pro’s usage window. Either way, the template changes how many of the hours in the estimator above you actually spend, not which Claude plan you’re paying for.
* On this template the free-tier line to watch is the pause, not storage. The only file is a logo and the rows are small, but a free project is paused after a week without activity, and a business that invoices at month end leaves it idle for three. Pro, from $25/mo, ends the pause and keeps a daily backup for 7 days, which matters more here than anywhere else in the catalogue, because an invoice is a record you may be required to keep.
Prices and rates from supabase.com, developex.com and claude.com, checked September 2026.
Decide before you build
Six simple choices to consider before customizing your app. Decide how your business will handle team access, currency exchange, invoice sending, legal locking, payment processing, and AI budget limits.
Solo owner or team access?
By default, the app is built for a single user. If you have multiple team members who need separate logins or different access levels, it’s best to plan this from the start. Setting up team access early ensures your privacy and data controls stay clean and organized.
Single currency or live conversion?
The app supports 30 major currencies without forcing conversion rates. Decide whether you want to bill everything in one primary currency or attach live exchange rates to international invoices so your tax and financial reports stay perfectly accurate for audits.
Direct emailing or manual downloads?
You can simply download print-ready PDFs and email them to clients yourself. If you want the app to send invoices automatically, you can connect an email service to deliver documents directly and track their delivery status inside the app.
Editable or locked invoices?
By default, documents can be edited anytime. However, accounting laws in many countries require sent invoices to be locked permanently against edits. Decide if finalizing an invoice should freeze it completely to keep your business fully compliant.
Bank transfers or instant payment buttons?
The standard setup displays your bank details on the PDF so clients pay manually with zero extra fees. If you prefer adding a "Pay Now" button, you can connect a payment processor, though keep in mind they will charge a small fee per transaction.
AI feature setup & spending limits
The built-in AI tool scans uploaded invoice designs and converts them into editable templates. Select your preferred modern AI provider and set cost controls so you can enjoy smart document conversion while keeping your monthly budget predictable.
Comparing your build options
A form that adds up a few lines is an afternoon. The hard part is everything behind it: totals that stay right through discounts, tax and shipping in thirty currencies, a quote that becomes an invoice without retyping, statuses the database will not let you skip, and a PDF that looks like your company rather than a spreadsheet. Here are three ways to build the exact same product.
A form that adds up three lines is an afternoon. The weeks go on the parts a client never sees: a percentage discount, a tax rate and shipping that agree to the cent in a currency with no decimals, a quote that becomes an invoice without retyping a line, a status the database refuses to skip, and a PDF that looks like your company on every one of five designs.
A kit gives you a form, a table and a settings page. It has never heard of a line item, a tax rate or a finalized document, so the arithmetic, the quote-to-invoice step and the PDF, which are the whole product, start from nothing.
You describe one piece at a time in plain words and Claude Code writes the tables, the ownership rules, the editors and the PDF together, reading the rest of the project before it edits any of it. The check that matters: change a quantity on a line and confirm the subtotal, the tax, the total and the PDF preview all move together.
Estimate your exact build timeframe
Uncheck features your business doesn’t need. Whether you drop quotes or skip AI template imports, you still get a fully functional billing app with a faster setup time. Use this figure as a helpful starting estimate.
Your estimate
103 hrs
start to finish
Based on the 7 of 7 features you’ve selected, plus ~26h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.
A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.
Let’s set up the tools you need
Four things need to be on your machine before step 01, and none of it takes more than about 15 minutes. Three are ordinary installers you click through, and the fourth is an active Claude subscription. From there, you build simply by describing what you want, in your own words.
Claude Code
Your main AI assistant. Download and run the free Claude Code CLI, connect your Anthropic account or pay-as-you-go API key, and build your app in plain English. It runs in the Terminal, and if a command line puts you off, the same tool ships as a desktop app with buttons and windows.
Install Claude CodeClaude subscription
Claude Code itself is free, but the free Claude.ai plan does not include Claude Code access at all, so you need at least Pro, unless you pay as you go through a Console account instead. Pro at $20/month is enough to start with, though a long, from-scratch build tends to outrun what Pro allows in a given stretch, which is when people move up to Max, from $100/month. Every plan’s usage resets on a rolling window, so on a heavy day you may hit a limit and have to wait it out.
Compare Claude plansNode.js engine
The engine that runs your app on your own computer. You never have to learn how it works: download the version marked LTS (the most stable one), install it, and forget about it.
Download Node.js (LTS)Supabase (database)
Where your project keeps its data. Install it, then sign in once by running supabase login. Words like migrations and row-level security turn up later in the guide, and Claude Code writes those parts for you.
Install Supabase CLINothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Claude Code runs the commands.
Build your invoice builder, prompt by prompt
No code to write. Describe what you need and Claude Code runs the commands. One thing about the order: sign-in and the ownership rules go in at step 02, before a single document exists, because every row in this app belongs to one account and a rule added later has to be retrofitted onto twelve tables.
- 01
Set up the project
An empty app running against your own database, plus a notes file so Claude Code keeps the three rules this build depends on in front of it.
PromptSet up the projectSet up a new React 18 + Vite + TypeScript project with Tailwind and the Supabase JS client. Read VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key, which replaces the older anon key) from .env, and add .env to .gitignore in the same step so neither value reaches GitHub. Add a typed Supabase client under src/lib, then write a short CLAUDE.md describing the stack and the vocabulary for an invoicing app (clients, quotes, invoices, line items, templates, tax rates) and recording three standing rules: every row belongs to the signed-in account and the database enforces that rather than the screen, money is stored as numbers in each document’s own currency and never converted, and any AI key lives in a server-side function and never in the browser.
Write the ownership rule down now. Filtering by the current user in the component is the first thing any assistant will reasonably do, and it would hand every account’s invoices to anyone who asked the database directly.
- 02
Add sign-in, the data model and the rules that keep accounts apart
Twelve tables, sign-up and sign-in, and an ownership rule on every one of them. There is no public side to this app, so the test is a second account that sees nothing.
PromptAdd auth, tables and ownership rulesAdd Supabase Auth with email and password: sign-up with a full name and a company name, login, logout, a persisted session and a useUser hook, plus a profiles row per account created by a trigger on sign-up. Then write the data model as migrations and show me the SQL before running it. Clients with name, email, phone, billing and shipping address, tax ID, account number, contact person and notes. Quotes with a number, a status of Draft, Finalized or Archived enforced by a database check and defaulting to Draft, the client’s details, a quote date and a valid-until date, a tax rate, a discount that is a fixed amount or a percentage, shipping, a currency code, notes, terms and a link to the invoice it became. Invoices with the same shape plus a due date, payment terms in days, payment instructions and bank details. A line-items table for each with description, quantity, unit price and a per-line discount. Tax rates, templates (a name and a settings JSON), settings as key and value JSON, and custom fields scoped to quotes, invoices or both, with a values table for each. Every table carries the owning account, has row-level security on, and lets a user reach only their own rows with explicit WITH CHECK clauses on insert and update, including line items through a function that checks the parent document’s owner. Show me how to verify a second account gets nothing back for the first account’s quotes.
The second account is the test that matters. If it sees one invoice, the ownership rule lives in the screen rather than the database, and every table after this inherits the leak.
- 03
Build the quote editor and the clients screen
The hard centre of the app. Lines that add up as you type, a discount that is an amount or a percentage, a tax rate, shipping, a currency from a list, and a client picked from file rather than retyped.
PromptBuild the quote editor and clientsBuild the clients screen: a list with search, and add and edit dialogs for every client field. Then build the quote editor: pick a client and fill their details, or type them in, add line items with a description, quantity, unit price and an optional per-line discount, and show the subtotal, a document discount as a fixed amount or a percentage, a tax rate chosen from my tax rates table, an optional shipping line and the total, all recalculating as I type. Let me choose the document’s currency from a list of about thirty common ones and format every amount with the browser’s own number formatting for that currency, without converting anything between currencies. Add a quote date, a valid-until date, notes and terms. Give the quotes list search, a status filter and a sort, and make the quote number the address of its detail page.
Test it with a percentage discount, a tax rate and shipping on the same quote, in a currency with no decimals. Arithmetic that is right in dollars and wrong in yen is the bug this row exists to catch.
- 04
Turn a quote into an invoice, and give both a lifecycle
Converting without retyping, revisions of a quote, sequential numbers, and the three statuses. No sent and no paid, because nothing here sends or takes money.
PromptAdd conversion, revisions, numbering and statusesAdd a Convert to invoice action on a finalized quote that creates an invoice with the same client, lines, discount, tax, shipping and currency, gives it the next number in the form INV-1, INV-2 and so on, links the two documents to each other, and opens the invoice editor with a due date and payment terms in days added. Add a Duplicate action on a quote that creates a revision numbered from the original, so quote R becomes R/1, then R/2, and make the routes handle a number with a slash in it. Then the statuses: Draft, Finalized and Archived on both documents, changed from the detail page, with the database refusing any other value. Build the invoices list and the invoice editor to match the quote screens.
The statuses are the whole workflow, so name them plainly. There is no sent and no paid, because this app does not email or take money, and adding those words to the list without the machinery behind them is how a status lies.
- 05
Build the PDF, the branding, and the AI template analyzer
What the client actually receives. A handful of PDF designs generated in the browser, your logo and colours on all of them with a live preview, and then the one AI feature: a design rebuilt from an invoice you already use.
PromptBuild the PDF designs and brandingGenerate the PDF in the browser with a PDF library. Build a template gallery with a handful of designs (a professional one, a classic one, a ledger-style one and a couple more), each rendering the document’s header, addresses, line items, totals, notes and terms in the document’s currency. Add branding settings: a logo uploaded to a storage bucket limited to 5 MB and image types, primary and accent colours, a font choice, and header and footer text, applied to every design with a live preview as I change them. Add a print-ready preview page per document with a Download PDF button.
PromptAdd the AI template analyzer, with a log and a ceilingCreate a Supabase edge function called analyze-template that requires a signed-in user, accepts an uploaded image or PDF of an existing invoice as a data URL, sends it to my AI provider with the key held in function secrets, and asks the model, through a forced structured tool call, for a layout specification only: colours, typography, header layout, address sections, the line-item columns, how totals are shown, footer and decorative elements. It must not read the invoice’s amounts or line items. Before contacting the provider, write a row to an ai_calls table and check the caller’s calls today against a limit read from settings. Save the returned specification as a custom template in the gallery, rendered by the same preview and PDF code as the built-in designs.
Say out loud that it extracts a layout and not the contents. A model asked to read amounts off a scanned invoice will do so confidently and wrongly, and this feature is worth more when it stays a designer than when it becomes a bookkeeper.
- 06Destination
Add the dashboard, reports, settings and demo mode, then use it as a stranger
The screens around the documents, then the check nobody skips twice: a second account, a downloaded PDF, and a currency with no decimals.
PromptAdd dashboard, reports, settings, demo, and testBuild a dashboard with counts and totals of quotes and invoices by status and the most recent documents, a reports page with cards for Draft, Finalized and Archived, a sortable table of every document with client, date, number and total, and CSV and PDF export of the table, an activity page listing recent changes to quotes, invoices and clients from their timestamps, and a settings page for the company profile, branding, tax rates, custom fields, numbering and the default currency. Add a demo account that is seeded with sample clients and documents when it signs in and wiped when it signs out, behind a Try the demo button on the landing page that I can remove before launch. Then run the app and walk me through it as a stranger: sign up a second account and confirm it sees no documents, create a quote in a currency with no decimals, convert it, download the PDF and check the totals on paper match the screen, and hit the analyzer limit on purpose and read what the app says.
Protecting your app: sign-in, user data, and AI keys
Your invoicing app manages sensitive information: client addresses, tax IDs, billing histories, and private API keys. Here are the essential security steps to review before launching.
Use your system’s built-in login
When users create accounts, log in, or reset passwords, let your backend system handle all the account security automatically. A dedicated user profile is created for every new sign-up. Stick with this standard setup without modifying it. Building custom login logic from scratch often creates hidden security flaws that you won’t notice until an unauthorized stranger accidentally gains access to your private financial records.
Every account keeps its own private data
The system comes with strict privacy rules configured across all your data tables. Every rule enforces the exact same boundary: client lists, quotes, invoices, itemized rows, visual templates, and personal settings belong exclusively to the account that created them. No other user can view or edit another person’s documents. Because there are no complex team roles, every user manages their own completely private business books.
Document statuses are strictly protected
The app allows only three official document states: Draft, Finalized, or Archived. These boundaries are enforced directly at the database level rather than just on the screen, meaning the system automatically rejects any attempt to invent unsupported statuses like "sent" or "paid." While this rule keeps your workflow clean and consistent, it does not automatically lock finalized invoices against editing, which remains a separate choice for your business.
Secure your AI features and set spending limits
The feature that sends uploaded invoice documents to your AI provider requires users to be fully logged in before it works. This double-layer check stops random visitors on the web from discovering your app’s address and spending your money. However, signing in only verifies who is using the tool: it does not limit how many documents they can upload. Treat unmonitored usage as a financial risk and set clear usage limits early.
Keep company logos public and documents private
The app includes one public storage folder designed specifically for company logos, accepting image files up to 5 MB. Anyone with the direct image link can view it, which is necessary for logos to render properly on printed invoices. Do not store anything else here. Scanned customer invoices, signed legal contracts, or confidential client paperwork must always be kept in a separate, password-protected private storage folder.
Keep AI secret keys hidden and protect client data
Your AI secret key must stay hidden on the server and never be sent to a user’s web browser, where tech-savvy users could easily steal it. Additionally, remember that using the AI analyzer sends actual invoice images to a third-party service. Since real invoices contain customer names, addresses, and payment totals, try to use blank templates or sample files whenever possible, and carefully review your AI provider’s privacy policies.
Remove demo buttons and add live project keys
The starter template includes a "Try the demo" button on the main page. This button signs visitors into a shared temporary account filled with sample documents, which are deleted when they log out. Before launching your app publicly, remove this demo button completely, replace the placeholder development keys with your real production account keys in your environment setup, and only then invite real customers to sign up.
Enable automatic daily backups before taking real payments
The free tier does not save automatic backups, which means your live database is the only existing copy of your business records. Upgrading to the $25/month plan enables automatic daily backups stored safely for seven days. You should activate this upgrade before sending your first paid invoice to a client, as financial records are legally required to be preserved safely for tax and accounting audits.
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.
Run this before launch to make sure nobody can see data they shouldn’t.
One rule outranks everything above it: the database service key and the AI provider key stay on the server, and neither one ever goes into the app a browser downloads or into a repository. Should either leak, assume it has been used, look at what your provider says was spent with it, and issue a new one the same day.
What speeds the build, and what slows it
Speeds the build
- A CLAUDE.md notes file that spells out your setup and preferences
- Asking for a plan first on anything that touches several files
- One change per request, small enough to describe in a sentence
- Pointing it at the two or three files that matter
- Running the app and checking each change before the next
- Saving a working version (a git commit) after each step, so you can undo
Slows the build
- Vague prompts like “make it better”, which leave it guessing what you meant
- Asking for a whole feature in one giant prompt
- Dumping the entire project into the chat at once
- Skipping the notes file, so it forgets your conventions each session
- Accepting changes without running or reading them
- No saved versions to roll back to when something breaks
Git: what it is, and why you need it
Before you build anything, meet the one tool that makes building safe. You need no coding background for it: Git remembers every version of your project, so you can try things, break things, and get back to a working state in seconds.
What Git actually is
Git is a quiet recorder that runs alongside your project. Each time you save your work it keeps a full snapshot, so the entire history of your project lives on your computer, not just whatever the files look like right now.
Why you need it
Claude Code runs inside a permission mode you choose, either asking before each change or working more freely once you trust it. Either way, experiments sometimes still break things. Git is what makes that safe: there’s always a working version to return to, so you can try bold changes without the fear of losing what already works.
A commit is a save point
Each commit is a snapshot with a short note, like “added the home page”. Make one after every working step and you can jump back to any of them later.
GitHub’s beginner guide to GitUndo anything, safely
If a change breaks something, you roll back to the last good commit instead of unpicking it by hand. It’s the safety net that makes bold experiments with Claude Code low-risk.
GitHub is Git’s home online
Git lives on your computer. GitHub is a free, private cloud copy of the same project. It’s your backup if your laptop dies, and the place Claude Code can always get back to. Keep it private, and never commit secret keys or passwords.
Create a free GitHub accountYou rarely type git commands
You do not have to memorize any of it. Ask Claude Code to “commit this” or “undo the last change” and it runs the git steps for you. Prefer clicking to typing? Claude Code’s own desktop app, which you install separately, shows each change side by side before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.
Get the Claude Code desktop appWhere to host your application
Hosting gives your app a home on the internet so anyone can open it via a web link. Choose a service below to make your site live. (Your database, logins, and business records are stored separately in Supabase, covered below).
| Host | Best for | Notes | Free tier |
|---|---|---|---|
| Vercel | One-click deploys | Link the repository once and each push goes live on its own. The routing file Vercel expects ships in the template, which is what lets a bookmarked invoice open on the invoice instead of the sign-in page. Hobby is for personal use only, and billing clients is a business by definition, so Pro at $20/user/mo is the plan. | Pro from $20/user/mo (Hobby is non-commercial) |
| Netlify | Drag-and-drop or Git | Either link the repository or drag the built folder onto the page, and the app is live within a minute. Take the redirect rule Netlify suggests, because without it a bookmarked invoice address opens a not-found page after sign-in. | Free tier |
| Cloudflare Pages | A team in more than one country | Serves the app from wherever the person opening it is, which matters for an accountant on another continent more than for a freelancer at one desk. The front end is a small static folder, and the PDF is drawn in the browser, so the host never sees an amount. | Generous free tier |
| GitHub Pages | Not this app | Publishes for free from a GitHub project, and it is here so you can cross it off: the free tier wants a public repository, and the code that bills your clients sits beside an environment file naming your database. | Free from a public repo only |
| Firebase Hosting | Teams already on Google | A short setup, then a single command each time you release, with the routing rewrite declared in its own config file. Pick it if your business already runs on Google accounts, since it offers an invoicing app nothing else on this list does not. | Free Spark tier |
| AWS Amplify Hosting | Teams already on AWS | Publishes from the AWS console, and needs the routing rewrite in place before a saved invoice address will resolve. Worth choosing only when your other bills already come from AWS, because a static folder is indifferent to where it is served from. | Free tier (build + hosting) |
| Surge | Publish from the terminal | A single terminal command puts the built folder online with no repository involved, which is fine for showing a partner the editor before launch and wrong for the address you sign in to every month end. | Free, unlimited publishing |
| DigitalOcean App Platform | DigitalOcean users | Builds and serves the static folder from an account a business may already pay for, so the database and the app sit with two suppliers rather than three. | Free: 3 static sites, 1 GB/mo transfer |
Two questions decide this, and neither is about speed. Does the plan permit commercial use, because an app that bills clients is a business and Vercel’s Hobby tier is not for one. And does a saved link to one invoice open that invoice after sign-in, which takes one routing rule on each of these hosts, with Vercel’s already in the template. Nothing on this app is public, so a search engine has nothing to index and that is fine. The host serves one small static folder, and every amount comes from your database.
The landing page’s Try the demo button signs any visitor into one shared account, and it ships turned on. The button logs a stranger into a fixed demo account, seeds it with sample clients and documents, and wipes them when they leave, which is right for a showroom and wrong for the address your clients see on a PDF. Before you launch, remove the button and its automatic sign-in as the code’s own comments describe, then open the landing page in a private window and confirm the only way in is your own account.
Keep your data in Supabase
Clients, quotes, invoices, lines, templates and settings in Postgres, a logo in one public bucket, accounts for the people who bill, and the single function that carries an uploaded design to your AI provider with the key held beside it and nowhere else.
| Service | Best for | Notes | Free tier |
|---|---|---|---|
| Supabase | Data, auth, the logo and the analyzer | Twelve tables in Postgres with the ownership rule written into their access policies, accounts from its auth service, one public bucket for logos with a 5 MB limit, and one edge function with the provider key in its secrets. Create a free project, hand over the URL and publishable key, push the migrations, deploy the function and set the key, and it is connected. The line to watch is the pause rather than storage: a free project sleeps after a week without activity, and a business that invoices at month end is idle for three. | Free tier, then usage-based |
How you collect payments from clients
By default, this app doesn’t handle transactions directly. Your bank details and payment instructions appear clearly on the invoice, allowing clients to pay via standard bank transfer, which costs you $0 in fees. For many businesses, this is the easiest and most cost-effective way to start. If you prefer adding a direct "Pay Now" button to your invoices, you can connect a payment provider, though each provider charges a small fee per transaction.
Two fees stacked: a slice of the invoice for the invoicing product and the ordinary card fee for the payment, and nothing per month. The right shape for an app that already makes the invoice and only needs a link a client can pay through, which is what this template would be asking for.
stripe.com · checked September 2026
Invoicing comes free with the account, and the meter is the card fee, which drops when you pay for the location plan you would buy for the till anyway. Worth it when the same business already runs a Square reader, because the money then lands in one place.
squareup.com · checked September 2026
The highest percentage of the three and the one many small clients already trust, so the question is who your clients are rather than what it costs you. International payments carry an extra one and a half percent, which matters for the reader billing in several currencies.
paypal.com · checked September 2026
A percentage has no size until you multiply it by your own month, so do that first. Twenty invoices of $500 paid by card in a month, $10,000 in all, costs roughly $336 through Stripe (the card fee, the 30 cents on each, and the 0.4% for the invoice), about the same through Square on the free plan, and roughly $309 through PayPal at its card rate. Bank details printed on the PDF cost nothing and arrive when the client gets round to it. Whichever you pick, the paid status and the reconciliation are yours to build, because the template has neither.
Add AI capabilities in one simple step
Securely route your AI API keys through a lightweight serverless function. The template has one already, the analyzer that rebuilds a PDF design from an invoice you upload. Use simple prompts to automatically cap what it can spend, draft line items from a plain description, write the overdue reminder, and turn a supplier’s invoice into a document you can edit.
Log every analyzer call and put a ceiling on it
The analyzer requires a login and then trusts it completely: nothing records what a call cost and nothing stops an account uploading all day. Build this before anything else below, because everything below spends money too, and pick a current model while you are in there.
Open the analyze-template function. Make the model name a setting I can change without a deploy, and set it to a current model on my provider’s price list that accepts images and structured tool calls. Add an ai_calls table that records every model call (which account, which task, which model, tokens in and out, a cost estimate, success or failure) and write to it from the function, successful or not. Then add a ceiling: a limit per account per day and a total across the whole app, both settings I can change without a deploy, checked before the function contacts the provider and returning a friendly “you have reached today’s limit” rather than an error. Do not let the browser send the limit or the cost. Then add a small usage panel to settings showing calls and estimated spend this month.
Draft the line items from a plain description
Most quotes start as a sentence in your head: three days of design, a print run of five hundred, delivery. Let a model turn that into lines with quantities and your usual prices, and keep yourself as the one who presses save.
Add a “Draft from description” box at the top of the quote editor. It sends my description and my last twenty finalized quotes’ line items to the ai function and gets back suggested lines with a description, quantity and unit price each, drawn from prices I have used before where they match. Fill the editor with the suggestions marked as drafts for me to edit or delete, never save anything until I do, and keep the totals recalculating as I change them.
Write the overdue reminder
The app knows the due date and the amount, and it knows the template sends nothing. A drafted reminder you paste into your own email is the version of this that stays honest about that.
Add an “Overdue” filter to the invoices list for finalized invoices past their due date, and a “Draft reminder” action on each that sends the client’s name, the invoice number, the amount, the currency, the due date and how many days late it is to the ai function and gets back a short, polite reminder in my company’s voice, with a firmer version for anything more than thirty days late. Show it in a box I can edit and copy, and record in the activity feed that a reminder was drafted, since this app does not send email.
Turn a supplier’s invoice into a document
The analyzer reads the look of an invoice and deliberately not its contents. A second function that reads the lines off a received invoice or a spreadsheet, with you confirming every figure, is the feature that saves the retyping.
Add a second function called read-invoice that requires a signed-in account, accepts an uploaded image, PDF or CSV of an invoice or a price list, sends it to the ai function and asks for the line items (description, quantity, unit price), the currency, the tax rate and the client details it can find, each with a confidence. Show the result as a prefilled draft quote or invoice with every figure the model was unsure about highlighted for me to confirm, and never save until I do. Log it and count it against the same ceiling as the analyzer.
Summarize the month in plain words
The reports page has the numbers. A paragraph that says what happened, in each currency separately because nothing here converts, is what you actually forward to a partner or an accountant.
Add a “Summarize this month” button on the reports page that gathers the documents finalized in the selected period, grouped by currency with no conversion between them, and asks the ai function for a short summary: what was invoiced, what was quoted and not yet invoiced, the largest clients by amount, and anything unusual compared with the previous period. Show it in a box I can edit and copy, and make clear which currency each figure is in.
Each prompt above picks the model that fits the job. As a rule of thumb, that is Haiku for high volume, Sonnet for everyday writing, and Opus for deeper reasoning. Model names move faster than this page does, so check the current list in the Claude docs (linked in the references below) before you build. Send every one of these prompts through that same ai function, so one key and one set of rules governs all of them.
Get a head start with our template
None of the steps above is compulsory, because the same app already exists, built: the editors add up, quotes become invoices, the PDF carries your brand and the analyzer rebuilds a design from an upload. Your time goes on your tax rates, your currencies and your logo.
Invoice & Quote Builder
The exact invoice builder this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. An invoicing and quoting workspace that takes a quote all the way to paid. You build line items with discounts, tax, and any currency, keep your clients on file, and export a clean PDF from a polished template branded with your own logo, colors, and fonts.
The key benefits of starting with a template
Document editors, instant conversions, status tracking, PDF templates, and financial reporting are ready right out of the box. Simply complete three quick setup steps before launching to your clients.
Building the core from scratch
~103 hrs
Opening the template, already built
~1 hr
Pay Once, Own Forever. Build exactly what your team needs without renting a monthly SaaS subscription, paying per-seat fees, or dealing with platform lock-in.
Automatic, error-free calculations
Create quotes and invoices with line items, individual item discounts, overall document discounts, custom tax rates, and shipping costs, all updating automatically as you type. Currency formatting (including zero-decimal currencies) is already configured so your financial numbers stay 100% accurate every single time.
One-click workflow & revision history
Convert finalized quotes directly into invoices with a single click, keeping all client details and line items connected. Keep your document history neat with numbered quote revisions, sequential invoice numbers, and clear tracking statuses (Draft, Finalized, and Archived) to manage your workflow effortlessly.
Custom-branded PDF document gallery
Choose from several clean document styles customized with your company logo, brand colors, custom fonts, and personalized headers or footers. Enjoy instant live previews as you edit, download print-ready PDFs anytime, and export clean financial reports for your records.
Complete data privacy & smart AI import
Enjoy complete account privacy with built-in security rules that ensure every client record, quote, invoice, and setting belongs exclusively to you. No unauthorized users can ever view your books. Plus, an integrated AI tool lets you upload an existing invoice design and instantly convert it into a matching template.
Three quick tasks before going live
Before opening your app to real clients, complete three simple setup checks: remove the public demo sign-in button, connect your live production keys instead of sample seller credentials, and set your preferred AI model with a spending cap. All three are quick administrative settings, not software development tasks.
From founders who build on our templates
A fantastic out-of-the-box solution that handles all our billing needs without monthly fees or client limits. Setup took minimal effort, and it easily matches 99% of paid invoicing platforms on the market. Highly recommended!
Jeevan ThomasFounder & CEO, Hado.aiCommon questions
Not as shipped. The template has a Send to client button that explains an email service has to be connected first, and nothing else behind it. Finalizing an invoice changes its status and sends nothing. You download the PDF and send it however you already send things, and adding a real send is the third decision above.
No. There is no payment link, no card form and no paid status, only payment instructions and bank details printed on the invoice. Taking money is a decision above and a block of its own, because the moment a payment rail is connected the app is handling money rather than describing it.
Each document has its own currency from a list of thirty, and every amount on it is formatted for that currency, down to currencies with no decimals. Nothing is converted between currencies, on purpose, because a conversion needs a rate and a date, and the template has neither. Reports total documents across currencies as plain numbers, which is worth knowing before you read one.
A tax rate per document, chosen from the rates you save in settings, plus a discount per line and a discount per document as an amount or a percentage. It does not know any country’s tax rules, so you set the rates and you decide which one applies to which client. Anything more, such as several rates on one invoice, is a change to the editor and the PDF together.
One thing. You upload a picture or a PDF of an invoice you already use, and a model returns a layout description (colours, typography, where the header and totals sit, which columns the lines have) that becomes a design in your gallery. It does not read the amounts or the lines off the invoice. The default model it calls has left the provider’s price list, so set a current one, and the first AI prompt adds the log and the ceiling the template lacks.
No. Say what the tables hold, who owns a row, how people sign in and what the one function does, and your AI coding tool writes each of them. What is left for you is a free Supabase project for it to point at and an AI key placed in the function’s secrets, so the records and the key both end up somewhere you own.
A database plan and a host, both starting free, plus a few cents each time somebody uploads a design for the analyzer. Supabase Pro at $25/mo is worth it from the first real invoice, because it adds daily backups and ends the free tier’s pause after a week of inactivity, and a business that invoices at month end is idle for three.
Only the account that made them. A client, a quote, an invoice, a line and a setting each carry the account that owns them, and the database checks that on every read and write rather than leaving it to the screen. The template ships no roles or teams, so two people who bill from the same company either share a login or wait for the team feature you build.
A Try the demo button on the landing page that signs in to a fixed account, seeds it with sample clients and documents, and wipes them again on sign-out. It is for showing the app off, and the code marks it for removal before you launch, because a public button into a shared account is not something you want on a billing tool.
It keeps its status and its number. Draft, Finalized and Archived are the only three states, so a finalized invoice is not locked by the database and can still be edited or archived from its page. If you want finalizing to freeze a document, that is a rule to add deliberately, and the fourth decision above is where to think about it.
Nothing here is proprietary. Clients, quotes, invoices and their lines sit in plain PostgreSQL tables, so a routine dump carries every one of them to any other Postgres host, and the reports page exports the document table as CSV whenever you like and the PDFs are already files on your disk.
Yes. Any of the hosts above will serve the app on a domain you already own, with the certificate handled for you, in a few clicks. Do it before the first client sees a PDF, because the address on a sign-in screen your clients never see matters less than the name in the PDF footer, and both should be yours.
No, though you will type the occasional command: installing Claude Code, starting the app, applying a database change. The setup section above lists what you need, with a link for each, and once it’s on your machine Claude Code runs most of those commands for you.
Claude Code turns the real code into an app you can publish, with a database and user accounts. An Artifact is a one-file preview, good for a quick look but not for going live.
Claude Code’s plans reset on a rolling window rather than billing per token, so a heavy day of building can bump into a limit. You either wait for it to reset or move up a plan. Max gives more headroom for a long, from-scratch build. Nothing you’ve already built is lost either way, so the work only pauses.
References
Sources checked September 2026- 01Pricing (Lite, Plus, Premium, per-user seats), FreshBooks. freshbooks.com
- 02Pricing plans (Early, Growing, Established), Xero. xero.com
- 03Pricing (free plan and its limits), Zoho Invoice. zoho.com
- 04Pricing (Starter, Pro, payment fees), Wave. waveapps.com
- 05Pricing (Starter, Business, per seat), PandaDoc. pandadoc.com
- 06Invoicing pricing (per paid invoice), Stripe. stripe.com
- 07Payments pricing (card and bank transfer fees), Stripe. stripe.com
- 08Invoices pricing (plans and card fees), Square. squareup.com
- 09Business fees (invoicing transactions), PayPal. paypal.com
- 10API pricing (current per-token rates), OpenAI. developers.openai.com
- 11Pricing (Pro plan, pause, backups), Supabase. supabase.com
- 12Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
- 13Row Level Security, Supabase docs. supabase.com
- 14Plans and pricing (Pro, Max), Claude. claude.com
- 15What is the Max plan?, Claude support. support.claude.com
- 16Set up Claude Code, Claude docs. code.claude.com
- 17Models overview, Claude docs. platform.claude.com
This guide is general information. Third-party prices, plan limits, payment fees and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. What one analyzed design costs depends on the model you point the function at and your provider’s rates on the day, so measure it on your own account before you budget for it. Build hours and the cost estimates derived from them are our own estimates, not quotes. Claude, Claude Code, and the Anthropic API are products of Anthropic. Verify current capabilities and pricing before relying on them.