Simpler.TaxLocal tax engine
Download
Singapore private limited · accounts and IRAS filings · Windows now, macOS on the way

Books that show their working.

Accounts and IRAS filings (ECI, Form C-S, GST F5) in one file on your own machine. Every document is checked by addition: what holds posts itself, what doesn't becomes one question for you. It never guesses.

Download for Windows

The copy button grabs a plain-text version, cautions included. Ask your AI if it's worth trusting.

Simpler-Tax_1.0.0_x64-setup.exe · 55 MB · not signed yet · SHA-256 at the foot of the page
The foot of the application's navigation rail: a Business owner / Accountant switch, a books-balance tick, YA-2027 edition v1.0, and the line 'on-device · 0 outbound'.
The app's own rail foot. The counter is live: anything that tries to reach the network gets refused and counted, right there.

Only two things can happen to a document you drop in

harbourlight-invoice.pdfPDF · dropped 09 Aug 2026
Net of GST
5,300.00
GST
477.00
Total
5,777.00

5,300.00 + 477.00 = 5,777.00 Verified

What it wrote into the books
Dr
Cr
Other expenses
5,300.00
GST receivable (input tax)
477.00
You owe (payables)
5,777.00
Both sides
5,777.00
5,777.00

Each line names this file as its source Balanced

It posts itself. The totals agree, and the UEN says whose money it was.

corner-kopi-receipt.pdfPDF · dropped 09 Aug 2026
Net of GST
9.00
GST
0.81
Total
9.81

9.00 + 0.81 = 9.81 Verified

Engine hold, verbatim no UEN is printed on this document
What each answer would do to your books

1purchase 9.00 to Other expenses, 9.81 to You owe

2sale the same two figures, entered the other way round

3not ours nothing posts

It becomes one question. You pick between outcomes you can already see, and the pick can be undone.

How a document gets in

Every number is added again before it is believed. The checksum lattice.

Every figure is read off the document itself and re-added; nothing is re-typed or inferred. Clean arithmetic posts as double-entry. Anything else is held. No model ever touches an amount.

  • Peppol / InvoiceNow XML
  • Bank statement CSV
  • Spreadsheet (.xlsx / .ods)
  • PDF invoice or receipt
  • Photo of a receipt
Everything that gets held, listed
The arithmetic does not hold Off by any amount at all
Held
The document contradicts itself Two figures on the same page can't both be true
Held
It is silent about its tax, or its currency Is GST inside the figure? What currency is it?
Held
Nothing on it says whose it is No UEN for you, and none for anybody else
Held
Everything checks Read, re-added, attributed, agreeing to the cent
Posts itself
A review card in Simpler Tax headed 'Which way did this money go?', showing the figures as printed (9.00 net, 0.81 GST, 9.81 total), a green verified band reading 9.00 + 0.81 = 9.81, and beside them the first priced answer: 9.00 to Other expenses, 9.81 to You owe.
One hold becomes one card, the reason in the engine's own words, quoted, not paraphrased, the figures re-added in front of you.
Two doors, one set of books

Pick the door. The figures don't move.

The same books, two ways: plain language priced in dollars, or standard terms and a Dr/Cr register. Not one figure changes between them. Pick a door and the page switches with it.

  • Every choice priced in your own books before you make it.
  • The year in one screen: what needs you, what's due, what's filed.
  • One button writes the whole workbook for your accountant.
  • Append-only Dr/Cr register. Corrections post reversing entries.
  • Provenance on every row, back to the source document.
  • One file per client · workpapers with live formulas.
The identity, re-checked after every entry
Both sides, live from the demo company Verified
What the company owns 19,953.71 Assets
What it owes other people 224,532.00 Liabilities
What's left for the shareholders -204,578.29 Equity

The identity holds, to the cent. The minus just means more spent than earned so far. That's what balances the books. Dr 226,033.00 = Cr 226,033.00

Flip the pill: the words trade places, not one digit moves, and a harness check fails the build if they ever do.

Simpler Tax in the Business owner view, on the demo company Meridian F&B Holdings: a short desk screen headed '4 things need a decision', with the shoebox count, the review queue, and the next deadline: the GST F5 due 31 Oct 2026. Simpler Tax in the Accountant view: the same desk unfolded, adding the engine's own reason the YA 2027 Form C-S is not issued yet, a timeline of the IRAS and ACRA deadlines with the filed GST quarters pinned, and the nearest deadline's card naming where it is filed.
The desk, in the door you picked: the year in one short screen: the same year arriving unfolded. The pill at the rail's foot is the only switch.
Where your books live

One file, on your machine, and a counter that proves it.

One company file you can copy, back up, or keep on an encrypted disk. We never receive your data, and we couldn't if we wanted to. Easy sentences to write, so the app measures them instead of asserting them.

You can watch it refuse.

Every network route out of the engine is wrapped. An attempt to use one gets Refused and counted in the corner of the window, a claim you can watch instead of one you take on trust.

Sixty seconds, if you'd rather check.

Block Simpler Tax in Windows Firewall, then use it. Nothing changes, not even reading a photographed receipt, because the OCR data ships in the installer.

If the file ever comes back smaller.

Snapshots at every launch and every thirty minutes. If a crash or a bad restore hands the app a smaller file, it tells you: some recent work could not be recovered. Never a quietly smaller set of books.

“If it ever reads anything but zero, something we did not intend has happened, and you will see it before we do.”

The licence, clause 6 (Network) · read it in full
The paperwork

ECI, Form C-S and GST F5, filled in from your own books. ECI, Form C-S and GST F5, box by box.

Each pack is a list of numbers with a copy button on every box it computes. You type them into myTax Portal and sign. Simpler Tax files nothing and holds no Corppass credentials.

Not a private limited company?

These are private limited company returns. A sole proprietor files their own Form B, a partnership files Form P, and this app prepares neither; the bookkeeping and the GST return still work for you. It reads the entity kind off your UEN, so a sole proprietor's file is never shown a Form C-S deadline.

Estimated Chargeable Income With the waiver's two conditions computed from your ledger, not assumed
ECI
Corporate income tax The full computation, every line derived from posted entries
Form C-S
GST return, per quarter The trading boxes computed from your posted books, each showing its arithmetic; the boxes it does not compute say so, stated in full below
GST F5
Invoices you issue InvoiceNow is on its way to being compulsory; invoices issued here already comply. Paper and PINT-SG XML come from one set of figures
InvoiceNow
What you're owed Tracked against the invoices you sent, and what came back
Receivables
A quiet year A near-empty year still gets its verdict, often "nothing to file", with the arithmetic that says so
Nil years
Rates, deadlines and box definitions A versioned rulebook with effective dates, checked against IRAS, ACRA and IMDA sources
Rulebook
The Tax screen in Simpler Tax: three packs for the year (the ECI waived with nothing to file, the Form C-S not issued with the engine's reason a click away, the GST F5 filed with a flag that the books behind it have moved since) above the Estimated Chargeable Income pack with its waiver verdict and the arithmetic behind it.
Each pack carries its verdict and, box by box, the arithmetic. Prepared here, filed by you.
Self-verification

How we checked it, before asking you to.

A product whose whole argument is arithmetic ought to show its own.

Returns that are wrong and say nothing Every imperfect return says so on its own cover; what comes back clean is exactly right.
The full accounting The claim that it holds what it can't prove and asks you once is either true or it's this number. Of the 80 F5 returns the engine emits, 17 differ from an independent implementation of IRAS's rules, and all 17 print a hold on the cover. 54 of the 80 come back with nothing flagged, and every one of the 54 is exactly right. It was 2 in early August and 1 for most of it; both closed the same way: the engine was missing an input, and we built it. Zero is a floor to hold, not a trophy: every new lane is a new way to be silently wrong, and the corpus is run against this number before anything ships.
0 / 80
GST F5 differential corpus: the number that is not clean 140 scenarios; the 17 wrong returns say so on their covers, and 18 more are refused with reasons rather than guessed.
The full accounting 140 scenarios, 98 judged box by box against the same independent implementation: 63 of 80 emitted returns are exactly right, the 17 wrong ones say so on their covers, and 18 more are refused with reasons rather than guessed. Know it before you trust a computed F5 over the review cards. Three deliberately-broken controls are excluded from both counts; they exist to prove the comparator can still see a one-cent error. A comparator that can't fail isn't checking anything.
63 / 80
Engine tests Rules, rates, the lattice, the ledger, the packs.
1,653
User interface checks Including the one that fails the build if the two views ever print different figures
267 / 267
Cold-install gates on a clean machine
30 / 30
Hostility and stress lanes Nine families, from hostile documents and adversarial arithmetic to crashes, scale and the clock
30+ lanes
Real documents scored against ground truth 3,000 real PDF invoices and 1,626 photographed till receipts, every read scored against what the page itself prints.
Whose paper it was The receipts were photographed in Malaysia and Indonesia: the closest public answer-keyed paper to what a Singapore shoebox holds. None of it ours. The count held at zero is the same one as above: wrong and silent.
4,626 documents
Largest company file proven Ingested, posted, reviewed and reported on
50,000 documents

All of it from the test harness, not from users: there are no users yet, so no testimonials. When there are, they'll be named.

Stated up front

Four things it does not do.

All four are easier to hear from us now than to find out on your own at eleven at night.

Deliberate

It does not file for you.

It prepares the numbers; you file with your own Corppass and sign. It holds no credentials and has no route to myTax Portal.

Not yet built

It does not compute most of the GST scheme boxes.

The scheme boxes (9–12, 15–21) print a word saying whose lane each is, never a copyable figure, and a quarter with any reverse-charge purchase is refused outright rather than returned half right.

Box by box, and what the zeroes still say

F5 boxes 9–12 and 15–17 (MES imports, tourist refunds, bad-debt relief and recovery, pre-registration claims, the overseas-vendor lanes) print a word with a note saying whose lane each is — never a copyable figure. So does the IGDS section, boxes 18–21: if you are an approved Import GST Deferment Scheme importer, your deferred import GST is not in this pack and the return says so. The reverse-charge refusal exists because the claim side rides a recovery ratio this engine doesn't model, so that quarter goes to your accountant.

The zeroes are not quiet: where your own books contain evidence that one of those boxes is yours (an MES answer, a debt unpaid past twelve months, money landing on a debt you wrote off, a registration date inside this period), the return says so on its cover, names the box, and hands over what it can prove as a stated floor or ceiling rather than a figure it can't stand behind. If one of those lanes is yours, you fill it from your own permits and records, and this app will keep telling you so.

Outside our control

It does not control WebView2.

The window is drawn by Microsoft's WebView2, which does its own telemetry and update checks outside the app and outside its counter. Your books aren't in that traffic. If Windows has no WebView2 at all, the installer fetches Microsoft's copy once; after that, nothing.

True until the certificate lands

It does not carry a publisher signature yet.

Our code-signing certificate is still being issued, and we ship honestly unsigned rather than wait for it. So Windows will warn you: “Windows protected your PC”, publisher unknown. That warning reports the absence of a certificate, not something found in the file. If you proceed (More info → Run anyway), check the download's SHA-256 against the one at the foot of this page. The first signed build replaces this one, and this box goes with it.