Sales — this month vs last month
This month: · invoices. Last month: .
Purchases — this month vs last month
This month: · POs. Last month: .
Daily sales — last 14 days
Pending cheques by maturity date
Green = customer cheques (inflow). Red = supplier cheques (outflow).
No pending cheques.
Recent sales
View all| Invoice | Date | Customer | Total | Outstanding | Status |
|---|---|---|---|---|---|
| No sales yet. | |||||
Top customers this month
| Customer | Total |
|---|---|
| No data yet. | |
Sales & invoices
| Invoice | Date | Customer | Terms | Total | Outstanding | Status |
|---|---|---|---|---|---|---|
| No invoices match these filters. | ||||||
Items
| Product | Qty | Price | Disc % | Tax % | Line | |
|---|---|---|---|---|---|---|
|
Out of stock
Only on hand
|
||||||
| Search above to add items to this sale. | ||||||
Customer & terms
Payments
Stock at
Stocktakes at
A stocktake is a physical count. Create one, enter actual counted quantities, then post to bring system stock levels into line with reality.
Branch: · Count date: · Created by:
Posted: by
Net variance value: (positive = found extra stock; negative = stock missing)
| SKU | Product | Expected | Counted | Variance | Cost | Variance value | Notes |
|---|---|---|---|---|---|---|---|
Transfers
| Reference | From | To | Items | Total qty | Dispatched | Status |
|---|---|---|---|---|---|---|
| No transfers yet. | ||||||
Items
| Product | Qty sent | Qty received | Note |
|---|---|---|---|
| · | |||
| Add items to transfer. | |||
Details
POS checkout — at
Cart
| Item | Qty | Price | Total | |
|---|---|---|---|---|
| Cart is empty. Scan or tap products. | ||||
Payment
Last sale
Total · Change given
Sample issues
| Reference | Date | Recipient | Type | Organization | Lines | Cost | Status |
|---|---|---|---|---|---|---|---|
| No sample issues yet. | |||||||
New sample issue
Items
| Product | Qty | Note | |
|---|---|---|---|
Recipient
Stock and accounting are only affected when a manager confirms the issue.
Items
| Product | Batch | Qty | Unit cost | Line cost |
|---|---|---|---|---|
| · |
Recipient & audit
Created by
Issued by on
Accounting: cost was debited to "Samples & product promotions" (6270) and credited from Inventory.
Shipments
| Reference | Supplier | Currency | Expected | Items | Landed total | Status |
|---|---|---|---|---|---|---|
| No shipments yet. | ||||||
Shipment header
Foreign-currency shipments are recorded only at warehouse branches.
Items
| SKU | Product | Qty | Unit cost | Weight kg | Volume m³ | Landed unit | |
|---|---|---|---|---|---|---|---|
| No items yet. | |||||||
Landed costs (freight, duty, etc.)
| Type | Description | Amount | Apportion by | |
|---|---|---|---|---|
| No costs added. Without these, items will be costed at supplier price only. | ||||
Products
| SKU | Name | Unit | Cost | Sell | Markup % | Margin % | Reorder at | |
|---|---|---|---|---|---|---|---|---|
|
Buy: ·
Sell: ·
1 =
|
— | Set price | ||||||
| No products. Click "New product" to add one. | ||||||||
Reports
Aging receivables
| Customer | Current | 1–30 | 31–60 | 61–90 | 90+ | Total |
|---|---|---|---|---|---|---|
| No outstanding invoices. | ||||||
Sales summary
| Period | Invoices | Revenue | Tax | Discount |
|---|---|---|---|---|
| No sales in this period. | ||||
Low stock
| SKU | Product | Branch | On hand | Reorder point |
|---|---|---|---|---|
| No products below the threshold. | ||||
Products expiring soon
Products whose expiry date is within their configured warning window (default 90 days).
| SKU | Product | On hand | Expires | Days left |
|---|---|---|---|---|
| No products expiring soon. Set expiry_date on a product to track it. | ||||
Top selling products
| SKU | Product | Qty sold | Revenue | Margin | Invoices |
|---|---|---|---|---|---|
| No sales in the selected range. | |||||
Slow moving products
Products in stock at this branch, ordered by how little they've sold in the window. Days-of-stock-remaining estimates how long until you'd run out at current sales velocity.
| SKU | Product | On hand | Sold (window) | Revenue (window) | Days of stock |
|---|---|---|---|---|---|
| No stock data. | |||||
Products by margin
| SKU | Product | Qty | Revenue | Cost | Margin | Margin % |
|---|---|---|---|---|---|---|
| No sales in the selected range. | ||||||
VAT period summary
Compare VAT collected on sales (output) vs VAT paid on purchases (input) for a period. The net is what you'd owe (or be refunded by) Ghana Revenue Authority.
Output VAT (Sales)
Invoices in period:
Net sales:
Output VAT:
Gross sales:
Input VAT (Purchases)
Purchases in period:
Net purchases:
Input VAT (gross):
Less returns VAT:
Input VAT (net):
Net VAT settlement
Output VAT: − Input VAT:
VAT payable to GRA: VAT refund due:
Click Refresh to load.
Stock value at
Live snapshot of stock on hand, valued at cost AND retail prices. Useful for end-of-period reporting and insurance schedules.
Top 20 contributors by cost value
| SKU | Product | On hand | Unit cost | Unit sell | Cost value | Sell value |
|---|---|---|---|---|---|---|
Click Refresh to load.
·
Pricing
Cost price: per
Sell price: per
Markup:
Margin:
Per sell unit ():
Cost:
Sell:
1 = s
Sales performance ( to )
Expiry
Expires on:
EXPIRED days ago. Do not sell — investigate and write off if needed. Critical: days remaining. Push for clearance. Approaching: days remaining (within -day warning window). days remaining.
Stock by branch
| Branch | Type | Quantity on hand |
|---|---|---|
Prices by branch
Each branch sets its own cost and sell price independently. Cost updates automatically when a purchase is received at that branch; sell price is set by branch management.
| Branch | Type | Cost | Sell | Markup % | Margin % | Last updated | |
|---|---|---|---|---|---|---|---|
| — | Not set | ||||||
| No branches configured. | |||||||
Stock movements at this branch
All inbound (purchases, returns), outbound (sales), transfers, and adjustments. Branch-scoped to your current branch.
| Date | Type | Quantity | Unit cost | Reference | By | Notes |
|---|---|---|---|---|---|---|
| No movements yet at this branch. | ||||||
Customers — at
| Code | Name | Type | Phone | Terms | Outstanding | Credit | Pending cheques | |
|---|---|---|---|---|---|---|---|---|
| No customers. Click "New customer" to add one. | ||||||||
Aging
| Current | 1–30 | 31–60 | 61–90 | 90+ |
|---|---|---|---|---|
Contact
Code:
Type:
Contact:
Email:
Phone:
Tax ID:
Terms & addresses
Payment terms:
Credit limit:
Billing:
Shipping:
| Invoice | Issued | Due | Terms | Total | Paid | Outstanding | Status |
|---|---|---|---|---|---|---|---|
| No invoices. | |||||||
| Reference | Date | Method | External ref | Amount | Allocated | Status |
|---|---|---|---|---|---|---|
| No receipts yet. | ||||||
| Cheque # | Bank | Date | Amount | Status | Bounce reason |
|---|---|---|---|---|---|
| No cheques from this customer. | |||||
| Reference | Date | Invoice | Reason | Type | Refund | Amount | Status |
|---|---|---|---|---|---|---|---|
| No credit notes. | |||||||
Opening balance:
Closing balance:
Total debits:
Total credits:
| Date | Reference | Description | Debit | Credit | Balance |
|---|---|---|---|---|---|
| No transactions in this period. | |||||
Suppliers — at
| Code | Name | Country | Phone | Terms | We owe | Pending cheques | |
|---|---|---|---|---|---|---|---|
| No suppliers. | |||||||
Contact
Code:
Contact:
Email:
Phone:
Trading
Country:
Currency:
Terms:
Tax ID:
Address:
| Reference | Order date | Received | Total | Paid | Outstanding | Status |
|---|---|---|---|---|---|---|
| No purchases. | ||||||
| Reference | Currency | Shipped | Received | Landed total | Status |
|---|---|---|---|---|---|
| No shipments. | |||||
| Reference | Date | Method | External ref | Amount | Status |
|---|---|---|---|---|---|
| No payments to this supplier. | |||||
Opening balance:
Closing balance:
Total debits:
Total credits:
| Date | Reference | Description | Debit | Credit | Balance |
|---|---|---|---|---|---|
| No transactions in this period. | |||||
Receipts
| Reference | Date | Customer | Method | Amount | Allocated | On-account | Status | Actions |
|---|---|---|---|---|---|---|---|---|
| No receipts. | ||||||||
Supplier Payments
| Reference | Date | Supplier | Method | Amount | Allocated | Status | Actions |
|---|---|---|---|---|---|---|---|
| No supplier payments. | |||||||
Cheques
| Cheque # | Bank | Party | Direction | Cheque date | Amount | Status | Actions |
|---|---|---|---|---|---|---|---|
| No cheques match. | |||||||
Purchases
| Reference | Supplier | Order date | Received | Total | Paid | Outstanding | Status |
|---|---|---|---|---|---|---|---|
| No purchases. | |||||||
You're editing a received purchase.
Saving will reverse the original stock movements and re-apply the new items. The supplier balance, cost-of-goods, and stock levels will be recalculated. This is only allowed because no payment has been recorded yet.
Only warehouse branches can purchase in foreign currency.
Items
| Product | Quantity | Unit cost | Disc % | Total CBM | Tax % | Line total | |
|---|---|---|---|---|---|---|---|
|
|
|||||||
| Search above to add items to this purchase. |
Header
Supplier:
Order date:
Received:
Currency:
Totals
Subtotal:
Tax:
Grand total:
Paid:
Outstanding:
In base currency (exchange rate )
Grand total ≈
Items
| SKU | Product | Quantity | Unit cost | Disc % | Total CBM | CBM / unit | Tax % | Line total | Landed | Final unit | Sell price | Projected margin | Projected % |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Totals (projected at current sell prices) |
⓵ Projected margin uses the current sell price from product master, multiplied by the received quantity. This shows what you'd earn if you sold all units at today's price. It is NOT the realised margin from actual sales.
Landed costs (freight, customs, handling, etc.)
ⓘ This purchase is already received. Adding or editing landed costs will create a stock value adjustment.
⚠ None of the line items have CBM set. Landed costs are being split equally between lines — this is unfair when items have different sizes. Click Edit above to enter Total CBM per line, or set default volume CBM on the product master so it's filled in automatically next time.
| Category | Description | Paid to | Amount | In GHS | Status | |
|---|---|---|---|---|---|---|
| Ref: | @ |
No landed costs yet. Click "Add cost" to enter freight, customs, etc.
Accounts
Journal entries
| Reference | Date | Source | Description | Debit | Credit | Status |
|---|---|---|---|---|---|---|
| No journal entries. | ||||||
Editing creates a reversal of the original plus a fresh entry. The original stays in the audit trail.
Lines
| Account | Side | Amount | Line description | |
|---|---|---|---|---|
| Debit: Credit: |
Diff: | |||
Chart of accounts
| Code | Name | Type | Normal balance | Postable | System | Active | Postings | |
|---|---|---|---|---|---|---|---|---|
| No accounts. | ||||||||
This is a system account. Code, type, and system key are protected to keep auto-posting working.
Used by the auto-posting engine to find this account. Leave blank for custom accounts.
General ledger
| Date | Reference | Description | Debit | Credit | Running balance |
|---|---|---|---|---|---|
| No postings in this range. | |||||
Trial balance
Basis: . Difference should be 0.00 — non-zero indicates an out-of-balance journal.
| Code | Name | Type | Debit | Credit | Balance |
|---|---|---|---|---|---|
| Totals | |||||
Income statement (Profit & loss)
Sales without journal entry: · Receipts: · Purchases:
⚠️ Missing chart-of-accounts entries:
⚠️ No open accounting period. Create one via Accounting → Periods.
Repost result:
: succeeded / attempted ( failed)
#:
Accrual basis: Revenue is recognized when invoiced; expenses when incurred. Reflects what you've earned/owed regardless of cash movement.
Cash basis: Revenue is recognized only when payment is received; expenses only when paid. Shows actual cash earned. Only payments that have been receipted (and cleared) appear here.
Revenue
| Less contra (returns, discounts) | ||
| () | ||
| Net revenue | ||
Cost of sales
| Total COGS | ||
| Gross profit | ||
Operating expenses
| Total operating expenses | ||
| Operating income | ||
Other income / expenses
Net income:
Balance sheet
Assets
| () | ||
| Total assets | ||
Liabilities
| Total liabilities | ||
Equity
| Current year earnings (not yet closed) | ||
| Total equity | ||
Liabilities + Equity:
Imbalance:
Cash Flow Statement (indirect method)
Starts with net income, adds back non-cash items, then walks changes in working capital. The total should reconcile to actual cash movement.
Operating activities
| Cash from operating activities |
Investing activities
| No investing activity in this period. | |
| Cash from investing activities | |
Financing activities
| No financing activity in this period. | |
| Cash from financing activities | |
| Net change in cash (computed) | |
| Opening cash balance | |
| Closing cash balance | |
| Actual cash movement (from cash accounts) | |
| Reconciliation difference |
Budgets
| Name | Fiscal year | Branch | Status | Lines | Created by | |
|---|---|---|---|---|---|---|
| No budgets yet. Click "New budget" to create one. | ||||||
Budget lines
Each line is an account with monthly budgeted amounts. Click a row to edit.
| Account | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No lines. Click "Add line" to start. | ||||||||||||||
Variance report (budget vs actual)
| Account | Type | Budget | Actual | Variance | % |
|---|---|---|---|---|---|
| Totals | |||||
Multi-currency & FX revaluation
Set a rate
Rate = amount of GHS (base) per 1 unit of the foreign currency. Example: USD/GHS = 14.50 means 1 USD = 14.50 GHS.
| Date | Currency | Rate (GHS per unit) | Source |
|---|---|---|---|
| No rates set yet. | |||
| Code | Name | Symbol | Decimals | Base | Active |
|---|---|---|---|---|---|
| base |
Run period-end FX revaluation
Re-translates all foreign-currency monetary balances (AR, AP, bank accounts) at the closing rate. Posts FX gain or loss journal entries.
Current foreign balances
| Account | Currency | Foreign balance | Booked base value |
|---|---|---|---|
Revaluation history
| Date | Account | Currency | Foreign balance | Old rate | New rate | Gain/Loss | Posted by |
|---|---|---|---|---|---|---|---|
| No revaluations yet. | |||||||
Accounting periods
Closing a period prevents anyone from posting entries with dates inside that period. Locking a period makes it permanent.
| Period | Status | Closed by | Closed at | Notes | |
|---|---|---|---|---|---|
| No periods defined. | |||||
Create new period
Bank & mobile money reconciliation
Match bank statement transactions against your books. International-standard four-corner test: statement closing ± timing differences = adjusted bank balance = adjusted book balance.
Reconciliation sessions
A session locks in a statement period with opening and closing balances from the bank. Once completed, the reconciliation is archived.
| Reference | Period | Statement closing | Variance | Status | Completed | |
|---|---|---|---|---|---|---|
| No reconciliation sessions yet. Click "New session" to start. | ||||||
Start new reconciliation session
Enter the period and the opening + closing balances from your bank statement.
—
Per bank statement
| Statement closing balance | |
| + Deposits in transit | |
| − Outstanding cheques | |
| = Adjusted bank balance |
Per books
| Book closing balance | |
| + Bank credits not in books | |
| − Bank debits not in books | |
| = Adjusted book balance |
Import or add statement entries
CSV should have columns: date, description, amount (or debit/credit), reference. Common bank/MoMo formats auto-detected.
Add manual statement entry
Statement entries
| Date | Description | Reference | Amount | Status | Matched to | |
|---|---|---|---|---|---|---|
| — | ||||||
| No statement entries. Import a CSV or add one manually. | ||||||
Match candidates
Higher score = closer match on amount, date, and direction.
| Score | Date | Reference | Amount | Side | Description | |
|---|---|---|---|---|---|---|
Fixed asset register
| Tag | Name | Category | Acquired | Cost | Accum. dep. | NBV | Status | |
|---|---|---|---|---|---|---|---|---|
| No assets. | ||||||||
Post monthly depreciation
Posts a journal entry for each active asset based on its depreciation method (straight-line or reducing-balance). Idempotent — running twice for the same month skips already-posted assets.
Tax reports (GRA)
Output VAT entries
| Date | Reference | Customer / invoice | Base | VAT |
|---|---|---|---|---|
Input VAT entries
| Date | Reference | Supplier / purchase | Base | VAT |
|---|---|---|---|---|
WHT payable (we withheld from suppliers)
| Date | Reference | Supplier | Amount |
|---|---|---|---|
WHT receivable (customers deducted from our receipts)
| Date | Reference | Customer | Amount |
|---|---|---|---|
Filing history
| Tax | Period | Filed | GRA ref | Payable | Paid | Paid on |
|---|---|---|---|---|---|---|
| No filings recorded. | ||||||
Record tax filing
Entry
Date:
Branch:
Source:
From:
Description:
Memo:
Lines
| Account | Description | Party | Debit | Credit |
|---|---|---|---|---|
| Totals | ||||
Edit journal entry
Editing creates a reversal of the original plus this fresh entry. The original is kept in the audit trail forever.
Lines
| Account | Side | Amount | Description | |
|---|---|---|---|---|
|
Debit: Credit: |
Diff: | |||
Inventory adjustments
| Reference | Date | Type | Items | Value | Status | Created by |
|---|---|---|---|---|---|---|
| No adjustments. | ||||||
New inventory adjustment
Items
Quantities can be positive (writing in / found) or negative (writing off / lost). The type defaults the sign.
| Product | Quantity | Unit cost | Notes | |
|---|---|---|---|---|
| No items. | ||||
Header
Date:
Branch:
Type:
Created by:
Posted by:
Reason
Total value:
Items
| SKU | Product | Quantity | Unit cost | Value | Notes |
|---|---|---|---|---|---|
Data exports
Date range for date-filtered exports
CSV exports
Click a link to download the CSV. Files open in Excel and Google Sheets directly.
Operational data
Accounting data
Full system backup
Full SQL dump of the database. Use for off-system backups.
Export history
| When | By | Type | Filename | Rows | Size |
|---|---|---|---|---|---|
| No exports yet. | |||||
Employees
| Code | Name | Job title | Department | Branch | Basic salary | Status | |
|---|---|---|---|---|---|---|---|
| No employees yet. Click "New employee" to add the first one. | |||||||
Personal
Contact
Employment
Compensation
Payment details
Other
Personal & contact
| National ID | |
| TIN | |
| SSNIT number | |
| Date of birth | |
| Gender | |
| Phone | |
| Address |
Employment & pay
| Branch | |
| Department | |
| Hire date | |
| Termination date | |
| Type | |
| Frequency | |
| Basic salary | |
| Bank | |
| MoMo |
Recurring allowances & deductions
Allowances add to gross. Deductions subtract from net. Taxable allowances are included in PAYE calculation.
| Type | Name | Amount | Taxable | Active | From | To | |
|---|---|---|---|---|---|---|---|
| No allowances or deductions configured. | |||||||
Payslip preview (at current rates)
Calculation using 2026 Ghana PAYE brackets and 5.5%/13% SSNIT. This is a preview only — no data is saved.
Earnings
| Basic salary | |
| (taxable) | |
| (non-taxable) | |
| Gross pay | |
| Taxable income (gross − SSNIT employee) |
Deductions
| SSNIT Tier 1 (employee 5.5%) | |
| Tier 2 pension (employee 5%) | |
| PAYE income tax | |
| Total deductions |
Payroll runs
Each run processes payroll for one period (typically a calendar month). After calculating, review the payslips, then post to create the journal entry.
New payroll run
All active employees will be included automatically with current salary & pay items.
| Reference | Type | Period | Pay date | Employees | Gross | Net | Employer cost | Status |
|---|---|---|---|---|---|---|---|---|
| No payroll runs yet. | ||||||||
· Pay date ·
Payslips
| Code | Name | Basic | Gross | SSNIT 5.5% | Tier 2 5% | PAYE | Other | Total deductions | Net pay | |
|---|---|---|---|---|---|---|---|---|---|---|
| No payslips. Try recalculating. | ||||||||||
Posted on by · Journal entry #
Audit log
Showing actions from all users. Audit log is read-only and append-only — entries cannot be edited or deleted. Showing only your own actions. Audit log is read-only.
Showing of entries.
| Time | User | Branch | Action | Entity | Details | IP |
|---|---|---|---|---|---|---|
| # |
before:
after:
|
|||||
| No audit entries match the filters. | ||||||
Settings
Business information
These details appear on invoices, statements, and the SPA header.
PNG, JPG, GIF, WebP or SVG · Max 2 MB
Branches
| Code | Name | Type | City | Users | Sales | Active | |
|---|---|---|---|---|---|---|---|
| No branches. | |||||||
Invoice overrides for this branch
Override the business-wide defaults specifically for this branch. Leave a field blank or a toggle on "inherit" to use the business-wide setting.
"Inherit" = use business default. Yes/No overrides it.
To limit which bank/MoMo accounts appear at this branch, enter comma-separated IDs (e.g. "1,3"). Leave blank to show all marked "Show on invoice".
Users
| Name | Home branch | Roles | Branches | Active | Last login | ||
|---|---|---|---|---|---|---|---|
| No users. | |||||||
Leave branch as "All branches" to grant the role globally.
Roles
| Code | Name | Description | Permissions | Users | Type | |
|---|---|---|---|---|---|---|
What appears on invoices
Business-wide defaults. Override per branch in the Branches tab.
Bank accounts
Bank accounts marked "Show on invoice" will appear in the payment-info block on issued invoices.
| Bank | Account name | Number | Currency | Active | On invoice | |
|---|---|---|---|---|---|---|
| No bank accounts. | ||||||
Mobile money
| Provider | Account name | Phone | Active | On invoice | |
|---|---|---|---|---|---|
| No mobile money accounts. | |||||
System defaults
Email (SMTP) settings
Required to send invoices and statements by email. Use your provider's SMTP server (Gmail, SendGrid, Mailgun, your hosting's SMTP, etc.).
✅ A password is currently saved
Send a test email to confirm your SMTP credentials work. Saves the form first, then attempts to send. The recipient will get a short test message — it's safe to send to yourself.
on port ()Username:
Password length: chars ⚠ contains whitespace
First char:
·
Last char: ·
Fingerprint:
↑ Use these to verify what you typed reached the server intact. The fingerprint is a one-way hash — two saves of the same password give the same fingerprint.
Show full SMTP conversation ( lines)
Status: If the test passes, SMTP is fully working and invoices will send. If it fails, the error message tells you exactly what to fix (wrong host, port, password, etc.).
Two-factor authentication (your account)
Adds a 6-digit code from your phone on top of your password when signing in.
Status: disabled
1. Open Google Authenticator, Authy, 1Password, or any compatible app.
2. Scan this QR code (or type the key manually):
Manual entry key:
3. Enter the 6-digit code your app is showing:
Status: enabled
You'll be asked for a 6-digit code each time you sign in.