Build with AI

How to build an invoice and quote builder with v0

Design the invoice first and let the rest follow. A quote editor, an invoice preview, a clients screen and a reports page built directly from simple English descriptions, then a real database behind them with an ownership rule, sign-in, one click from quote to invoice, and a branded PDF you download.

September 2026 · 49 min read · Updated September 2026

v0

$ Build the screens for an invoicing app (a quote editor with line items and live totals, an invoice preview, a clients list, a template gallery and a reports page), then wire in a database with sign-in where every row belongs to one account, quote to invoice conversion, statuses, and a branded PDF download.

  • Editor screens generated first
  • Database and rules added next
  • Ready to preview
You describe it, v0 builds it
Start here

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.

What you are building

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.

01

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.

02

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).

03

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.

04

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.

05

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.

06

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.

Build vs buy

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 · PandaDoc

Renting 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
FreshBooksLite at "$23.00 USD/mo" for "5 Clients", Plus at "$43.00 USD/mo" for "50 Clients", Premium at "$70.00 USD/mo" for "Unlimited" clients, with "Team Members ($11/mo per user)" and a "Yearly Extra 10% Off" toggle

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

XeroEarly at "$25 per month" after the promotion with "Send quotes and 20 invoices†", Growing at "$55 per month", Established at "$90 per month", with "No per-user license fees"

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

Zoho Invoice"$0 for Seamless and Stress-free Invoicing", with "Add up to two users", "Send up to 500 invoices per year" and "Powered by Zoho Invoice" branding

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

WaveStarter at "$0" with "2.9% + $0.60 per credit card transaction", Pro at "$19 USD/month Billed monthly" or "$190 USD/year Billed annually" to "Remove Wave branding" and "Add logo and brand colors"

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

PandaDocStarter at "$19 USD" per seat per month billed annually or "$35 USD" monthly, Business at "$49 USD" per seat per month billed annually or "$65 USD" monthly, with quotes from Business only

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.

No dev needed

Why build with v0

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.

v0 starts with the screens, and the backend comes when you ask for it: the server routes and logic that read and write real data, usually once the interface already exists and there is something real to connect it to:

The build loop
1

Sketch

Describe the screen or component you want.

2

Preview

See it rendered live, and select any part of it to adjust directly.

3

Connect

Add a database and the routes that read and write to it, once the UI needs somewhere real to save.

Iterate

Prompt again for the next screen or the next piece of logic.

Loop back to Describe

The order matters here more than with a full-app builder: v0 gets you a finished-looking interface fast, and the data underneath doesn’t show up until you ask for it and give it somewhere to live.

One clickconnects a database

Supabase, Neon, and Upstash are integrations you add from the project menu once a screen needs to hold onto something real, and v0 provisions the credentials and writes the routes that use them.

Live preview is the feedback loop

Every prompt updates the working interface right there in the chat, so you see the actual screen changing instead of imagining it from a description.

Design mode edits without a prompt

Select an element in the live preview, adjust its style directly or type a plain-language instruction, and v0 applies the change back to the real source code as a new version.

What it costs

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 v0

From scratch, with v0
v0
$0 ($5/mo of credits) to $30+/month (Plus)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting (Vercel)
Free on Vercel’s Hobby plan
Your time
~103 hrs

Free to try the idea, ~$30+/month on Plus while you build a real one, then whichever plan you keep using

v0 bills in dollars of credit rather than a flat fee, so cost tracks usage: importing the pre-built template can fit inside Free’s $5 a month, while a from-scratch build runs into Free’s 7-messages-a-day cap quickly and usually needs Plus, at $30 per user per month with no annual discount shown. Because v0 generates the interface and the backend as separate steps rather than one pass, expect more prompts to reach the same result than a tool that writes both together.

* 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, v0.app, v0.app and vercel.com, checked September 2026.

Plan first

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

Approaches

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.

~215 hrsBuilding by hand

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.

~160 hrsGeneric UI starter kit

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.

~103 hrsAI-powered development with v0

You describe the editor in plain words and it appears in a live preview, then the database, the ownership rules and the routes behind it are a second, deliberate ask. The check that matters: sign in as a second account and confirm the first account’s invoices never appear.

Interactive calculator

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.

What your invoice builder needs

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.

Setting up your workspace

Let’s set up the tools you need

v0 runs entirely in the browser too, so there’s no download and no terminal. Before step 01: sign up, pick a plan, and know that a database is one click away once a screen actually needs to save something. GitHub is the last piece, and it’s what turns the chat into a project you can hand to someone else.

1

v0 account

Cost: Free

Sign in with a GitHub, Google, or email account and you land in a chat where you describe the interface you want. There’s nothing to install.

Sign up for v0
2

v0 subscription

Cost: Free ($5/month of credits), then $30/month (Plus)

Free includes $5 of credits a month, capped at 7 messages a day, which is fine for trying a few screens and thin for a real build. Plus is $30 per user per month, billed monthly only (v0’s pricing page shows no annual option), and it’s the realistic floor once you’re iterating past a handful of screens.

Compare v0 plans
3

Database (Supabase, Neon or Upstash)

Cost: Free to start

Where your project keeps its data, added when a screen needs one. v0 generates the interface first. A database is a one-click integration you add from the project menu once a screen needs somewhere real to save to, with Supabase, Neon and Upstash as the options, and connecting one lets v0 write the routes that use it.

Connect a database in v0
Optional
4

GitHub connection

Cost: Free

Not needed to build anything, since v0 keeps its own history of every change. Connect a repository from the chat’s Git panel and v0 also commits every code-changing message to its own branch, ready to merge as a pull request. That is the step that turns the chat into a project other tools, and other people, can use.

Connect v0 to GitHub

The database step is the one worth not skipping once your screens need real data. Everything else here takes a couple of minutes, and after that you’re just describing what you want.

Step by step

Build your invoice builder, one chat at a time

v0 generates the interface first and the rest when you ask, which suits this template well: the quote editor is exactly the kind of screen worth having in front of you early, because its arithmetic is visible. Keep one feature to one chat so its history stays a line you can follow.

  1. 01

    Generate the quote editor before anything else exists

    Start with the screen you will live in. Placeholder clients are fine, and finding out that the totals column is in the wrong place now costs nothing.

    PromptSketch the editor and the screens around it
    Build the screens for an invoicing app. A quote editor with a client block, line items with description, quantity, unit price and a per-line discount, and a totals panel showing subtotal, a discount as an amount or a percentage, a tax rate, shipping and the total, recalculating as I type, with a currency chosen from a list and every amount formatted for it. A quotes list and an invoices list with search, a status filter and a sort. An invoice preview page with a Download PDF button. A clients list with add and edit dialogs. A template gallery with a handful of invoice designs and a branding panel with a logo, colours, a font and header and footer text. A reports page with three status cards and a sortable table. Use placeholder content for now. I will add the real database next.

    Placeholder data is fine here, and only here. Make the arithmetic real even now, because a totals panel that is wrong at this stage is wrong in every later step.

  2. 02

    Start a new chat for sign-in, the database and its ownership rules

    This is the step that turns a mock-up into an app somebody can be billed from. Sign-in and the ownership rule go in together, because the app has no public side and no row without an owner.

    PromptAdd sign-in, connect a database and design the model
    In this chat, add authentication with email and password (sign-up with a full name and company name, login, logout, a session) and connect a Supabase database. Create the tables and the API routes behind them. 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, quote and valid-until dates, a tax rate, a discount that is an 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. Line items for each. Tax rates, templates with a settings JSON, settings as key and value JSON, and custom fields scoped to quotes, invoices or both with a values table each. Every route checks on the server that the caller is signed in and reads or writes only that account’s rows, and every table has row-level security so the database enforces the same thing, line items included through the parent document’s owner. Make the editor and the lists read real data, and show me that a second account sees nothing.

    Ask for the routes alongside the tables. A schema with nothing reading it leaves the editor exactly as fake as it was, and a route without the database rule behind it is a rule anyone can skip.

  3. 03

    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 statuses
    Add a Convert to invoice action on a finalized quote that creates an invoice with the same client, lines, discount, tax, shipping and currency, numbers it INV-1, INV-2 and so on, links the two documents both ways 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 (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 through a server route, with the database refusing any other value.
  4. 04

    Make the PDF real, then tidy the designs with Design mode

    The designs you sketched become PDFs generated in the browser, with your branding on all of them. Spend the time you save on a proper visual pass.

    PromptBuild the PDF designs and branding
    Generate the PDF in the browser with a PDF library, one renderer per design in the gallery (professional, classic, a ledger style and a couple more), each with the document’s header, addresses, line items, totals, notes and terms in its currency. Wire the branding panel to real 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. Make the Download PDF button on the invoice preview produce the file.

    For visual fixes on the designs and the totals panel, select the element in the preview and use Design mode rather than describing where it sits. It is faster and it changes the real code.

  5. 05

    Start a new chat for the AI template analyzer

    The one AI feature, in its own chat: a design rebuilt from an invoice you already use, reading the layout and not the amounts, with a log and a ceiling from the first call.

    PromptAdd the AI analyzer
    In a new chat, add a server route that requires a signed-in user, accepts an uploaded image or PDF of an existing invoice, sends it to my AI provider with the key held in server environment variables, never in the browser, and asks the model, through a forced structured tool call, for a layout specification only: colours, typography, header layout, address sections, line-item columns, how totals are shown, footer and decorative elements. It must not read 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 specification as a custom template rendered by the same preview and PDF code as the built-in designs.

    Be explicit that the key lives on the server. v0 will otherwise reasonably reach for a client-side call, since the upload screen already exists and it is the shortest path.

  6. 06
    Destination

    Wire the dashboard, reports and settings, test as a second account, then open a pull request

    The screens around the documents get real data, then walk the whole thing through and merge, which, if that branch is the linked Vercel project’s production branch, also deploys it.

    PromptWire the rest, add demo, and ship
    Make the dashboard show real counts and totals by status and the most recent documents, wire the reports page to real rows with CSV and PDF export of the table, add an activity page listing recent changes to quotes, invoices and clients from their timestamps, and build a settings page for the company profile, branding, tax rates, custom fields, numbering and the default currency. Add a demo account seeded on sign-in and wiped on sign-out behind a Try the demo button I can remove before launch. Then help me walk the whole flow: 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 match, hit the analyzer limit on purpose and read what the app says. Once it holds up, publish and open a pull request for it.
Authentication & security

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.

PromptCheck who can see what
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.

Paste this into the chat before launch so v0 checks 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.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • One screen per message, checked in the live preview before you ask for the next one
  • Adding a database as soon as a screen needs to remember something, so v0 wires it up as it builds
  • Clicking the thing you want changed in Design mode, rather than describing where it sits
  • One feature per chat, so its history reads as a straight line you can walk back
  • Sending a finished chat over to GitHub before starting the next feature, rather than stacking several together

Slows the build

  • Asking for the whole app in one message instead of one screen at a time
  • Building screens for data the database does not hold yet
  • Describing which button to change when you could just click it
  • Letting one chat run for weeks, so going back to an older version undoes everything built after it
  • Approving several messages in a row without looking at the preview after each one
Getting code out of the chat

Connecting GitHub (Optional)

Every change in v0 is saved automatically without any technical setup. You only need to link GitHub if you want a private copy under your own control or plan to hand the codebase over to external developers.

Every message is a version

Each time a message changes your code, v0 saves it as a new version. Restoring an older one adds it back as the newest version instead of branching, so the history stays one straight line.

Versions, v0 docs

Undo from the chat itself

Scroll back through the conversation and click the revert arrow on any earlier reply, or open the version number in the top right to jump straight to a specific one.

Connecting GitHub creates a real repository

From the chat’s Git panel, connect an existing repository or create one. v0 never writes straight to your main branch: every code-changing message is committed to its own working branch first.

GitHub integration, v0 docs

A pull request is how it gets merged

When you’re ready, publish and open a pull request from that working branch into your base branch, review it like any other, and merge it. Starting a new chat picks up a fresh branch for the next round of changes.

This can also be v0’s deploy path

If the branch your pull requests merge into is also the linked Vercel project’s production branch, merging one triggers a production deployment. If it isn’t, the merge just follows whatever branch behavior that Vercel project is already configured with.

GitHub integration, v0 docs
Going live

Where 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).

HostBest forNotesFree tier
VercelOne-click deploysLink 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)
NetlifyDrag-and-drop or GitEither 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 PagesA team in more than one countryServes 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 PagesNot this appPublishes 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 HostingTeams already on GoogleA 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 HostingTeams already on AWSPublishes 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)
SurgePublish from the terminalA 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 PlatformDigitalOcean usersBuilds 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.

Database & backend

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.

ServiceBest forNotesFree tier
SupabaseData, auth, the logo and the analyzerTwelve 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
Getting paid

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.

Stripe InvoicingA Pay now link on a PDF or a page"0.4% Per paid invoice" on Starter or "0.5% Per paid invoice" on Plus with quotes, on top of "2.9% + 30¢ per successful transaction for domestic cards", with "no fixed fees or setup costs"

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

Square InvoicesA business that already takes cards in person"Get invoicing features included in any Square plan", with online and invoice card payments at "3.3% + 30¢" on "Square Free" and "2.9% + 30¢" on "Square Plus" at "$49/mo. per location"

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

PayPal InvoicingClients who already have a PayPal account"3.49% + fixed fee" for a PayPal or Venmo payment and "2.99% + fixed fee" for a card, with the fixed fee at "0.49 USD", plus "1.50%" on international payments and an optional "Invoicing Subscription 14.99 USD per month"

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.

AI workflows

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.

PromptLog every analyzer call and put a ceiling on it
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.

PromptDraft the line items from a plain description
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.

PromptWrite the overdue reminder
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.

PromptTurn a supplier’s invoice into a document
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.

PromptSummarize the month in plain words
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.

v0 doesn’t ship its own model for these prompts, so you bring an API key for whichever provider you want, and v0 writes the route that calls it. Start with a cheap model while you’re still iterating on the prompt itself, then swap in a stronger one for the version that ships, and keep every AI feature behind that one route so there’s only one key to rotate.

Ready-made option

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.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

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.

Customer story

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 ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common 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. You describe the screen you want in the chat and v0 generates the React and Next.js code behind it. Sign up, pick a plan, and connect a database once your screens need real data. The setup section above walks through each one.

Both, but not automatically at the same time. v0 generates the interface first. The backend (a database and the API routes that use it) is something you ask for once a screen actually needs to save or load real data.

Free plan credits reset monthly, and the 7-messages-a-day cap resets every day. If you hit either limit mid-build, what you’ve already built stays put. You wait for the reset or move up to Plus to keep going right away.

References

Sources checked September 2026
  1. 01Pricing (Lite, Plus, Premium, per-user seats), FreshBooks. freshbooks.com
  2. 02Pricing plans (Early, Growing, Established), Xero. xero.com
  3. 03Pricing (free plan and its limits), Zoho Invoice. zoho.com
  4. 04Pricing (Starter, Pro, payment fees), Wave. waveapps.com
  5. 05Pricing (Starter, Business, per seat), PandaDoc. pandadoc.com
  6. 06Invoicing pricing (per paid invoice), Stripe. stripe.com
  7. 07Payments pricing (card and bank transfer fees), Stripe. stripe.com
  8. 08Invoices pricing (plans and card fees), Square. squareup.com
  9. 09Business fees (invoicing transactions), PayPal. paypal.com
  10. 10API pricing (current per-token rates), OpenAI. developers.openai.com
  11. 11Pricing (Pro plan, pause, backups), Supabase. supabase.com
  12. 12Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  13. 13Row Level Security, Supabase docs. supabase.com
  14. 14v0 homepage. v0.app
  15. 15Pricing (Plus, Business), v0. v0.app
  16. 16Pricing details (Free tier, credit rollover), v0 docs. v0.app
  17. 17Databases (connecting Supabase and others), v0 docs. v0.app
  18. 18Full-stack apps, v0 docs. v0.app
  19. 19GitHub integration, v0 docs. v0.app
  20. 20Deployments, v0 docs. v0.app
  21. 21Design mode, v0 docs. v0.app
  22. 22Versions, v0 docs. v0.app
  23. 23Pricing (Hobby plan), Vercel. vercel.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. v0 is a product of Vercel. Verify current capabilities and pricing before relying on them.