An automatic general ledger that is built from documents, not from typing
A general ledger is only as good as the discipline behind the entries in it. The usual failure is not fraud or incompetence, it is a month where nobody had time, followed by a catch-up where entries were reconstructed from memory. An automatic general ledger fixes that by deriving the entries from the documents every day, and by keeping its own copy so the two can be checked against each other.
What a shadow ledger is and why it is separate
ProCul keeps its own double-entry ledger alongside yours. Every source document that arrives produces entries in that ledger, mapped onto a canonical chart of accounts so a Zoho ledger and a Wafeq ledger can be reasoned about with the same codes. Your own ledger is left as you keep it.
The value of the separation is the comparison. Two independently derived trial balances that agree are strong evidence that both are right. Where they disagree, the difference is the finding: a missing entry, a duplicate, a classification that moved, a timing difference across a period boundary. That diff is the product more than any single report is.
Every figure traces to a document
Each entry carries the source document identifiers it was derived from, and each source document keeps the full provider payload rather than a summary of it. Nothing is discarded on ingest, because the question you will be asked in eighteen months is always about the one field somebody decided was not important.
That chain is what makes an evidence index possible. A figure on the trial balance points at the entries behind it, the entries point at the documents, and the documents are the invoice, the statement line or the settlement report as it arrived.
- Append-only source documents, with the provider payload kept whole
- Entries linked to the documents that produced them
- A hash-chained audit log of every change, with the actor recorded
- Trial balance, income statement and balance sheet derived rather than typed
Money is integer halalas, everywhere
Amounts are stored and computed as whole halalas rather than as decimal riyals. Floating point arithmetic on money drifts, and a one halala drift across forty thousand lines is a trial balance that does not balance for a reason nobody can find. It is a small decision that removes an entire category of bug.
The same discipline applies to VAT. A 15% figure is rounded once, at the point it is computed, and the line totals are checked to sum to the invoice total, which is exactly what ZATCA's validator checks too.
Suspense is a queue, not a dumping ground
A receipt nobody can identify goes to suspense, which is correct. What is not correct is leaving it there. In this system every suspense balance is an open question with a name attached and a date it was first asked, and the queue is visible on the close checklist. A month cannot be closed with unanswered questions sitting in it without that being stated on the pack.
Common questions
- Does the shadow ledger overwrite my own?
- No. It is a separate set of books. Only entries a human has approved are written back to your system, and they are written as normal journals.
- What if my chart of accounts is a mess?
- Each of your accounts is mapped to a canonical slot at setup. The mapping is the part a person reviews once; after that the engine reasons in canonical terms and reports in yours.
- Can I see why an entry was proposed?
- Yes. Each entry records what proposed it, which documents it came from, and where a model was involved, the reasoning it gave.
- How far back can the ledger be rebuilt?
- As far back as the documents go. Clearing a long backlog is quoted separately because the size varies, but the mechanism is the same one that runs daily.
Start with a free books health check
One read of your ledger, findings counted and priced, yours to keep. About ten minutes of your time.
Last reviewed: