General Ledger Entries
The general ledger (GL) is the core of Books. Every financial transaction — invoices, payments, bills, bank transactions — creates a balanced journal entry in the GL. Books enforces double-entry accounting at the data layer, so your books are always in balance.
How Journal Entries Work
A journal entry is a set of lines, where each line debits or credits a specific GL account. The fundamental rule: total debits must equal total credits. Books enforces this — you cannot save an unbalanced entry.
Example: Recording a $1,000 service invoice
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable (1100) | $1,000 | |
| Service Revenue (4000) | $1,000 |
Journal Entry Types
| Type | Description |
|---|---|
| Manual | Created by a user for adjustments or corrections |
| System | Auto-generated by invoices, payments, bills, etc. |
| Adjusting | Month-end or year-end adjustments (accruals, deferrals) |
| Closing | Year-end entries to close revenue/expense to retained earnings |
| Reversing | Automatically reverses a prior entry (e.g., voided invoice) |
| Opening Balance | Sets initial account balances when migrating to Books |
Journal Entry Statuses
| Status | Description |
|---|---|
| Draft | Not yet posted. No impact on account balances. |
| Pending | Awaiting approval before posting. |
| Posted | Live in the GL. Affects account balances and reports. |
| Voided | Reversed. A new reversing entry is created automatically. |
Auto-Generated GL Entries
Most GL entries in Books are created automatically:
From Invoices
- Invoice sent: DR Accounts Receivable, CR Revenue (per line item account)
- Invoice voided: Reversing entry posted automatically
- Invoice written off: DR Bad Debt Expense, CR Accounts Receivable
From Payments
- Payment received: DR Bank Account (or Undeposited Funds), CR Accounts Receivable
- Deposit created: DR Bank Account, CR Undeposited Funds
- Refund issued: DR Accounts Receivable, CR Bank Account
From Bills
- Bill approved: DR Expense Account (per line item), CR Accounts Payable
- Bill payment: DR Accounts Payable, CR Bank Account
From PSA Sync
- Time entry synced: DR WIP / Labor Expense, CR appropriate account (based on COA mapping)
- Contract revenue: DR Deferred Revenue, CR Service Revenue (based on recognition schedule)
See PSA Integration for GL mapping details.
From Stripe
- Payment succeeded: DR Undeposited Funds, CR Revenue
- Refund processed: DR Revenue, CR Undeposited Funds
Creating Manual Journal Entries
For transactions not captured by the automated flows:
- Navigate to Journal Entries
- Click New Journal Entry
- Enter a description (memo) for the entry
- Set the date
- Add lines — each line needs an account, debit or credit amount, and optional description
- Verify the entry balances (Books shows the difference)
- Click Save as Draft or Post
Reversing Entries
To reverse a posted journal entry:
- Open the journal entry
- Click Void
- Books creates a new entry with the debits and credits swapped
- Both entries remain in the audit trail
Source Systems
Journal entries track where they originated:
| Source | Description |
|---|---|
| books | Created within Books (manual or system) |
| psa | Synced from PSA billable time |
| stripe | Stripe webhook events |
| hub_billing | Hub subscription billing events |
| import | Imported from external system |
| ams | Association management system |
| chms | Church management system |
GL Entry Audit Trail
Every journal entry records:
- Who created it (user ID)
- When it was created and posted
- The source system
- An idempotency key (prevents duplicate entries from webhooks or syncs)
- All modifications
View the full audit trail under Admin > Audit Log.
Accounting Periods
Periods control when entries can be posted:
- Open — Entries can be posted freely
- Soft-Locked — Warning shown, but entries can still be posted by admins
- Hard-Locked — No new entries allowed
Manage periods under Accounting Periods in the sidebar. See Reconciliation for the month-end close workflow.
Recurring Transactions
Set up journal entries that repeat on a schedule:
- Navigate to Journal Entries
- Click New Recurring Transaction
- Define the entry template (accounts, amounts)
- Set the frequency (monthly, quarterly, etc.)
- Set the start date and optional end date
Books auto-generates and posts the entry on schedule. Common uses: monthly rent, insurance amortization, depreciation.
Next Steps
- Chart of Accounts — Manage the accounts used in GL entries
- Reconciliation — Match GL entries to bank transactions
- Financial Reports — Reports built from GL data