---
title: Accounting — your company's books, the General Ledger, and a dashboard that fills itself
description: A complete, friendly guide to the Accounting module — the General Ledger behind TSync. A financial dashboard, the chart of accounts (with types, tree and registers), visible journal entries (including recurring ones), fiscal periods and a guided close wizard, both GL-mapping pages explained, banking import & rules, payables (bills, pay-bills, checks), customer advances with the RO VAT-invoice rule, budgets, the full report list, an audit log and the automatic background jobs — with a one-click "Post to GL" that brings your existing documents into the books.
product: TSync Intelligence 11.3.6
language: en
canonical: https://docs.tsync.pro/modules/tsync-accounting/
source: https://docs.tsync.pro/llms.txt
---

# 📒 Accounting

The **Accounting** module is your company's bookkeeping — the **General Ledger (GL)**, the single place where every invoice, payment, expense and stock movement turns into a real accounting record. From it you read your true financial picture: assets, profit, what customers owe you, what you owe.

Open it from **Accounting** (`/admin/tsync_accounting`). Everything below is reachable from the **Accounting** menu in the sidebar.

---

## The dashboard — your financial picture at a glance

The first screen is a financial dashboard, with every figure read straight from the General Ledger:

- **Total assets, liabilities and equity** — the shape of the business right now.
- **Income and expenses** — both **year-to-date** and **month-to-date**.
- **Net profit** — what's left after expenses.
- **Accounts receivable** (money customers owe you) and **accounts payable** (money you owe).
- **Cash & bank** — how much liquid money you hold.
- **Recent journal entries** and an **income-vs-expense chart** to see the trend.
- A **period-close status** line — the last month you closed, the next one due, and whether any are overdue.

---

## "Post to GL" — fill an empty dashboard in one click

If you started using TSync **after** you already had invoices, payments or expenses, those older documents were never written into the ledger — so the dashboard looks empty or near-zero even though your business is busy.

When that happens you'll see a **yellow banner** at the top, something like *"N documents are not yet posted to the General Ledger,"* with a **Post to GL** button (visible to admins).

Click it **once**. TSync posts the whole backlog using the normal accounting rules, and — importantly — **never double-posts**. The dashboard then fills with your real figures.

> 💡 You only do this once. From then on, every new invoice, payment, expense, credit note, purchase, stock receipt, production order and payroll run is posted to the ledger **automatically** — the Accounting module is where these documents *land*, you rarely post by hand.

---

## The chart of accounts

The chart of accounts is the list of accounts (codes + names) that organise your bookkeeping. The Romanian and Moldovan standard plans are both supported. You can look at it three ways.

### Accounts list

Open **Chart of accounts** (`/admin/tsync_accounting/chart_of_accounts`) for the flat list. Each row shows the account **code**, **name**, **type/class** and its current **balance** (read from the posting history). You can **add**, **edit** or **delete** an account, and select several rows for a **bulk action** (activate / deactivate / delete).

> 💡 No accounts yet? Import a standard plan in one step via **Portability → "Apply GL codes"** (or **Import chart of accounts**, `/admin/tsync_accounting/account_import`), then come back here to review it.

### Account types

Open **Account types** (`/admin/tsync_accounting/account_types`). An **account type** is the broad family an account belongs to — **asset, liability, equity, income, expense** — and it decides the account's normal side (debit or credit) and where it shows on the reports. The standard types come ready; you can add your own and delete the ones you created (the built-in system types can't be removed).

### Chart of accounts — tree view

Open **Chart of accounts (tree)** (`/admin/tsync_accounting/chart_of_accounts_tree`) for the **hierarchical** view. TSync builds the tree from the account codes (so account `411` sits under class `4`), and each group/header account shows the **rolled-up balance** of its children. This is the easiest way to see the structure and totals by class.

---

## Registers — drill into one account

Open **Registers** (`/admin/tsync_accounting/registers`) for the per-account ledger. The page lists your active accounts; click **View register** on any one to see **every debit and credit movement** on that account between two dates, with a running balance. Use it to investigate or reconcile a single account.

> 💡 The same drill-down is available straight from the chart: each account has an **account history** view (`/admin/tsync_accounting/account_history`) showing its posted lines and balance as of a date.

---

## Account transfers — move money between accounts

Open **Transfers** (`/admin/tsync_accounting/transfer`) to record a move of money from one cash/bank account to another (for example, moving funds from one bank account to another). Click **New transfer**, pick the **from** and **to** accounts, the **amount**, **date** and an optional memo. TSync posts one balanced journal entry (debit the destination, credit the source) so your books stay in balance automatically.

---

## Journal entries ("note contabile")

Every posting creates a **visible journal entry**, so nothing happens behind your back.

Open **Journal entries** (`/admin/tsync_accounting/journal_entry`) for the full list of entries (drafts and posted). You can open any entry and inspect its lines — which accounts were debited and credited, and for how much. The dashboard's *Recent journal entries* list links straight into them.

### Create one by hand

Click **New entry** for a manual journal entry. Fill the header (**date, description, reference**) and add **debit/credit lines** — one account and amount per line. **The debits must equal the credits** before TSync lets you save. You can save it as a **draft** or **post** it straight to the ledger.

- **Post** turns a draft into a real ledger entry (it re-checks that the lines balance).
- **Void** reverses a posted entry (it books an equal-and-opposite entry and marks the original voided) — posted entries are never silently deleted.
- **Delete** removes a draft entry that was never posted.

### Recurring journal entries

A journal entry can be marked **recurring** so TSync re-creates and posts it automatically on a schedule — perfect for a monthly rent accrual, a standing depreciation line, or any entry you'd otherwise retype every month. The recurring runner is an automatic background job (see *Automatic background jobs* below); you can also trigger it on demand with **Run recurring now** from the journal screen.

> 💡 Recurring posting is **off by default** — turn it on in **Settings** once you've set up your recurring templates.

---

## The two GL-mapping pages — and how they differ

GL mapping is what connects your everyday documents to the right ledger accounts. TSync has **two** mapping pages, for two layers, and it helps to know which is which.

### GL mapping — the named registry (the technical base)

Open **GL mapping** (`/admin/tsync_accounting/gl_mapping`). This is the **named registry**: a fixed set of roles the posting engine asks for by name — *clearing, fees, FX difference, transit, accounts receivable, accounts payable, expense,* and so on. Each role points to one account code, and the page tells you whether that account **exists and is postable** in your chart, so you can spot a gap before it blocks a posting. This is the single technical source the Finance & Treasury engine resolves against.

### Operational mapping ("Mapare GL") — your documents → accounts

Open **Mapare GL** (`/admin/tsync_accounting/mapping`). This is the **operational** mapping: it tells TSync which ledger account each *kind of document* should hit — **sales, purchases, stock, payroll, banking, expenses**. With it in place, postings land on the right accounts automatically, so your books stay correct without manual sorting.

You don't have to fill it by hand. The **Auto-fill from registry** button seeds the operational mapping from the named registry above (and from the country standard), reporting how many rows it **created**, **updated** and **kept** (your manual choices are never overwritten). If a row couldn't be resolved (its account isn't in the chart yet), the page warns you.

### Apply GL codes — start from a standard plan

If your chart is empty, the fastest start is **Portability → "Apply GL codes" (MD/RO)**: it imports a full standard chart, fills the named registry, and seeds the operational mapping — all idempotently, in one step. Then come back to the two pages above only to adjust anything specific to your company.

---

## Banking — import statements and post them automatically

The Accounting module can take a bank statement, import it, and turn each line into a posting — with rules that classify the lines for you.

### Import a statement (CSV)

Open **Bank CSV import** (`/admin/tsync_accounting/banking_csv_import`). Pick the **bank account**, choose your **CSV file**, set the **delimiter** (comma by default) and whether the file has a **header row** to skip. TSync reads the columns (date, description, amount, reference, payee, balance), recognises common date formats automatically, treats a **positive amount as money in** and a **negative as money out**, and — importantly — **skips duplicates** (a line you already imported won't be added twice). The imported lines arrive as **pending** transactions, not yet posted.

### Banking rules — auto-classify transactions

Open **Banking rules** (`/admin/tsync_accounting/banking_rules`) to teach TSync how to classify recurring bank lines. A rule matches on the **direction** (money in / out / either), a **field** (description, payee, reference…), how to compare it (**contains, equals, starts with, range…**) and an optional **amount range**. When a line matches, the rule books it to one or more GL accounts (you can split an amount by fixed value, percentage, or "the rest"). Create, edit and delete rules as your bank traffic settles into patterns.

### Apply rules and review

Open **Posted bank transactions** (`/admin/tsync_accounting/posted_bank_transactions`) to see imported lines with their status (**pending** / **posted**), filterable by bank account. Use **Apply rules** to run your active rules over all pending lines at once — each matched line is posted to the GL (bank account on one side, the rule's accounts on the other) and marked posted with the rule that matched; lines that match nothing stay pending for you to handle. You can also apply rules to a single line.

---

## Payables — what you owe and paying it

### Bills (vendor invoices)

Open **Bills** (`/admin/tsync_accounting/bills`) for the vendor-invoice console. A **bill** is something you owe a supplier; add, edit or delete bills here and track how much is still unpaid.

### Pay Bills — settle several at once

Open **Pay Bills** (`/admin/tsync_accounting/pay_bills`) to pay **multiple bills in one batch**. Select the bills, enter the amount to pay for each, choose the **bank account** to pay from, and save. TSync records the payment batch, updates each bill's paid amount, and posts the GL entry (debit payables, credit the bank account) in one go.

### Checks / dispositions

Open **Checks** (`/admin/tsync_accounting/checks`) to record checks and payment dispositions against a bank account — useful where payments are made by check or a formal disposition document.

---

## Customer advances ("avansuri clienți")

A **customer advance** is money a customer pays you **before** there's an invoice. Open **Customer advances** (`/admin/tsync_accounting/customer_advances`) to manage them. The list filters by customer, status and date, and shows each advance's amount, its still-**open** (unapplied) balance, and status (**open → partial → applied**, or **refunded / cancelled**).

- **Receive an advance** — click **New advance**, pick the **customer**, the **amount** and **currency**, the **received date**, payment method and bank account. Tick **"requires VAT invoice"** if the advance is subject to VAT (it then gets a VAT-invoice due date). On save, TSync books it to the GL (debit cash/bank, credit the customer-advance liability).
- **Apply to invoices** — once you raise the real invoice(s), open the advance and **apply** part or all of its open balance to one or more of the customer's invoices. The status moves to *partial* or *applied* automatically.
- **Refund** — pay back the whole open balance; the advance becomes *refunded* and the reversal is posted.
- **Emit the advance VAT invoice** — generate the VAT invoice for the advance (*"factură de avans"*), as required by the Romanian Fiscal Code, **art. 282** (VAT becomes due when the advance is collected). TSync computes net + VAT from the advance amount and links the resulting invoice to the advance. It's **idempotent** — if a VAT invoice already exists for that advance, it reuses it.
- **Cancel** — cancel an advance **that hasn't been posted to the GL yet**.

> 💡 **Automatic VAT-invoice reminder.** A daily background job checks for advances that **require a VAT invoice but still don't have one after 5 working days** (the art. 282 deadline) and flags them so they don't slip. You choose how it behaves in **Settings**: **notify** (log a reminder — the list also shows an *overdue* badge; this is the default), **auto** (emit the VAT invoices automatically), or **off**.

---

## Fiscal periods

Open **Fiscal periods** (`/admin/tsync_accounting/periods`). Each year has **12 monthly periods**, each **open** or **closed**. When a month is finished you can **close (lock)** its period so no further postings change it, and **reopen** it later if you find a correction to make (reopening needs admin rights and is audited).

- **Generate periods** — create all 12 monthly periods for a given year in one click. It's safe to re-run: existing months are skipped, only missing ones are added.
- TSync gently reminds you about periods left **open past their time** — but this is a **single, tidy, recurring notification**, not a flood. By default it warns when a period has been open for more than about two months, and only **once every few days**.

> 💡 You control the rhythm. In **Accounting → Settings → "Alert frequency (days)"** (default **7**) you set how often the reminder may reappear, or turn it off entirely.

### The period-close wizard

For a proper month-end close, open the **Period close wizard** (`/admin/tsync_accounting/period_close_select`). It walks you through the close step by step:

1. **Select** — choose the month you're closing.
2. **Checks (preflight)** — TSync runs automatic checks: are all postings **balanced**, do their dates fall **inside the period**, does the ledger's receivable/payable balance agree with open invoices, is there cash/bank to confirm against the statement, is an FX revaluation due? **Blocking problems stop you here**; warnings let you continue knowingly.
3. **Accruals & adjustments** — optionally run end-of-month entries: **FX revaluation** (mark foreign-currency balances at the period-end rate) and **depreciation** (if the Assets module is active). You can skip this step.
4. **Confirm** — review a **trial-balance snapshot** as of the period end before committing.
5. **Finalize** — confirm and (optionally) add a note. TSync locks the period, stamps who closed it and when, and saves the trial-balance snapshot for the audit trail.

If you later need to undo a close, **reopen** the period from here (admin only, with a reason recorded).

---

## Partner opening balances

Open **Partner opening balances** (`/admin/tsync_accounting/partner_openings`) when you start using TSync mid-year and need to carry over what each customer owes you (or what you owe each supplier). Enter the **account** (receivable/payable), the **partner**, the **opening amount** and the **date**. These opening balances let your AR/AP figures and aging reports be correct from day one. You can edit or delete entries here.

---

## Income-statement modifications (P&L adjustments)

Open **P&L modifications** (`/admin/tsync_accounting/income_statement_mods`) to add manual adjustments that apply when the **Profit & Loss** report is computed — for presentation tweaks or reclassifications that shouldn't be a posted journal entry. Each adjustment has a description, the account code(s) it touches, an amount, and an **active/inactive** toggle so you can turn it on or off without deleting it.

---

## Budgets

Open **Budgets** (`/admin/tsync_accounting/budgets`) to plan ahead. A budget belongs to a **fiscal year** and holds **planned amounts per account, per month**.

The **budget list** shows, for each budget:

| Column | Meaning |
|--------|---------|
| **Total budgeted** | the sum you've planned |
| **Lines** | how many account rows it has |
| **vs Actual** | a link to compare plan against reality |

On the budget form, use **Add line** to add the accounts you want to plan. As you type, each row shows its **live total** and a **grand total** updates automatically. The account picker is **searchable** — start typing and it shows **code — name**. On the wide 12-month grid the **account column and header stay visible** while you scroll sideways.

From the budget list you can also:

- **Export CSV** — download a budget (account, every month, total) to open in Excel.
- **Import** — load planned amounts from a spreadsheet.
- **Duplicate** — copy a budget into another year (e.g. start next year from this year's plan), then edit.

> 💡 A budget is a **planning tool** — creating one doesn't touch the ledger. You compare it to reality in the budget reports below.

---

## Reports — and exporting them

Open **Reports** (`/admin/tsync_accounting/reports`) for all the financial statements. **Every report has Export CSV and Export PDF buttons in its header**, and the export keeps whatever **date range or filter** you set, so what you download matches what you see (CSV files open cleanly in Excel, diacritics included).

**Core statements**

- **Trial balance** — debit/credit totals per account.
- **Balance sheet** — assets, liabilities and equity at a chosen date.
- **Profit & loss** — revenue, expenses and net profit for a period (it applies your P&L modifications).
- **General journal** — every posting in date order.
- **General ledger** — all movements on a chosen account between two dates.

### If one report shows 0.00 and another shows the money

This happens on installs where **multi-company was switched on after** you had already been working for a
while. Postings made while multi-company was off carry **company 0**; when you enable the module and create your
real company, it gets a different number. From that point on:

- **company-scoped** reports (the accounting sub-reports, the journal register) ask for the **active** company,
  which has no postings — and answer, correctly, **0.00**;
- **unscoped** reports (the reports console) find the company-0 rows — and answer, also correctly, **with the
  money**.

**No report is wrong and no money is missing.** They are two correct answers to what you read as a single
question.

So that you no longer have to discover this by comparing two screens, the **Health** page now raises the
finding **"ledger anchored to a company nobody is looking at"**: it tells you how many rows exist, which company
numbers actually hold them, and that both screens are right.

TSync **re-anchors nothing on its own** — moving ledger rows from one company to another is irreversible and is
a decision about whose books these are, not a repair a validator may perform. You have three options, with
different consequences for every historical document: migrate the company-0 postings to the real company, scope
the reports console by company as well, or declare company 0 itself to be your real company. The choice is
yours — ask for help first if it is not obvious.

**VAT / tax**

- **Tax detail** — every posting to a VAT account.
- **Tax summary** — totals per VAT account (collected vs paid).
- **Tax liability** — the computed amount you owe (collected minus paid).

**Aging**

- **AR aging** — how long customer balances have been outstanding (per partner or by age bucket).
- **AP aging** — the same for what you owe suppliers.

**Reconciliation**

- **Reconciliation summary** — your bank-reconciliation batches with matched/unmatched counts.
- **Reconciliation detail** — the matched statement lines and postings for one reconciliation.

**Budget**

- **Budget overview** — a budget's monthly plan against the actual P&L.
- **Budget vs actual** — plan and actual side by side for a fiscal year.
- **Budget performance** — the variance (over/under budget) per account.

---

## Audit log

Open **Audit log** (`/admin/tsync_accounting/audit_log`) for a read-only, per-transaction record of who changed what, and when. Filter by **date range, staff member, event type, related entity** or free text. Open any row for the **full detail**, and use **Export CSV** to download the filtered list (with the full details) for compliance or review. The audit log is a history — it isn't editable.

---

## Diagnostics

Open **Diagnostics** (`/admin/tsync_accounting/diagnostics`, also a button on the dashboard) for a one-page health check of your finance setup — chart, GL posting, treasury and multi-company isolation — grouped into **blockers / warnings / notes**. It's read-only: it tells you what to fix, it never changes anything.



### ▶️ The "Post to Accounting" button

The dashboard tells you how many invoices, payments and expenses are **not yet in the ledger**, and the button posts them in one go.

It now tells you which of three things happened, because they used to share one sentence:

- **N document(s) posted** — as before;
- **N could NOT be posted**, with the reason — for example *"account 5121 is not in this chart"*. The fix is named right there: *Mapare GL*, or *Portability → Apply GL codes* for your country, then press again;
- **nothing was posted, and N are still waiting** — the run did not even reach them.

If some went in and some did not, you see both halves. Previously a run in which **every** posting was refused reported exactly the same "0 posted" as a run with nothing left to do.

### 🔇 Postings that were refused

If a document could not be recorded in the books — the account it needs is not in your chart, the period is closed, the two sides don't balance — it is **listed here, with the reason**, for the last 30 days.

This matters more than it sounds. A refused posting used to be completely silent: the invoice still went to **Paid**, the payment was still saved, and nothing at all reached the ledger. You could find out weeks later, when a balance didn't add up.

> **What you'll see:** *"3 GL posting(s) were REFUSED in the last 30 days — those documents are not in the books, while their own screens say they are settled. Most common: account_not_found:5121 (2), period_locked (1)."*

The reason names the account, so the fix is usually one step: map the role on **Mapare GL**, or run **Portability → Apply GL codes** for your country, then re-post the documents.

### 💳 Payment modes nobody has classified

A payment mode has to say **what kind of money it is** — cash, bank transfer, card, and so on. That is what decides which account a payment posts to.

A mode with no answer posts to your **default bank account**, whatever it really is. So an unclassified "Cash" mode takes money over the counter straight into the bank: the cash balance never moves, and nothing tells you why. Diagnostics now lists those modes by name.

Fix it in **Setup → Payment modes**: open each one and answer *"What kind of money is this?"*. TSync deliberately does **not** guess from the name — a mode called "Cash" is probably cash, and *probably* is not good enough for money.

---

### 💱 Foreign-currency lines posted at rate 1

A line in another currency recorded at rate exactly **1.00** means no rate was published for that date, so the
engine assumed par. Diagnostics counts them, names the currencies and the total, and says what reads that
figure downstream.

It is a **warning, not a blocker** — these are historical entries, and they are deliberately **not** corrected
automatically: nobody can know what the rate should have been on a past date. Publish the missing rate and
re-post the document if a line matters.

If the count is large, check the cause first: an **accounting base currency that disagrees with your exchange
-rate base** makes ordinary local postings look foreign. See
[Exchange rates](../exchange-rates.md).

## Automatic background jobs

A few things run quietly on the daily schedule so you don't have to remember them:

- **Currency-rate fetch** — downloads the latest exchange rates (BNR for RON, BNM for MDL). On/off in Settings.
- **FX revaluation** — once a day, revalues your foreign-currency balances at today's rate and books the gain/loss.
- **Advances VAT check** — checks for customer advances overdue for their VAT invoice (5 working days, art. 282) and either reminds you or auto-emits the invoices (your choice in Settings; throttled to about once a day).
- **Period-close reminder** — the recurring, tidy notification about periods left open past their time. Its frequency is the **"Alert frequency (days)"** setting (default **7**), and it can be turned off.
- **Recurring journal entries** — posts your recurring journal templates on schedule (off by default; enable in Settings).

---

## Settings

In **Settings** (`/admin/tsync_accounting/settings`) you choose:

- the **chart country** (which standard plan applies),
- the **fiscal-year start, numbering and accounting method**,
- the **period-reminder frequency** (the "Alert frequency (days)" above),
- the **advance VAT-invoice automation** (notify / auto / off), and
- whether **recurring journal entries** run automatically.

> 💡 **GL accounts live in one place.** Settings no longer holds a separate copy of the default accounts — you set them on the **GL mapping** page (a single source of truth). Settings shows a button that takes you straight there.

---

## In short

- **The General Ledger** behind your whole company — assets, profit, receivables, payables — read by a self-filling **dashboard** (year-to-date / month-to-date).
- **Post to GL** brings existing documents into the books **once**, then new documents post automatically.
- A **chart of accounts** (Romanian & Moldovan plans) with **account types**, a **tree view**, per-account **registers/history**, and **transfers** between accounts.
- **Visible journal entries** you can open and inspect, including **recurring** ones posted on a schedule.
- **Two GL-mapping pages**: the named **registry** (the technical base) and the operational **Mapare GL** (your documents → accounts), seeded in one step by **Apply GL codes**.
- **Banking**: import a statement (CSV), let **rules** auto-classify it, then **apply rules** to post pending lines.
- **Payables**: **bills**, **Pay Bills** (several at once) and **checks**.
- **Customer advances**: receive, apply to invoices, refund, **emit the VAT invoice** (RO art. 282) or cancel — with an automatic VAT-invoice reminder.
- **Fiscal periods** you can close/lock, **generate** for a year, and close properly through a step-by-step **wizard**, with **partner opening balances** and **P&L modifications** alongside.
- **Budgets** per fiscal year, with live totals, *vs Actual*, import/export and **duplicate into next year**.
- A full set of **reports** (trial balance, balance sheet, P&L, journal, ledger, VAT, aging, reconciliation, budget) — each exportable to **CSV and PDF**.
- An **audit log** of every change, a **Diagnostics** health-check, and quiet **automatic jobs** (rates, FX revaluation, advance VAT, period reminders, recurring entries).
