How It Works
Basis uses an immutable voucher design. When a voucher is deleted, the system:
- Saves a complete JSON snapshot of the voucher (all header fields, line items, GL entries, and stock movements) to the VoucherArchive table.
- Records the deleting user's ID, the deletion timestamp, and the reason given.
- Hard-deletes the voucher row and all its child records from the active tables.
The Audit Trail page reads from the archive to show every deletion. Edits are also archived (with reason Edited) before the voucher is recreated with updated data.
The archive cannot be cleared through the UI. Every delete and edit is permanently recorded. This gives you a tamper-evident history of all changes.
Audit Trail Columns
| Column | Notes |
|---|---|
| Deleted At | Date and time the voucher was archived (UTC). Shown in red to indicate the record is removed from active transactions. |
| Number | The original document number (shown with strikethrough to indicate it no longer exists). |
| Type | Voucher type, e.g., SalesInvoice, Payment, JournalEntry. |
| Doc Date | The original document date of the voucher (not the deletion date). |
| Party | Customer or supplier name, if applicable. Blank for journal entries and contra entries. |
| Delete Reason | The reason the user entered when confirming the deletion. Blank if no reason was given. |
Filtering Records
Use the From and To date pickers to filter the audit trail by deletion date. By default, the current month is shown. Click Search to apply the filter, or Clear to reset.
Related
- Period Locks — prevent editing closed periods
- Staff Permissions — control which staff can delete vouchers
- Journal Entries — all edits/deletes are archived before change
Basis