Finance
The Finance module is where your company's money moves are recorded: what you bill (invoices, recurring invoices, payments), what you spend (expenses, recurring expenses, credit notes), where the money sits (bank accounts), and what it all adds up to (reports).
This article is the hub for the module — it explains how Finance is organised, what each area is for, and where to go next.
Who can use it
- Admins and any user whose role grants Finance permissions in Settings → Roles & Permissions.
- Permission levels are set per record type: None, Added (records the user personally added), Owns (records assigned to them), or All.
- Clients see only their own invoices, estimates and payments in the client portal — never other clients' finance data.
If someone reports that a Finance page or record is missing, check Roles & Permissions first, then have them log out and back in — permission changes do not always apply to an already-active session.
Prerequisites
Before you start invoicing, set these up once:
- Settings → Currency Settings — set your default currency (USD, GBP, EUR, AED, CAD and AUD are available out of the box, and you can add custom currencies). Exchange rates are calculated relative to the default currency.
- Settings → Tax Settings — add each tax you charge, with a Name and a Rate (%).
- Settings → Finance Settings — invoice settings, invoice template (five built-in templates), prefix settings, units and invoice payment details.
- Settings → Payment Credentials — only needed if you want clients to pay online.
- Bank Accounts — at least one Bank or Cash account, so invoices, payments and expenses can be attributed to it.
How to Access
- Finance Dashboard —
/account/finance-dashboard - Invoices —
/account/invoices - Payments —
/account/payments(quick-create:/account/payments/create) - Credit Notes —
/account/creditnotes - Expenses —
/account/expenses - Bank Accounts —
/account/bankaccounts - E-Invoice —
/account/einvoice - Finance Report —
/account/finance-report - Income vs Expense —
/account/income-expense-report - Expense Report —
/account/expense-report

How Finance is organised
The module's navigation is grouped into four sections.
Revenue
Dashboard — the module's summary view at /account/finance-dashboard. Expense and revenue totals are converted into your default currency, so mixed-currency records roll up into one comparable figure.
Invoices — auto-numbered with an INV# prefix (changeable in Finance Settings → Prefix Settings). Header fields include Invoice Number, Date, Due Date, Currency, Exchange Rate, Client, Project, Calculate Tax, Bank Account, Payment Details, Billing Address and Shipping Address. Line items carry Product, Description, Quantity, Unit Price, Tax and Amount.
Two independent statuses are tracked:
- Payment status — Unpaid, Partially Paid or Paid.
- Send status — Not Sent / Sent, tracked separately from payment status.
There are three creation paths: Create Invoice (manual), Recurring Invoice, and Create TimeLog Invoice, which auto-populates line items from time logged against a project. An estimate can also become an invoice via the Convert button on the estimate itself.
Recurring Invoices — set Client, Project, Currency, Calculate Tax and Bank Account, then a Billing Frequency (Daily, Weekly, Monthly and so on) and a Total Count. Setting Total Count to -1 means infinite — the series runs with no end date. A preview panel shows the upcoming generation dates before you save. The Client can stop recurring toggle lets the client cancel the series from their portal; leave it off and only an admin can stop it.
Payments — record a payment against a Project and Invoice with Paid On, Amount, Currency, Exchange Rate, Transaction ID, Payment Gateway, Bank Account, a receipt upload and a Remark. Deleting a payment row removes only that payment — the invoice stays.
Online payments settle through the gateway's own confirmation, so an invoice flips to Paid once the gateway reports the payment back to PMSuite rather than at the moment the client submits it.
Spending
Expenses — fields are Item Name, Currency, Exchange Rate, Price, Purchase Date, Employee, Project, Expense Category, Purchased From, Bank Account, Description and a bill upload. Status values are Pending, Approved and Rejected. Expenses can be imported and exported.
Recurring Expenses — the same field set as Expenses, plus Billing Frequency and Total Count (with the same -1 = infinite convention as recurring invoices).
Credit Notes — listed under the Spending group and issued against an existing invoice. Credit note numbering has its own prefix (default CN#001) in Finance Settings → Prefix Settings.
Banking
Bank Accounts — each account is either type Bank or Cash, with Sort Code, Bank Name, Account Holder Name, Account Number, Account Type (Saving/Current), Currency, Contact Number, Opening Balance, Status and a Bank Logo.
Reports
- Finance Report —
/account/finance-report - Income vs Expense —
/account/income-expense-report - Expense Report —
/account/expense-report
Payment gateways
Configure gateways in Settings → Payment Credentials. The gateways to use are Stripe, Mollie, Authorize.net, Square and the Offline Payment Method.
For Stripe you'll need your Publishable Key, Secret Key and Webhook Signing Secret; plus the Webhook URL, and you can toggle between Test and Live environments before going live.
⚠️ Razorpay, Paystack, Flutterwave and PayFast tabs may still render in Payment Credentials, but they cannot process a payment. Do not configure them. Use one of the gateways listed above, or the Offline Payment Method and record the payment manually.
Effect on other features
- Sales → Estimates: an estimate is marked converted only when you use the Convert button on the estimate itself. Creating a separate invoice manually for the same client and project does not link back or update the estimate's status.
- Projects: the project Overview panel shows Earnings, Expenses and Profit, and project detail has its own Invoices, Estimates, Orders, Expenses and Payments tabs.
- Timesheets: logged time feeds Create TimeLog Invoice.
- Payroll: payroll can optionally include expense claims when you run a salary cycle.
- QuickBooks: connected from Settings → Finance Settings → QuickBooks. Sync is one-way, PMSuite → QuickBooks — anything created or edited directly inside QuickBooks does not flow back into PMSuite.
- Notifications: invoice, payment and expense events can be sent to email and, if configured, to Slack via Settings → Notification Settings → Slack.
Limitations
| Limitation | Workaround |
|---|---|
| QuickBooks sync runs one direction only (PMSuite → QuickBooks). | Treat PMSuite as the system of record and make finance edits there; re-sync to push corrections outward rather than editing in QuickBooks. |
| Razorpay, Paystack, Flutterwave and PayFast tabs appear but cannot take payments. | Use Stripe, Mollie, Authorize.net or Square, or take payment outside PMSuite and record it with the Offline Payment Method. |
| Recurring series can't change frequency retroactively for invoices already generated. | Stop the existing series and create a new recurring invoice with the frequency you want; already-issued invoices stay untouched. |
| A client can only cancel their own recurring invoice if the toggle was enabled at setup. | An admin can stop the series at any time from the recurring invoice record — and enable Client can stop recurring when creating the next one. |
| Mixed-currency records can be hard to compare row by row. | The Finance Dashboard converts revenue and expense totals into your default currency; set the default in Settings → Currency Settings. |
Troubleshooting
An invoice shows as Unpaid even though the client paid online. Online payments only flip the invoice to Paid once the gateway confirms back to PMSuite. If the confirmation never arrived, check that the gateway's webhook details are configured in Settings → Payment Credentials, then record the payment manually against the invoice.
The invoice is Sent but the client says nothing arrived. Re-send from the invoice, check the client's email address on the client record, and confirm your Custom Email Setup (Settings → Custom Email Setup) is configured — without it, mail goes out from the default PMSuite sender and may be filtered.
My estimate still shows as not converted after I invoiced the client. Only the Convert button on the estimate links the two. Convert the estimate itself, or leave the estimate and close it out manually.
A foreign-currency expense won't save. Confirm the expense's Currency and Exchange Rate are both set, and that the currency you picked exists in Settings → Currency Settings (add it as a custom currency if not).
The expense import rejects my file. Export an existing expense list first and use that file as your column template, keeping one consistent date format throughout the sheet.
The invoice logo won't upload. Logo uploads are validated on image dimensions, not just file size — a "too large" error can appear even for a small file. Resize the image down (750px × 750px or smaller is safe) and retry in Finance Settings → Invoice Settings.
A team member can't see Finance records. Check Settings → Roles & Permissions for their role (None / Added / Owns / All), then have them log out and back in.