Module

Finance

Native invoicing, quoting, expense tracking, and a real double-entry general ledger — built into Genosyn so AI Employees can read and write the same books a human accountant uses. Find it in the sidebar under Finance.

What ships

  • Estimates — quotations issued to customers before a sale. Convert any accepted estimate into an invoice in one click.
  • Invoices — billable documents with line items, tax snapshots, payments, and email / print-to-PDF rendering.
  • Recurring invoices — invoice templates that fire on a repeating schedule (monthly retainers, annual licences). Each run materializes a fresh invoice into the regular invoice list.
  • Bills — the AP mirror of invoices, for what your company owes vendors.
  • Vendors — the counterparties you purchase from, each with billing details, a tax ID, and a default currency. (Customers now live in their own Customers section.)
  • Catalog — reusable Products and Tax rates, snapshotted onto every line so editing a product never rewrites historical documents.
  • Ledger — chart of accounts, journal entries, trial balance, P&L / balance sheet / cash flow reports, bank-feed reconciliation, and accounting periods.

Estimates (quotations)

Estimates are pre-sale documents — proposed line items with prices, sent to a customer for sign-off. They do not affect the general ledger; only the invoice that an estimate converts into does.

Lifecycle

  1. Draft — fully editable. Click New estimate, pick a customer, add line items, save. The slug looks like edraft-xxxxxx until issue.
  2. Sent — clicking Issue (or Issue & send to email the customer) mints a gapless number prefixed with the customer's slug — e.g. ACME-CORP-EST-0001 — and locks the line items, so two customers' first estimates never both read EST-0001. The URL slug becomes the lowercased number.
  3. Accepted / Declined — record the customer's response from the detail page. Accepted estimates can be converted to invoices.
  4. Invoiced — once converted, the estimate keeps a link to the resulting invoice. The status badge flips to invoiced; the estimate becomes read-only.
  5. Expired — a synthetic status shown when validUntil has passed and the estimate is still in sent. Re-issue or void to clear it.
  6. Void — terminal cancellation, available on any non-draft estimate.

Convert to an invoice

From an accepted (or still-sent) estimate, click Convert to invoice. Genosyn copies every line verbatim, inherits the customer and currency, creates a draft invoice, and immediately issues it — which mints the next invoice number and posts the journal entry (DR Accounts Receivable / CR Revenue + Tax Payable) into the ledger. The original estimate stays in the system with its invoiceId set, so you can always trace which quote produced which sale.

Duplicate

Click Duplicate on any estimate (from the row menu or the detail page) to fork it into a fresh draft. The customer, currency, line items, notes, and footer are copied verbatim; issueDate resets to today and validUntil to thirty days out. The new draft has no number until you issue it, and the original is untouched — handy for re-quoting an expired estimate or sending the same package to a different customer (open the duplicate, switch the customer in edit mode, and issue).

Sending and printing

Every issued estimate has a Print / PDF view at /api/companies/:cid/estimates/:slug/html. Use it from the detail page's Print / PDF button —File → Save as PDF in your browser produces a clean A4 PDF with no app chrome. The same HTML is what the customer sees when you click Issue & send or Resend email, and that email now carries a PDF copy of the estimate as an attachment — delivered through whichever EmailProvider the company has configured.

Customers

Customers — the billable accounts you invoice — now live in their own top-level Customers section, alongside the people at each account and the signed contracts you hold with them. One detail stays relevant here: each customer's slug (auto-derived from its name, e.g. Acme Corpacme-corp) is uppercased and prefixed onto every invoice and estimate number issued to that customer, so numbers stay unique and self-identify across accounts.

Invoices

The invoice flow mirrors estimates with two extras: a dueDate and a payments ledger. Issuing mints the same slug-prefixed gapless number estimates use — e.g. ACME-CORP-INV-0001. Record cash, bank transfers, Stripe charges, or other receipts directly on the invoice; each payment posts a matching DR Bank / CR Accounts Receivable entry. Once the cumulative paid amount reaches the invoice total, the status flips from sent to paid. Sending or resending an invoice emails the customer the rendered document with a PDF copy attached, exactly as estimates do.

Duplicate works the same way as on estimates — from the row menu or the detail page, you can fork any invoice (even one that's already paid or void) into a fresh draft. Lines, customer, currency, notes, and footer come along; payments and status timestamps do not. The new draft picks up today as its issue date and a fourteen-day default due date, and stays unnumbered until you issue it.

Recurring invoices

Open Finance → Recurring and click New schedule to set up a template. Pick a customer, choose how often it should bill — every N days, weeks, months, quarters or years, on the day and at the time you set — and compose the line items just like a normal invoice. The count lets you say every 2 weeks or every 3 months, not just every one. A plain-English summary (for example Every 2 weeks on Monday at 9:00 AM) appears beneath the picker so you can confirm the cadence before saving.

Draft vs auto-send

Each schedule has an Auto-issue and email toggle. Off (the default), every tick lands as a fresh draft — you review and click Send on each one. On, the tick issues the invoice (minting its invoice number and posting the AR / Revenue ledger entry) and emails it to the customer through the company's configured EmailProvider — same path a human-sent invoice takes, so the email log captures it identically.

Pausing, ending, running now

From the detail page, Run now generates an invoice immediately without consuming the scheduled slot, useful for catch-up runs or testing the template. The More actions menu holds the lifecycle controls: Pause stops scheduled runs without losing the template and Resume restarts the next tick from now; End is terminal — the schedule becomes read-only but every invoice it already created stays in your books; Duplicate clones the template into a new, paused schedule so you can tweak and resume it without touching the original. Optional caps — max runs and end date — flip the status to ended automatically once hit.

Ledger and reports

Every state change on an invoice or bill emits a journal entry into the same ledger you can write to by hand from Finance → Journal. The chart of accounts seeds sensible defaults on first visit (1100 Bank, 1200 Accounts Receivable, 2100 Tax Payable, 4000 Sales Revenue, 4910 FX Gain, 6900 FX Loss), but you can rename, reparent, or add accounts freely as long as you don't touch the system codes the auto-posting depends on. From there, the Trial balance and Reports pages produce the standard accountant outputs (P&L, balance sheet, cash flow) with optional period comparisons.