Create invoices, track payments, and configure payment processing.
Invoices can be created manually from Admin → Invoices → + New Invoice. Pick a customer, invoice an email address directly for walk-ins, or skip both fields entirely for cash sales and paper-in-person receipts — you can attach contact info later from the invoice detail page via Add recipient. Add line items with descriptions, quantity, unit price, and taxability, then either save as a draft to keep refining or issue it to bill the customer right away. Payment is recorded later — Square, cash, or e-Transfer — from the Invoices or Payments page.
Drafts stay editable: click Edit on a draft row to change the customer, line items, or notes, and flip the status to Issue when the invoice is ready to bill. Drafts can also be Deleted outright; issued invoices are immutable and can only be cancelled or refunded.
Invoices are also created automatically when a student enrolls in a course or completes a shop checkout.
If the customer paid cash or sent an e-Transfer before the invoice was created, pick Mark as paid in the create form. Record the method, any reference, and the date you received the money. The invoice is saved as paid and the Payment ledger logs the entry — no follow-up Mark paid click needed.
When the total works out to $0 (100% discount, comp, all-$0 lines), the invoice is automatically saved as paid — no method needed. Drafts at $0 stay drafts so you can come back and add line items later.
Use the per-line %/$ inputs on the line item, or the Invoice discount section above the totals for an across-the-board reduction. Both flow through to the PDF and to the customer email.
Drafts can be deleted or soft-cancelled. Issued invoices that haven't been paid can be cancelled, or Edit (cancel & reissue) will cancel the original and open a new draft with the same line items so you can fix the mistake. After cancelling an issued invoice you'll see a one-click Notify customer button.
If staff sent a manual invoice when the customer should have been enroled in a course, open the invoice's detail page and click Convert to enrollment. Pick the schedule, confirm the customer, and the booking shows up on the manifest with the existing payment intact.
Click the description field on a new line and you'll see your shop's most-used items. Selecting one fills the description, last price, and taxable flag — saves typing the same items over and over.
For phone, email, or pickup-style orders that haven't been paid yet, use Admin → Orders → + New Order. Select products and quantities, optionally attach a customer and shipping address, and save. The order sits in Pending on the orders page — stock isn't decremented until the order is paid, and a sidebar badge reminds you to follow up. Record the payment when it comes in and the order rolls forward like a normal sale.
When an admin creates a pending order and the customer has an email address on file, the platform automatically creates an Issued invoice and emails it to the customer. On the Pro plan, the email includes a Pay online link so the customer can pay by card through Square directly — no account login required. On the Starter plan the invoice is still issued and emailed, and the shop records a manual cash or e-Transfer payment from the admin panel whenever the customer pays; the invoice and order both update automatically.
Logged-in customers can also pay their outstanding invoices from their account at Account → Orders → Pay — the same Square payment form, just authenticated. Both paths mark the invoice paid and decrement stock in one step.
Existing pending orders created before this feature shipped can be backfilled: run the provided script to issue invoices and send the pay emails in bulk. Only orders with a linked customer email and no existing invoice are affected.
A pending order with an unpaid invoice stays editable until it's paid. From the order's detail page click Edit to add or remove product lines, change quantities, and apply manual order-level or per-line discounts. On save, the order and its invoice are re-synced and the updated invoice is re-emailed to the customer automatically — with the same Pay online link (Pro plan), so they always have the latest total to pay. Once the order is paid it can no longer be edited.
Configure your tax label, rate, and registration number under Admin → Configuration → Tax. The rate is applied to the invoice subtotal and the registration number appears in the invoice footer. Examples: HST 13%, GST 5%, VAT 20%. Set the rate to 0 to disable tax.
Tax is applied per item. Products, courses, and course add-ons each have a Taxable checkbox (defaulted on) — uncheck it for tax-exempt items. Discount and store-credit lines reduce the taxable subtotal proportionally; if the cart is entirely tax-exempt, no tax is charged.
Migrating from another platform? Set a custom starting invoice number under Admin → Configuration → Invoice numbering so your sequence picks up where you left off (e.g. start at INV-1500). Once invoices have been issued, raising the value jumps the next number forward; lowering it has no effect.
Every invoice can be downloaded as a PDF from the admin panel. The PDF includes your shop logo, name, invoice number, line items, and totals. PDFs are also attached to booking confirmation and order confirmation emails.
From the invoice detail page, you can email the invoice directly to the student. The email includes the invoice PDF as an attachment.
For outstanding balances, send a payment reminder email from the admin panel. The reminder includes the amount owing and a link to your site.
Enrollments booked with a deposit (see Deposits & Balance Due in the Courses & Scheduling doc) don't need a manual nudge — the platform automatically emails an early reminder as the balance-due date approaches and a final reminder once it's due, linking straight to the customer's account to pay it off.
Online payments are processed through Square. Configure your Square credentials under Admin → Settings. Once connected, the checkout flow handles payment processing and records the transaction against the invoice.
When a customer pays in person or by Interac e-Transfer, an admin can record the payment from the invoice, order, or enrollment row by clicking Record Payment. Method, reference, note, and received date are stored on the record and the transaction surfaces on the unified Payments reconciliation page (/admin/payments), with CSV export. That page also summarizes money in, refunds out, the net, and a live Pending (owed)total — the outstanding balance still owed across issued invoices, pending orders, and unpaid or partially-paid enrollments.
Refunds going back out (cash, e-Transfer, or Square) are captured the same way during the cancel & refund flow.
Record what the shop spent at Admin → Sales → Expenses. Pick a category (boat charter, fuel, park fees, rent, insurance, software, air analysis, gas supplier, 3D printer materials, equipment, etc.), enter the amount and vendor, and optionally link the cost to a specific schedule — that turns the line into a per-event expense and makes it easy to calculate the net on a dive charter or trip. Leave the schedule blank for shop-wide overhead. Vendor names autocomplete from prior entries so the same supplier is spelled consistently across the books. The page totals everything in the date range and breaks it down by category.
Expenses tied to a schedule also appear on that schedule's edit page so the cost and the booking sit side-by-side. Instructor pay is tracked separately under Instructor Pay; expenses cover everything else.
When an owner takes shop products for personal use, or has work done on their own gear, record it as owner's draw rather than a sale. Internal use is captured at cost basis — it never counts as revenue and is not an expense or a loss, so it stays out of your P&L. Stock is decremented for product lines just like a sale, keeping inventory accurate.
There are two ways to log it. From a completed (or in-progress) service job, click Record as internal use on the job page to book the service's labour cost as owner's draw instead of invoicing the customer. For consumption that includes products — or ad-hoc use with no job — use the standalone form at Admin → Internal use, where you pick the owner, the products consumed, gas fills, other non-catalog items, and any shop labour cost.
Gas fills are free-text lines for consumables like helium or oxygen that aren't tracked as products — enter the gas name, a volume, and a unit cost, and the line costs out at volume × unit cost. Volume is entered against a single shop-wide unit (cubic feet or liters), and gas lines are cost-only — they don't decrement stock.
Other lines are free-text entries for anything not in the catalog — gear that was never stocked, or a portion of a shop expense such as accommodations or a charter. Enter a description, quantity, and unit cost; the line costs out at quantity × unit cost and, like gas fills, does not decrement stock.
Only team members designated as an owner can be the consumer on a record. The owner flag is set by a platform administrator on the user list; it is not something shop staff can toggle themselves.
Everything recorded this way is summarized on the Internal Use page and exported to its own internal-use CSV (see Accounting Export below) so it is easy to hand to your accountant at tax time, separate from sales and expenses.
Export your books for any date range as CSV from Admin → Accounting Export. The CSV is RFC 4180–compliant and imports into QuickBooks, Xero, Wave, FreshBooks, and Sage. Available formats: invoice summary (one row per invoice — best for AR reconciliation), line item detail (one row per invoice line item — best when mapping revenue to specific accounts; each line carries a Y/N taxable flag), expenses (one row per recorded expense, with category, vendor, scope, and the linked schedule when present), and internal use (one row per owner's-draw record, at cost basis). Draft invoices are excluded.
Quotes are admin-only, non-binding estimates. They carry their own QUO-#### number (separate from invoices) and never consume an invoice number — the invoice sequence is only touched when a quote is converted.
You can set a Valid Until date on every quote. Every quote — screen, PDF, and email — displays an approximate-pricing disclaimer so customers understand the figure is an estimate.
From the quote detail page you can Email PDF to send the quote directly to the customer as a PDF attachment.
When the customer confirms, click Convert to Invoice. The platform opens a new draft invoice pre-filled with the quote's line items. The original quote is kept and marked Converted with a link to the resulting invoice.
If a quote has already been sent and you need to change it, edit the quote normally. Saving a sent quote supersedes the previous version and creates a new revision — the old version is retained for reference and the customer should be emailed the updated PDF.
Across the Invoices, Orders, and Enrollments admin tables, cancelled and refunded rows are tinted and the original amount is struck through so they are easy to spot. Each refunded row shows the refund amount in red and links directly to the matching Square refund transaction (when the refund was sent back through Square).
On the Enrollments table, a cancellation that was paid out as cash shows the refund line, while a cancellation that was converted to store credit instead shows a blue → Credit line with the amount granted — so it's clear at a glance whether the customer was made whole in cash or in credit.