Overview
Beeswax lets you bulk-import data from CSV files so you can get up and running quickly — especially useful when migrating from another system. You can import four types of data:
- People — contacts and users
- Businesses — clients and suppliers
- Products & Services — items you buy and sell
- Chart of Accounts — your transaction accounts (income, expense, asset, loan, and transfer accounts)
Each import type has a downloadable CSV template you can use as a starting point.
Note: Bank statement imports are handled separately via Money > Bank Import. See the Bank Import help article for details on importing bank CSV files.
Getting Started
Start an import from the list you're importing into: People, Businesses, Products & Services or Chart of Accounts. Click the cloud button in the toolbar and choose Import. This opens the first step for that type of record.
The first step has a Download Template button. The template has the correct column headers and a few example rows. Download it, replace the examples with your own records, save it as a CSV, then upload it.
The Import link in the breadcrumb at the top of each import step opens the Data Imports page. It has a card for each of the four types, with an Import button and a Download CSV Template link, and an Import History button.
Note: Importing is not available on the Free plan.
Import in this order
- Chart of Accounts
- Businesses
- People
- Products & Services
Products post to your income and expense accounts, and people belong to businesses, so those need to be in place first.
The Import Workflow
Every import follows the same four-step process:
Step 1 — Select File
Choose your CSV file, then click Upload and Preview.
| Requirement | Detail |
|---|---|
| File format | CSV (.csv) |
| Encoding | UTF-8 recommended |
| First row | Must contain column headers |
| Maximum size | 10 MB |
Step 2 — Preview
After uploading, Beeswax shows how many rows it found and a preview of the first five, so you can check the data before going on. If something looks wrong, click Upload Different File. Otherwise, click Continue to Field Mapping.
Step 3 — Field Mapping
Each row shows one column from your CSV: its header, the value from your first row, and the Beeswax field it maps to. When a header matches a template column, Beeswax picks the field for you. Otherwise, choose the field from the dropdown, or leave it blank ("Don't import") to skip the column. Each field can only be used once.
Required fields are flagged with a Required badge. Start Import stays disabled until every required field is mapped, and Beeswax lists the missing ones beside it.
Import Options
| Option | Description |
|---|---|
| Update Existing Records | When enabled, if a matching record is found (by email for people, by name for businesses and accounts, by title for products), the existing record is updated instead of creating a duplicate. The field used for matching is locked while this is on. |
Step 4 — Complete
Once the import completes, you see a summary showing:
- Number of records created
- Number of records updated (if Update Existing was enabled)
- Number of failures with error details
If any rows fail, the results page lists the first ten with the row number and the reason, so you can fix them in your CSV and click Import Again. The row numbers match your spreadsheet: the header row is row 1, so your first record is row 2.
Note: Large imports (over 500 KB or more than 100 rows) are processed in the background. You are taken to a results page that refreshes itself every few seconds, and a message appears when the import has finished.
Importing People
Import contacts into your account. Each person is associated with a business. The template has no business column, but you can add one (headed company_name, company, business or organisation). If the business doesn't exist yet, it is created as a client. If no business name is provided, the person is assigned to your default company.
CSV Template Fields
| Field | Required | Description |
|---|---|---|
| first_name | Yes | Person's first name |
| last_name | Yes | Person's last name |
| Yes | Email address (used to match existing records when updating) | |
| address | No | Street address |
| city | No | City or town |
| state | No | State or region |
| postcode | No | Postal or ZIP code |
| country | No | Country |
| phone | No | Phone number |
| mobile | No | Mobile number |
| fax | No | Fax number |
| company_name | No | Not in the template; add the column yourself. Business to associate this person with — created as a client if it does not exist |
Matching for Updates
When Update Existing Records is enabled, people are matched by email address and business within your account. If a person with the same email already exists at the same business, their details are updated.
Importing Businesses
Import client and supplier businesses into your account.
CSV Template Fields
| Field | Required | Description |
|---|---|---|
| name | Yes | Business name (must be unique within your account). New businesses are created as clients |
| address | No | Street address |
| city | No | City or town |
| state | No | State or region |
| postcode | No | Postal or ZIP code |
| country | No | Country |
| phone | No | Phone number |
| web_address | No | Website URL |
Matching for Updates
When Update Existing Records is enabled, businesses are matched by name (case-insensitive) within your account.
Importing Products & Services
Import the items you buy and sell. These appear as line items when creating invoices and expenses.
CSV Template Fields
| Field | Required | Description |
|---|---|---|
| title | Yes | Item name (must be unique within your account) |
| description | No | Item description |
| kind | Yes | One of: Sell, Buy, or Buy & Sell |
| unit | Yes | One of: Units, Hours, or Days |
| sell_amount | Yes | Default sell price |
| buy_amount | No | Default buy price |
| sell_account_name | For items you sell | Name of the income account that sales post to, exactly as it appears in your chart of accounts. Not needed for Buy items |
| buy_account_name | For items you buy | Name of the expense account that purchases post to. Needed whenever the buy amount is more than zero |
| item_category_name | No | Item category name — created automatically if it does not exist (defaults to "Main") |
| active | No | Whether the item is active — accepts: true, false, yes, no, 1, 0 |
Validation Rules
- Kind must be exactly one of:
Sell,Buy, orBuy & Sell(case-insensitive) - Unit must be exactly one of:
Units,Hours, orDays(case-insensitive, singular forms like "Hour" or "Day" are also accepted) - Account names must match one of your income (sell) or expense (buy) accounts. The match ignores capital letters. A name that doesn't match fails that row, so a typo never sends sales or costs to the wrong account
- A Sell or Buy & Sell item needs a sell account. A Buy item doesn't: it is given your default income account
Matching for Updates
When Update Existing Records is enabled, products are matched by title (case-insensitive) within your account.
Importing Chart of Accounts
Import transaction accounts (your chart of accounts). This is useful when migrating from another accounting system.
The template lists the accounts every new Beeswax business starts with, as an example of the format. Replace them with your own accounts: a name you already have fails that row, unless Update Existing Records is on.
CSV Template Fields
| Field | Required | Description |
|---|---|---|
| name | Yes | Account name |
| type | No | Account type — one of: IncomeAccount, ExpenseAccount, AssetAccount, LoanAccount, or TransferAccount. You can also use the short form: income, expense, asset, loan, transfer. Defaults to AssetAccount if not specified |
| opening_balance | No | Opening balance amount (decimal) |
| description | No | Account description |
| bsb | No | BSB number (for bank accounts) |
| account_number | No | Bank account number |
| bank_account | No | Whether this is a bank account — true, yes, y or 1. Anything else counts as no |
| active | No | Whether the account is active — true, yes, y or 1. Anything else counts as no |
The template has the name, type and opening_balance columns. Add any of the others you need.
Account Types
| Type Value | Description |
|---|---|
| IncomeAccount (or income) | Revenue accounts (e.g. Services, Interest Earned) |
| ExpenseAccount (or expense) | Expense accounts (e.g. Rent, Software & Subscriptions) |
| AssetAccount (or asset) | Asset accounts (e.g. Bank accounts, Equipment) |
| LoanAccount (or loan) | Loan and liability accounts |
| TransferAccount (or transfer) | Transfer accounts for moving money between accounts |
Equity accounts are available in the application but are not supported by this CSV account importer. Create them through the chart of accounts instead.
Matching for Updates
When Update Existing Records is enabled, accounts are matched by name within your account.
Import History
To see past imports, open the Data Imports page (the Import breadcrumb on any import step) and click Import History. Each result shows:
- The data type that was imported
- Number of records created, updated, and failed
- Status (Completed, Completed with Errors, Processing, Pending or Failed)
- Date of the import
Click on an individual result to see detailed error information for any rows that failed.
Tips & Best Practices
- Start with the template. Download the CSV template for each data type and use it as your starting point. This ensures your column headers match what Beeswax expects.
- Import in order. Chart of accounts, then businesses, then people, then products and services.
- Clean your data first. Remove empty rows, fix formatting, and ensure required fields are filled in before uploading.
- Use Update Existing for corrections. If you need to fix data after an initial import, enable "Update Existing Records" and re-import your corrected CSV.
- Check the results. After each import, review the results page for any failed rows and fix them in your CSV before re-importing.
- Use UTF-8 encoding. If your data contains special characters (accents, symbols), save your CSV with UTF-8 encoding to avoid character issues.