How to Set Up a Chart of Accounts for a Singapore SME (Before You Automate Anything)
Every report, GST return, bank rule and automation in an SME inherits the shape of one list — the chart of accounts. Most charts were never designed. They accreted. Here is what a Singapore SME's chart has to do, the accounts it needs, and how to fix one that has grown to 240 lines.
A trading company on Xero has 243 accounts. Three of them are called some variant of "Miscellaneous". There are eleven separate "Sales" accounts, one per product line the founder cared about in 2021. "Transport" and "Transportation" both exist, and one of them carries a 9% default GST rate on purchases that include Grab rides billed by a non-registered driver. The profit and loss runs to four pages. The owner reads none of it and asks the bookkeeper for "the number" on WhatsApp instead.
Nothing in that chart is illegal. It is just unusable — and everything built on top of it is unusable too. Bank rules post to the wrong account because there are three plausible ones. The GST return needs a manual review every quarter because default tax rates were set once and never checked. The management dashboard shows gross margin as a single number because cost of sales was never split from overheads.
The chart of accounts is the data model of the business. It is the one setup decision that every later automation depends on, and it is almost always made in a hurry on the day the accounting software was created.
This guide is for a Singapore SME on cloud accounting software — Xero, QuickBooks, or similar — with an owner, an admin or bookkeeper, and an outsourced accountant at year-end.
What the chart has to do
A chart of accounts has three customers, and a good one serves all three without being three charts stitched together.
The owner. A profit and loss the owner will actually read has somewhere between twelve and twenty lines. Revenue by the two or three streams that matter, cost of sales, gross margin, staff costs, premises, the handful of overheads that move, and the result. If the chart has ninety expense accounts, the P&L will have ninety lines and nobody will read past the first page. That is the root cause behind month-end reports arriving too late to help: the numbers exist, but not in a shape that supports a decision.
The filings. For a GST-registered business, every sale and purchase has to land in a GST F5 box: standard-rated supplies in Box 1, zero-rated in Box 2, exempt in Box 3, taxable purchases in Box 5, output tax in Box 6, input tax in Box 7. For corporate tax, the accountant has to separate deductible from non-deductible expenses to prepare the tax computation behind Form C-S. For ACRA, the financial statements have to map to the XBRL taxonomy. If the chart already separates what these filings separate, each one becomes a report you run. If it does not, each one becomes a reclassification project.
The automations. Bank rules, invoice data extraction, expense-claim categories and dashboard mappings all point at account codes. An automation can only be as reliable as the target it posts to. Three "Miscellaneous" accounts is not a coding problem for a bookkeeper; it is a training problem for every rule and model that has to guess.
The Singapore-specific accounts to have from day one
The default chart your software ships with is a generic starting point. It does not know about CPF, SDL, S-plated cars or the 1% medical cap. These are the accounts a Singapore SME should add or confirm before the first month closes.
GST control accounts and default tax rates
When you set up a Singapore organisation as GST-registered, Xero loads the standard tax rates — SR for standard-rated sales, ZR for zero-rated, ES for exempt supplies, and the purchase-side equivalents — and gives each account in the chart a default tax rate. That default is what gets applied when a bill or bank line is coded to the account without anyone thinking about GST.
This is the setting that quietly decides the quality of your GST return. An expense account with a 9% purchase default will claim input tax on every line coded to it, including Grab rides from non-registered drivers, overseas software subscriptions, and reimbursements that came with no tax invoice. Set the default to the most common correct treatment for each account, and put items that genuinely differ in their own accounts.
Two accounts worth separating for this reason alone:
- Overseas subscriptions and services — reverse charge or out-of-scope rather than 9% input tax. Keep them out of the general software account.
- Staff reimbursements without tax invoices — a claim with a credit-card slip is not a tax invoice. A separate account with no input-tax default stops the claim by accident.
When the rate changed from 8% to 9% on 1 January 2024, Xero added an "Update to 9% defaults" button on the chart of accounts page precisely because so many organisations had defaults on accounts, contacts and inventory items that nobody had looked at since setup. Look at them now. The checks that catch bad coding after the fact are covered in GST data errors automation can detect, but a correct default catches most of them before the fact.
Payroll accounts that match what you file
Payroll is one number to the owner and six numbers to the authorities. Keep at least:
- Salaries and wages
- Bonuses (accrued, not just paid)
- Director's fees and director's remuneration — separately from staff, because they are reported separately
- Employer CPF contributions
- Skills Development Levy
- Foreign Worker Levy, where applicable
- CPF payable (liability) — cleared when the monthly submission goes out by the 14th
Posting one "Payroll" journal to one "Staff costs" account means rebuilding the split at year-end, and rebuilding it again whenever the payroll provider changes. How the monthly run itself should work is covered in automating payroll and CPF admin.
Non-deductible expenses in their own accounts
The accountant preparing the tax computation needs to find and add back the expenses IRAS does not allow. If those expenses are scattered through "Motor vehicle", "Staff welfare" and "General expenses", the accountant reads every line of the ledger. If they sit in their own accounts, the add-back is a filter.
The ones that matter for most SMEs:
- Private-plated car expenses. Running costs for S-, Q- and RU-plated cars are not deductible even when the car is used entirely for business. Keep them separate from commercial vehicle costs, which are.
- Medical expenses. Deductible only up to 1% of total employee remuneration — 2% if the company provides portable medical benefits. A separate account makes the cap a calculation rather than a search.
- Entertainment. Client entertainment and staff welfare have different treatments; do not pool them.
- Fines, penalties and late-payment interest. Including CPF late-payment interest and GST penalties. Not deductible, and worth seeing on their own line for a second reason: they are a process failure, not a cost of doing business.
- Donations. Their own account, so the accountant can apply the correct treatment rather than hunting through "Sundry".
Clearing accounts — and a rule that they are zero
Money rarely goes straight from a customer to the bank. It goes through Stripe, a card terminal, PayNow collections, or a payroll provider first. Each of those needs a clearing account:
- Card and Stripe clearing
- PayNow or QR collections clearing
- Payroll clearing
- Undeposited funds
- Suspense
The rule is that every one of these is zero at month-end, and any balance is an exception to investigate. That single rule turns bank reconciliation from a line-by-line exercise into an exception list, and it only works if the accounts exist and nothing else is posted to them.
The balance-sheet accounts SMEs forget until year-end
- Deferred revenue — invoices raised for work not yet done. Without it, a good sales month looks like a good month.
- Accrued expenses — costs incurred, not yet billed.
- Prepayments — the annual insurance premium spread over twelve months, not dumped into the month it was paid.
- Work in progress, for project or service businesses.
- Director's loan account, separate from bank loans and separate from share capital. Movements on it are looked at closely by both the accountant and IRAS.
- Government grants — received and receivable, in their own income account. Tax treatment varies by grant; the accountant decides, but only if the amounts are visible.
None of these need to be posted daily. They need to exist, so that the month-end close has somewhere to put the adjustments.
Design rules that keep the chart usable
Fewer than a hundred accounts
Most SMEs need 60 to 90 accounts. If the chart is past 150, it is carrying accounts that should have been a tracking category, a contact, or an inventory item.
A test for each account: does it change a decision, a filing, or an automation rule? "Marketing — Facebook" and "Marketing — Google" fail unless the owner genuinely decides channel spend from the P&L. One "Marketing" account with the platform on the contact or the line description passes.
Dimensions go in tracking categories, not the chart
The 2021 chart with eleven sales accounts was trying to report by product line. That is what tracking categories in Xero, classes in QuickBooks, and similar dimensions in every other platform are for. One "Sales" account tagged by product line gives the same report and adds nothing to the chart. The same applies to departments, locations, and projects.
The distinction is simple: the chart says what kind of transaction it is. Tracking says which part of the business it belongs to.
Cost of sales separate from overheads
Gross margin is the one number most SME owners can act on weekly, and it only exists if the chart separates the costs that scale with revenue — stock, subcontractors, direct labour, payment-processing fees, delivery — from the costs that do not. A chart with one "Expenses" block reports profit; it never reports margin. This is the split that makes an SME management dashboard worth building.
Number with gaps, name with nouns
Group by hundreds and leave room: revenue, cost of sales, overheads, current assets, fixed assets, liabilities, equity. Within a group, leave gaps of five or ten so a new account lands next to its neighbours instead of at the end of the list.
Name accounts for what they contain, not who suggested them. "Software subscriptions", not "IT/Software/Misc". If two people would code the same bill to two different accounts, one of the names is wrong.
No "Miscellaneous"
There will always be a bill nobody can place. Give it one account — "General expenses" — and a rule that it is reviewed monthly and emptied. A "Miscellaneous" account with no review rule is where coding decisions go to be avoided.
Archive, never delete
Every platform lets you archive an account with history. Deleting one — or renaming it to mean something different — breaks every report that referenced it and every bank rule pointing at it. Archive, set a lock date, move on.
A skeleton chart for a Singapore SME
Revenue
Sales — goods
Sales — services
Other income
Government grants
Interest received
Cost of sales
Purchases / stock
Subcontractors
Direct labour
Payment-processing fees
Delivery and freight
Staff costs
Salaries and wages
Bonuses
Director's fees / remuneration
Employer CPF
Skills Development Levy
Foreign Worker Levy
Medical expenses (capped)
Staff welfare
Training
Premises and operations
Rent
Utilities
Insurance
Repairs and maintenance
Software subscriptions (local)
Overseas subscriptions and services
Telephone and internet
Office supplies
Commercial vehicle expenses
Private-plated car expenses (non-deductible)
Travel
Marketing
Professional fees
Bank charges
Entertainment — clients
Fines, penalties and interest (non-deductible)
Donations
Depreciation
General expenses (reviewed monthly)
Current assets
Bank accounts (one per account)
Accounts receivable
Card / Stripe clearing
PayNow collections clearing
Undeposited funds
Prepayments
Inventory
Work in progress
GST receivable / input tax
Fixed assets
Equipment and cost / accumulated depreciation pairs
Liabilities
Accounts payable
Accrued expenses
Deferred revenue
GST payable / output tax
CPF payable
Payroll clearing
Income tax payable
Bank loans
Director's loan account
Suspense (zero at month-end)
Equity
Share capital
Retained earnings
Around seventy accounts. Add what your business genuinely decides on; resist adding what it merely spends on.
Cleaning up a chart that has grown wild
Fixing a 243-account chart is a project, but a short one if it is done in order.
- Export the chart with balances and last-used dates. Every platform can do this. Sort by last transaction date; anything unused for two years is an archive candidate before anyone reads the name.
- Tag every account: keep, merge, or archive. Merges need a target. Eleven sales accounts merge into one or two, with the product line moved to a tracking category.
- Fix the default tax rate on every account you keep. This is the step that pays back fastest. Do it against the GST record-keeping rules, not from memory.
- Re-point the automations. Bank rules, the coding suggestions in invoice data extraction, the category list in expense claims, and the dashboard mapping all reference account codes. Update them the same day, or the next month's close reopens every problem.
- Set a lock date and archive the rest. History stays intact. Reports for closed periods still run.
- Write the coding guide. One page: each account, what goes in it, what does not, the default GST treatment. It is the document a new bookkeeper reads on day one, and the specification any automation is built against.
Do the cleanup at a period boundary — the start of a financial year is ideal, a quarter-end is acceptable — so that comparatives stay meaningful.
Where automation depends on the chart
It is tempting to treat the chart as a bookkeeping detail and automation as the interesting part. In practice the order is fixed:
Chart of accounts (what the categories are)
→ default tax rates (how each category is treated for GST)
→ bank rules and extraction models (how transactions reach categories)
→ close and exception review (what fell outside the rules)
→ reports, GST F5, tax computation (what the categories add up to)
A bank rule cannot be written for an account that has two names. An extraction model cannot learn a coding pattern that changes every quarter. A dashboard cannot show margin from a chart that does not separate cost of sales. Every automation in the finance automation guide for Singapore SMEs assumes a chart that was designed rather than accumulated — and most of the projects that stall, stall here.
The bottom line
The chart of accounts is a one-day decision with a ten-year consequence:
Serve the owner, the filings, and the automations
→ add the Singapore-specific accounts (GST defaults, CPF, non-deductibles, clearing)
→ keep it under a hundred; dimensions go in tracking
→ separate cost of sales from overheads
→ archive, lock, and write the coding guide
If the current chart has three "Miscellaneous" accounts and a P&L nobody reads, the fix is not more automation on top of it. Use the Calcudesk automation ROI calculator to estimate what the monthly recoding and review currently costs, and if you want a second pair of eyes on the chart before the bank rules and extraction models are built, book a 30-minute discovery call — we will map the chart to the reports and filings it has to serve before recommending anything.