Importing Expenses
The Expenses list has an Import action that lets you create many expense records at once from a CSV file, instead of adding them one at a time. It is the fastest way to bring in historical spending when you move to PMSuite, or to load a batch of transactions you already keep in a spreadsheet.
Who can use it
Anyone whose role grants create permission on the Finance module can import expenses — Company Admin by default. Permission levels are set per role in Settings → Roles & Permissions, where each module action (view, create, edit, delete) can be set to None, Added, Owns, or All.
If someone cannot see the Import action, check their role first, then have them log out and back in — permission changes do not always apply to a session that is already active.
Prerequisites
Imported rows reference records that must already exist in PMSuite. Create these before you import:
- Expense categories — see Expense Categories.
- Employees — if rows are attributed to an employee, see Adding Employees.
- Projects — if rows are linked to a project.
- Bank accounts — if rows are tied to an account, see Bank Accounts.
- Currencies — any currency used in the file must exist in Settings → Currency Settings. Exchange rates are calculated relative to your default currency.
Your data must be saved as CSV. Excel, Google Sheets and Numbers can all export to CSV.
How to Access
Go to Finance → Expenses (/account/expenses) and use the Import action on the list page.
Preparing your file
An expense record in PMSuite holds these fields:
| Field | Notes |
|---|---|
| Item Name | The expense description shown in the list. |
| Price | The amount. |
| Currency | Must be a currency configured in Currency Settings. |
| Exchange Rate | Used to convert to your default currency. |
| Purchase Date | Use one unambiguous format for the whole column — YYYY-MM-DD (for example 2026-03-07) is the safest. Your company's Date Format is set in Settings → App Settings. |
| Employee | Must match an existing employee. |
| Project | Must match an existing project. |
| Expense Category | Must match an existing category. |
| Purchased From | Free text — the vendor or merchant. |
| Bank Account | Must match an existing bank account. |
| Description | Free text. |
The Bill upload field on the expense form is a file attachment, so it cannot be populated by CSV. Attach bills after the import by editing the individual records that need one.
Running the import
- Open Finance → Expenses and choose Import.
- Select your CSV file and upload it.
- When prompted, match each column in your file to the correct expense field.
- Confirm the import.
- Open the Expenses list and spot-check several imported rows against your source file.
Import a small test batch of five to ten rows first. Once you have confirmed the columns land where you expect, run the full file.
Effect on other features
- Imported expenses behave exactly like manually recorded ones — see Recording Expenses.
- They carry an approval status of Approved, Pending or Rejected, and can be actioned from the list.
- They appear in the Expense Report (
/account/expense-report) and in Income vs Expense (/account/income-expense-report). Exchange rates are calculated relative to your default currency, so multi-currency imports roll up into one reporting currency. - Rows linked to a project count against that project's spend.
Limitations
- No duplicate detection. Importing the same file twice creates two sets of records. Workaround: import once, verify, and keep a note of which date ranges you have already loaded. If a batch does land twice, the extra records can be deleted from the Expenses list.
- Referenced records are not created for you. A row naming a category, employee, project or bank account that does not exist cannot be matched. Workaround: create the missing records first, then re-import only the affected rows.
- Receipts and bills cannot be imported. Workaround: upload the bill on each expense record afterwards, or keep receipts in your existing store and reference them in the Description column.
- No automatic bank-feed import. Importing is a manual CSV operation. Workaround: export the statement from your bank as CSV and import it. Bank Feeds is a planned addition to PMSuite; no release date has been confirmed.
Troubleshooting
A category, employee, project or bank account is not matched. The value in your file does not correspond to an existing record. Check the exact name in PMSuite, correct the CSV, and re-import the failed rows.
Dates are not being read correctly.
Convert the column to ISO YYYY-MM-DD before importing. In a spreadsheet you can generate this with =TEXT(A2,"YYYY-MM-DD") and paste the result as values.
Amounts look wrong after import. Check that the Price column contains plain numbers with no currency symbols or thousands separators, and that the Currency and Exchange Rate columns are populated for any row that is not in your default currency.
Duplicate expenses appear. The file was almost certainly imported twice, or overlaps with rows you had already entered manually. Delete the extra records from the Expenses list.
The Import action is not visible. Your role lacks create permission on the Finance module. Ask an admin to adjust it in Settings → Roles & Permissions, then log out and back in.