Invoicing
Send invoices, track what you're owed, and issue receipts when you get paid — without leaving the CRM. Your customers are already here, so there's no second app and no list to keep in sync.
Set yourself up once
Fill in Settings → Business details first. Your business name, logo, address and contact details come from there. Anything left blank there is left out here.
Your business name, logo, address, contact details and tax id are in Settings → Business details; quotes use the same details. Settings → Invoicing holds the rest of what appears on every invoice you send, starting with the one people forget — how to pay you.
Payment instructions get their own block on the document. Bank details, a payment link, whatever your customers actually need. An invoice without them tells someone what they owe and not how to send it, which reliably produces a reply asking for your account number instead of a payment.
The same screen sets your numbering (prefix, digits, and where the sequence is now) and the defaults new invoices start from — currency, payment terms, and your standard note and terms text.
Nothing here is required. An invoice with all of it blank still works; it just says less.
There's no separate "customers" list
Invoices are raised against the contacts and companies you already have. Open a contact and give them a billing profile — their currency, payment terms, billing address and tax id — and every invoice you raise for them picks those up automatically.
That's the whole point of the profile. If one client pays in Barbadian dollars on 14-day terms and another pays in Canadian dollars on 30, you set it once and stop thinking about it.
A contact with no billing profile still works fine. You just pick the currency and due date yourself each time.
Items, priced in each currency you bill in
If you sell the same thing repeatedly, save it as an item — a service, a session, a product.
The useful part is that one item can hold a different price in each currency:
Standard therapy session
BBD 200.00 · USD 100.00 · CAD 150.00
Those aren't conversions of each other. They're the prices you actually charge in each market, and they stay the round numbers you chose. Other invoicing tools make you create a separate item per currency — three services in three currencies becomes nine items, and three places to forget a price change.
Bill in a currency you haven't priced and Groundbase converts from the item's base price, so nothing blocks you.
Quotes — price it first, invoice it after
A quote is a priced offer the customer can say yes to. It lives beside invoices under Billing, is built on the same screen with the same saved items and currencies, and turns into an invoice with one click once it's accepted.
Making one. Billing → Quotes → New quote. Pick the customer, add the lines,
and set a valid until date (30 days from the issue date unless you change
it). Save it as a draft or issue it straight away. Issuing gives it a number
(QT-0001, on its own sequence, so it never collides with an invoice number)
and freezes the amounts, exactly like issuing an invoice.
Sending it. Send emails the quote, from your own address or Groundbase's (the same choice as for invoices, below), with a link to a page where the customer can read it and press Accept. They type their name; that, the time, and where they accepted from are recorded on the quote. There's a No thanks button too, and a declined quote tells you so.
Asking for a deposit. Set a deposit as a percentage or a fixed amount. Then accepting online means paying it by card, through your own Stripe account (see Taking card payments). The quote only becomes accepted once Stripe confirms the payment, so someone who starts a checkout and closes the tab leaves it open. Because of that, a quote with a deposit can't be issued until Stripe is connected — it's better to hear that from the app than from a customer looking at a button that doesn't work.
When they say yes another way. A yes on the phone or in person: open the quote and press Mark accepted, and note who said it. A deposit isn't collected that way; record it as a payment on the invoice once you have it.
Expiry. An open quote past its valid-until date shows as Expired and the link stops letting the customer accept. You can still mark it accepted by hand if they come back late, or void it and raise a new one.
Turning it into an invoice. On an accepted quote, Create invoice makes a draft invoice with the same lines and totals. A deposit the customer paid is already on it as a payment, so the invoice shows what's left to pay. Issue it when you're ready to bill. The quote and the invoice link to each other.
Voiding. A quote that's been issued is voided rather than deleted, so its number stays in the sequence. The customer's link then says the quote was withdrawn.
Automations. Workflows and webhooks get quote.issued, quote.accepted
and quote.declined. "When a quote is accepted, text me and make a task to
send the invoice" is a workflow, not a habit. A workflow can't create the
invoice itself: open the accepted quote and press Create invoice.
Drafts and issuing
A new invoice is a draft. Drafts have no number, can be edited freely, and can be deleted without leaving a trace.
Issuing is the moment it becomes real. Groundbase gives it its number, locks the contents, and freezes the exchange rate. After that the invoice can't be edited — only voided.
That sounds strict, and it's deliberate. An issued invoice is a statement of an amount someone owes. If it quietly recalculated because an exchange rate moved, the amount owed would change after the fact.
Invoice numbers have no gaps. Numbers are handed out at issue rather than at creation, so drafts you abandon don't leave holes in the sequence. If you void an issued invoice it keeps its number — a missing number in a run of invoices is exactly what an auditor looks for.
Sending it
Issuing and sending are separate on purpose. Issuing is bookkeeping; sending is a message to a customer. Plenty of invoices are handed over in person, and a failed email should never leave an invoice half-issued — issuing burns a number, and that is not fixable afterwards.
So an issued invoice sits there until you press Send invoice, and you can send it again later without anything changing.
Pick who it comes from in the From list: your connected email accounts and send-as addresses, and Resend if you've set it up. It goes to the billing email on the customer's profile if they have one, otherwise to the address on their contact record.
No email connected yet? It can still go. The last choice in the From list, and the only one until you connect your own, is Groundbase's address. Your customer sees "Your Name via Groundbase" from invoices@groundbasecrm.com, replies go to your login email, and a line at the bottom tells them a reply reaches you. Your account email has to be confirmed first, and Groundbase's address sends at most 20 documents a day per account. An invoice from your own address is more familiar to your customer and less likely to land in spam, so connect one under Settings → Email when you can. Payment reminders and recurring invoices set to send automatically follow the same rule: your own email if you've connected one, otherwise Groundbase's address, and they count toward the 20 a day (see Which address your emails come from).
The invoice is attached as a PDF as well as being in the email and at its online link, since many accounts departments file the attachment. Untick Attach the invoice as a PDF in the send dialog to leave it off. The PDF uses a standard font, so an unusual character (a currency sign like ₹, or an emoji) shows as "?" in the PDF only; the email and the online copy show it properly.
Repeating an invoice
For a customer you bill the same amount on a schedule, open the invoice and use Repeat in the right-hand column. Pick how often (every week, month, three months or year), the date of the next one, and an optional date to stop. On each date Groundbase makes a new invoice from this one: same customer, lines, prices, tax, discounts and charges, dated that day, with the same number of days until it's due. Time you tracked is not copied, so it can't be billed twice.
By default the new invoice is a draft for you to check and send. Tick Issue and email it automatically to have it numbered and sent to the customer without you, from your own email if you've connected one, otherwise from Groundbase's address. If one can't be made (say the original was deleted), the Repeat box says why and it tries again the next day. A schedule that starts on the 31st bills on the last day of shorter months and goes back to the 31st when it can. If your subscription had lapsed when invoices were due, those periods are skipped rather than billed late: once your subscription is active again you get one invoice for the current period, dated that day, and the schedule carries on from there. Stop repeating ends it; invoices already made stay as they are.
Lines, discounts and charges
Each line takes a quantity, a price and an optional discount. A discount comes off before tax, which is the correct order — taxing first would charge tax on money nobody paid.
Taxes are set once for the whole invoice or quote, under Taxes beside the totals. Add one or several, each with a name and a rate: HST 13% in Ontario, or GST 5% and QST 9.975% in Quebec. Each tax is worked out on its own and gets its own line on the invoice, the PDF and the customer's payment page, the way the tax authorities expect to see them. Fill for a province sets the usual Canadian taxes for you (check them against your own registration); Add a saved tax adds one of your saved rates; Add tax lets you type any name and rate, so a US sales tax or a VAT works the same way. Up to five taxes on one document.
Each line has a tick for each tax, all ticked to start with. Untick a tax for a line it doesn't apply to: in British Columbia, for example, labour usually carries GST but not PST. A saved item whose own rate is 0% starts with every tax unticked.
Tax rates you use often go in Settings → Invoicing → Saved items, under Tax rates: name each one (HST 13%, GST 5%, QST 9.975%) and mark one as the default. A new invoice or quote starts with the default. Changing a rate later doesn't touch invoices already made.
Invoices and quotes made before taxes worked this way open as they were: their rates become taxes on the document, with the same amounts.
Tax-exempt customers. In a customer's billing details, tick Tax exempt and no tax is charged on their invoices and quotes. Their own tax or exemption number, if you enter it, is printed under their address.
Below the subtotal you can add charges: shipping, a rush fee, a call-out, or a negative amount for a deposit already received. Each one has the same tax ticks, unticked to start with, because whether shipping is taxed depends on where you are. A discount starts with every tax ticked, since in most places a discount at the time of sale lowers the tax too.
Every line is rounded on its own and then added up, so the column your customer reads always sums to the total they're asked to pay.
Currency on the document
An invoice shows one currency — your customer's. They see BBD and nothing else.
Groundbase stores the exchange rate on the invoice so your own totals can be reported in your base currency, but that conversion is for your books. It never appears on anything your customer receives.
Taking card payments (Stripe Connect)
Recording payments by hand is the default, but you can also let customers pay the invoice by card from the page you send them.
Connect once. Settings → Invoicing → Connect Stripe. You'll be sent to Stripe to authorise the connection and returned to Groundbase. If you don't already have a Stripe account you can create one during that step.
The money goes to you, not through us. Groundbase uses Stripe Connect with direct charges: your customer pays your Stripe account, and Groundbase never holds or routes the funds. We take no fee and no percentage — Stripe's own processing rates are the only cost, and they bill you directly, exactly like Twilio and Resend. There is no payout to wait for from us because the money was never ours.
What your customer sees. Once connected, the hosted invoice page you share gains a Pay button. Clicking it opens Stripe Checkout with the invoice amount and currency filled in. They don't need a Groundbase account, and nothing about the page changes if you later disconnect — it simply stops offering the button.
The payment records itself. When Stripe confirms the charge, Groundbase writes the payment against the invoice, moves it to paid (or part paid), and sends the receipt the same way as for any other payment. You don't record it manually, and refreshing the success page won't record it twice.
Disconnecting is one button in the same place. Existing invoices stay exactly as they are — paid ones keep their payment history — and new ones stop offering card payment.
Getting paid, and receipts
When money arrives, record it against the invoice. Partial payments are normal — the invoice moves to part paid and shows what's left.
A receipt goes to your customer automatically. It states what was paid, when, by what method, which invoice it was applied to, and the balance still outstanding — plus every earlier payment, so someone paying in instalments sees the running total rather than three documents that each look like the only payment they made.
A receipt carries its invoice's number (invoice 540's receipt is 540; a second payment on the same invoice gets 540-2, and so on), and it sends from the same place as the invoice: your own email address if you've connected one (an email account or Resend, under Settings → Email), otherwise Groundbase's address, with replies going to you.
Recorded a payment by mistake? Reverse it. The entry stays visible in the ledger marked reversed, and the balance recalculates. Payment history is what you reconcile against your bank statement, so it should never silently change.
Refunding a card payment. A payment the customer made with the invoice's Pay button has a Refund button next to it. Enter the amount (or leave the full amount) and Groundbase refunds it through your Stripe account; the customer usually sees it in 5 to 10 business days. The refund appears in the ledger as its own line with a minus amount. Every refund also adds a credit note for exactly the amount refunded, so the invoice doesn't ask for that money again: a paid invoice stays paid, and there's no Pay button or reminder for money you chose to give back. An invoice that was only partly paid still owes the part nobody paid. You can refund part of a payment and the rest later. A payment you recorded by hand was taken somewhere else, so refund it there and record that here.
Credit notes. To take something off what a customer owes after an invoice is issued (a late delivery, a returned item, a goodwill discount), open the invoice and use Issue credit under Credit notes. Enter the amount before tax, the tax (on an invoice with its own taxes, tick which ones apply, all to start with, and the credit note shows each one; on an older invoice, the rate, filled in when every line has the same rate) and a reason, which is printed on it. It gets its own number (CN-0001, CN-0002…), appears in the payments list as a credit, and lowers the balance by its total. Send emails it to the customer with a PDF; PDF opens it. A credit can't be more than what's still owed: to give back money already paid, refund the payment instead. Void cancels a credit note and puts the balance back; its number stays used, so the numbering has no gaps.
Overpaid? Groundbase records it and tells you, rather than refusing the entry. Money arriving is a fact regardless of what the invoice expected.
Knowing who owes you
The Invoices screen opens on the question you actually have: what's outstanding, and what's late.
Outstanding is shown per currency rather than merged into one figure. A single converted number across three currencies is a number that exists nowhere — it changes with the exchange rate, while every invoice keeps the rate it was issued at.
Lateness is shown in days, because "47 days late" is read at a glance where a due date has to be worked out.
Reports: who owes what, money in, tax
Billing → Reports has three reports, on web and desktop. Each downloads as a spreadsheet (CSV) for you or your accountant, and each keeps currencies apart.
- Owed — every unpaid invoice, today, sorted into not yet due, 1–30, 31–60, 61–90 and over 90 days late: a total per customer and a row per invoice. A credit note reduces what an invoice is owed, as it does everywhere else.
- Money received — payments by the month they arrived, with refunds taken off. A credit note is not money received, so it is left out.
- Tax — tax on the invoices you issued in the dates you pick, by tax (GST, QST and so on, each on its own row) and rate, less the tax on credit notes issued in those dates. Drafts and voided invoices are left out. This is the tax you charged, by when you invoiced it; check with your accountant how you file (some businesses report tax when they're paid).
Your AI assistant can read the same three reports.
On your phone
The mobile app carries the part of invoicing that happens away from a desk: what's outstanding, who's late, issuing and sending an invoice, copying its pay link, recording a payment the moment it lands and sending the receipt, and voiding. Drafting an invoice and its line items stay on desktop and web — a line-item editor belongs on a screen with room for it.
Doing it by chat
Every part of invoicing is available through the MCP server, so you can raise an invoice, issue it, or record a payment by asking Claude. See AI integrations for setup.
Two things worth knowing when you do: issuing is one-way, and recording a payment emails your customer a receipt. Both are worth confirming before you ask for them.