Accounting software for Iraqi companies, built on the Iraqi Unified Accounting System.
Arabic, English and Kurdish. Dinars and dollars. Free for one PC.
Website · Install · Features · Screenshots · Plans · Compare · Switch from Excel · Run it · License
Qasa ERP keeps the books of an Iraqi company the way its finance department already works.
- The books, the Iraqi way. The unified chart of accounts (النظام المحاسبي الموحد), receipt and payment vouchers and journal entries that go from preparer (المنظم) to checker (المدقق) to approver (المصادق), gap-free numbers, corrections by reversal rather than editing, period locking and a full audit log.
- Sales, purchases and stock. Invoices with the total in words (تفقيط), returns, customers and suppliers with statements and credit limits, warehouses, opening stock and transfers, all valued at weighted average cost.
- Reports that close the year. Trial balance, account statements and the final accounts: the trading, current operations and profit and loss accounts, and the balance sheet.
- Three languages, two currencies. Arabic, English and Kurdish (Sorani), switchable at any time, with Arabic-Indic digits if you prefer; dinars and dollars at the day's rate.
- A team, with controls. Sign-in, roles, and separate duties, so whoever prepares a voucher cannot approve it.
- On your own PC. The Windows app, from the Microsoft Store or our installer, keeps the company file on your computer, works without internet and stays up to date. Several PCs can share it over the office network; an online edition (in the browser) is coming later and will share the same code.
بالعربية: قاصة ERP برنامج محاسبة مجاني ومفتوح المصدر للشركات العراقية، مبني على النظام المحاسبي الموحد: سندات القبض والصرف والقيود اليومية بتسلسل المنظم والمدقق والمصادق، وفواتير المبيعات والمشتريات ومردوداتها، والمخزن بمتوسط الكلفة، وميزان المراجعة والحسابات الختامية، بالدينار والدولار. يعمل على ويندوز دون إنترنت، وبالعربية والكوردية والإنجليزية. جرّب النسخة التجريبية أو ثبّته من Microsoft Store أو نزّل ملف التثبيت.
بە کوردی: قاسە ERP بەرنامەیەکی ژمێریاریی بەخۆڕایی و سەرچاوەکراوەیە بۆ کۆمپانیا عێراقییەکان، لەسەر سیستەمی ژمێریاریی یەکگرتوو: سەنەدی وەرگرتن و پارەدان و تۆماری ڕۆژانە بە زنجیرەی ئامادەکار و وردبین و پەسەندکەر، پسوولەی فرۆشتن و کڕین و گەڕاندنەوەکانیان، کۆگا بە تێچووی مامناوەند، تەرازووی پێداچوونەوە و هەژمارە کۆتاییەکان، بە دینار و دۆلار. لەسەر ویندۆز بێ ئینتەرنێت کار دەکات، بە کوردی و عەرەبی و ئینگلیزی. وەشانی تاقیکردنەوە بکەرەوە، لە Microsoft Store دایبمەزرێنە یان فایلی دامەزراندن دابگرە.
Status: Release 1 in progress. See the progress list. The live demo runs entirely in your browser with a sample company: nothing is sent to a server, and a reload starts it afresh.
- Microsoft Store (recommended): free, signed by Microsoft so Windows installs it without a warning, and kept up to date by the Store. Windows 10 version 1903 or later, or Windows 11, with 2 GB of memory.
- Installer: Qasa-ERP-Setup.exe from Releases or qasaerp.com, for PCs without the Microsoft Store (Windows 10 and 11, 64-bit). It isn't code-signed yet, so Windows SmartScreen may show "Windows protected your PC" or "Unknown publisher": click More info, then Run anyway. GitHub shows each release file's SHA-256 next to it. The installed app updates itself from this repository's releases.
Both keep the company in %APPDATA%\Qasa ERP, so you can move from one to the other without losing your books
(install the same version or a newer one; Help → About shows it), and uninstalling either keeps them. Keep only one on
a PC: install the new one, then uninstall the other. Starter, Pro and Business
licenses from my.qasaerp.com work in both; the Store doesn't sell them.
Dashboard |
Sales invoice · Arabic |
Receipt voucher · Kurdish |
Final accounts |
Trial balance · Arabic |
Stock card |
Users and roles |
Try it yourself Open the live demo Get it from the Microsoft Store |
The screenshots show the sample company that comes with the app (npm run seed:demo). node scripts/screenshots.mjs takes them again.
Needs Node.js 24 or newer.
npm install
npm run seed:demo # optional: sample company with customers, items, invoices and vouchers
npm run dev # API on :4417 + app on http://localhost:5173
npm test # core + API tests
npm run typecheckThe database is data/qasa.sqlite (set QASA_DATA_DIR to move it). Delete the data folder to start fresh.
apps/desktop wraps the same server and screens in Electron:
npm run desktop # run the Windows app from source
npm run dist:win # build apps/desktop/release/Qasa-ERP-Setup-<version>.exe
npm run dist:store -w @qasa/desktop # …and the Microsoft Store package (Microsoft signs it when the Store accepts it)- The company file is
%APPDATA%\Qasa ERP\data\qasa.sqlite; the support log is%APPDATA%\Qasa ERP\logs\main.log. The Microsoft Store version uses the same folder (its package doesn't virtualize it), so both versions work on the same books. - The built-in server listens on 127.0.0.1 only and answers only the app's own window (a new secret each launch).
- The window has no Node access (sandbox, context isolation) and loads nothing but the app. Electron fuses stop the program being used as a plain Node runtime and make it reject tampered app files.
- Updates: the installer version checks GitHub releases of this repository at start and every six hours, downloads in the background and asks before restarting. The Microsoft Store version is updated by the Store, from the package the same release workflow builds; its Help → Check for updates opens the Store page.
Instead of the company file, a company can keep its books on its own MariaDB (10.6 or newer) or MySQL (8.0.16 or newer) server: Settings → Company database → Move the company to a database server.
- One PC (the one that moves) works on the server; the other PCs keep connecting to that PC through the office network. The server holds a lock per database, so a second Qasa ERP on the same database is refused.
- The move copies the whole company into an empty database and compares every table, row for row and in money, before anything switches; the PC's company file is kept aside, untouched. Move the company back copies it into a new company file the same way. Backups keep working and are always company files.
- The same schema and rules as SQLite (
packages/server/src/schema-mysql.ts, checked against the SQLite schema byschema.test.ts): posted vouchers, invoices and stock moves are protected by triggers, text compares byte for byte. - Security: TLS is required (only a server on the same PC may go without). Nothing, not even the user name, goes to the
server before its certificate passes — a public certificate for its name, one signed by the certificate authority you
give (MySQL's
ca.pem), or exactly the self-signed certificate you confirmed by its SHA-256 fingerprint (MariaDB). The password is kept only on that PC, protected for its Windows user (DPAPI). Use a database user with rights on that one database only; the app warns about an account with rights on the whole server. - MySQL with binary logging (the default) lets an ordinary user create triggers only with
log_bin_trust_function_creators = ON; the check says so before anything is moved. - The app's code stays synchronous, as with SQLite: the connection lives on a worker thread and each statement waits
for its answer (
pro/, Meroxis builds only). To run the whole test suite on a server:QASA_TEST_DB=mariadb|mysql QASA_TEST_SERVERS=<test-servers.json> npx vitest run.
| Folder | What it is |
|---|---|
packages/core |
Accounting rules with no UI or database: money in minor units, IQD/USD, amount in words (ar/en/ku), the unified chart of accounts, journal validation, vouchers, trial balance, account statement |
packages/server |
Node.js API (Fastify) + SQLite (node:sqlite), or a MariaDB/MySQL server through the same Db interface. Posted entries are protected by database triggers; the audit log is append-only. The routes (routes.ts) don't depend on Fastify, so the website demo runs them in the browser |
apps/web |
React screens, right-to-left and left-to-right, fonts bundled for offline use. npm run build:demo -w @qasa/web builds the browser-only demo (SQLite in WebAssembly) into apps/web/dist-demo |
scripts/dev.mjs |
Starts server and app together |
- Money is stored as whole numbers (IQD dinars, USD cents) — never floating point. USD entries store the day's rate and their IQD value.
- Every entry must balance; only sub-accounts (no children) take entries.
- Vouchers follow the Iraqi approval chain: draft (المنظم) → checked (المدقق) → approved (المصادق). Only approved entries reach the reports.
- Voucher numbers (RV-, PV-, JV-, RJ-) are given at approval, so posted numbers have no gaps.
- Approved entries can never be edited or deleted — even by raw SQL — only reversed with a reversal entry (قيد عكسي).
- Locked months take no new vouchers or approvals. Every change goes to the audit log.
- Invoices are numbered when posted (INV-, PI-) and post their own entry: a sale debits the safe or the customer and credits sales (42), and moves its cost at weighted average from the warehouse account (137x) to cost of sales (35). Posting accounts are editable in Settings.
- Stock moves are permanent. A posted invoice is never edited or deleted — cancelling it reverses its entry and puts the stock back; a purchase whose goods were already sold can't be cancelled.
- A sale can't take more than the warehouse holds, and a credit sale can't pass the customer's credit limit.
- Each warehouse has its own inventory account, so its stock value always equals its ledger balance.
- An installment contract (INS-) schedules a posted credit sale: the invoice is the sale at the installment price, so the contract posts nothing itself. Each collection is a receipt voucher (Dr the safe, Cr the customer), posted at once and counted against the oldest installments; reversing it takes the payment back. The terms, the schedule and the collections can't be edited, only the contract cancelled, and a sale under an active contract can't be cancelled or returned. Monthly amounts are round (whole thousands of dinars or whole dollars), the last one taking the rest.
- Project setup, database, migrations
- Iraqi unified chart of accounts in 3 languages (to be reviewed by a licensed accountant)
- Receipt / payment vouchers, journal entries, approvals, reversals, period locking, audit log
- Trial balance and account statement (print + Excel export)
- Sales & purchase invoices, customers & suppliers (with statements), items, warehouses, weighted-average stock
- Opening stock, sales and purchase returns, stock transfers between warehouses
- Installment sales (Pro): contracts from a credit sale or an earlier balance, guarantors, schedule, collection by receipt voucher, overdue aging, printed contract with the guarantor's pledge
- Sales pipeline (Pro)
- Payroll (Pro)
- Final accounts: trading, current operations and profit and loss accounts, and the balance sheet (unified-system layout, to be reviewed by a licensed accountant)
- Year-end closing: a closing entry moves revenue and expenses into the accumulated result (229) and locks the year; reopen by reversal
- Users, roles and sign-in (Free: one password-protected user; Pro: up to 5 users with roles and separate duties)
- Office-network (server) mode: other PCs work on one PC's company file over the office network (encrypted, with a pairing code), each person with their own user
- Windows app and installer with automatic updates
- In the Microsoft Store, signed by Microsoft
- Plans (Free, Starter, Pro, Business) with signed license keys and a free first month on each PC
- Backups: a daily checked copy of the company file in a folder of your choice, and restore
- The company database on the company's own MariaDB or MySQL server (Business), with move there and back
- Code signing of the installer (the Microsoft Store version is signed by Microsoft)
Free is the complete accounting product for one company on one PC, with no time limit. Starter, Pro and Business add what a growing company needs, and the app shows the full comparison, with the price of a year of each plan, under Plan & license. Starter is Pro for a small office: 2 users and 1 company, with every Pro feature except Qasa Relay and the cloud backup.
| Free | Starter | Pro | Business | |
|---|---|---|---|---|
| A year, in Iraqi dinars | free | 165,000 | 350,000 | 1,000,000 |
| Accounting, vouchers, invoices, returns, stock, trial balance | ✓ | ✓ | ✓ | ✓ |
| Final accounts | on screen | print and Excel | print and Excel | print and Excel |
| Warehouses | 1 | unlimited | unlimited | unlimited |
| "Made with Qasa ERP" on invoices | shown | removed | removed | removed |
| Your company logo on printed papers | ✓ | ✓ | ✓ | |
| Users, with sign-in | 1 | 2, with roles and separate duties | up to 5, with roles and separate duties | unlimited |
| Office network (several PCs on one company file) | ✓ (inside the office) | ✓ | ✓ | |
| Qasa Relay (the office network from anywhere over the internet) | ✓ | ✓ | ||
| Companies | 1 | 1 | 3 | unlimited |
| Daily backups to a folder of your choice (OneDrive, Google Drive, USB) | ✓ | ✓ | ✓ | |
| Encrypted cloud backup to Google Drive | ✓ | ✓ | ||
| Year-end closing (closing entry, locked months, reopen by reversal) | ✓ | ✓ | ✓ | |
| Company database on your own MariaDB or MySQL server | ✓ | |||
| Installment sales with guarantors | ✓ | ✓ | ✓ | |
| Payroll | ✓ | ✓ | ✓ | |
| Branches | ✓ | |||
| Online edition | coming soon |
Some features are still being built; the app marks them as coming soon. A plan never locks anyone out of their data: when a license ends, the company keeps everything and continues on the Free features. Only as many users as the plan allows can sign in (admins first, then the earliest made); no user is deleted. The first month on each PC is free, with every feature except Qasa Relay; it starts by itself on the first run and is given once per PC, not once per company. Licenses are keys signed by Meroxis (Ed25519), activated online once on each PC. Buy or renew one in the customer portal, my.qasaerp.com, and pay with Wayl, a bank transfer or cash. Licenses aren't sold in the Microsoft Store; a key from the portal works the same in the Store version and the installer.
- Open source: the core app, with the rules that post every voucher and invoice, is here under the AGPL. Anyone
can read how each dinar is posted. Two parts are not open source: the Starter, Pro and Business features are a
separate proprietary module (
pro/, not in this repository), and the compiled licence addon (native/licence) is proprietary too, all rights reserved by Meroxis (its LICENSE). - Tested on every change: the accounting rules, the API and the database upgrades have automated tests, run by GitHub Actions on every push (see the Tests badge).
- Your data stays with you: the Windows app keeps the company file on your PC and works without internet (or, on Business, on your own MariaDB or MySQL server); the demo runs entirely in your browser. On its own the app goes online only to check for updates, to activate and check a license, and for a daily usage ping (installation number, version, plan and counts; never the license number, so it is never linked to a license) that can be switched off in Settings. The books leave the PC only when you choose it: an encrypted cloud backup, the office network, Qasa Relay or the website API (items, prices, stock, customers and orders shared with your own website).
- Books that can't be rewritten: the database refuses edits to posted vouchers, invoices and stock moves, and keeps an append-only audit log.
- Releases are built from this repository by GitHub Actions and published under Releases; the same build goes to the Microsoft Store, where Microsoft checks and signs it. The installer isn't code-signed yet: get it only from this repository or qasaerp.com.
How the app protects data, and how to report a vulnerability: SECURITY.md. How to help: CONTRIBUTING.md. Our code of conduct.
Qasa ERP is a product of Meroxis. Its core app (everything in this repository except native/licence) is free software
under the GNU Affero General Public License v3.0 or later, with the additional terms in NOTICE:
copies must keep the "Made with Qasa ERP" credit printed on invoices, unless you have a Starter, Pro or Business license from
qasaerp.com. The name and logo belong to Meroxis.
Not under the AGPL, and not open source: the Pro module (pro/, a separate private repository) and the licence addon
(native/licence, see its LICENSE). Both are proprietary to Meroxis, all rights reserved, and
ship only in the official builds under the Qasa ERP license agreement (EULA).
© 2026 Meroxis








