Prompt
How do I set up a general ledger system for multi-entity bookkeeping with role-based access?
Latest observation
Here’s a practical way to set up a general ledger (GL) system for multi-entity bookkeeping with role-based access.
1) Define the organizational structure
Start by modeling your business structure clearly:
- Legal entities: Each company, subsidiary, LLC, branch, etc.
- Books per entity: Usually each legal entity has its own books and financial statements.
- Consolidation structure: If you need group reporting, define parent/subsidiary relationships.
- Optional dimensions:
- Department
- Location
- Project
- Product line
- Cost center
This lets you separate reporting by entity while still tracking shared operational details.
2) Design the chart of accounts
Build a standardized chart of accounts that can be used across entities.
Recommended structure:
- Account code
- Account name
- Account type: Asset, Liability, Equity, Revenue, Expense
- Parent account for rollups
- Active/inactive status
- Allowed entities if some accounts apply only to certain entities
Tip: Keep the chart consistent across entities unless there is a strong business reason not to.
3) Add entity-aware journal entry support
Your GL should store entries with at least these fields:
- Journal entry ID
- Entity ID
- Entry date
- Posting date
- Account ID
- Debit
- Credit
- Currency
- Description/memo
- Source document reference
- Created by / approved by
- Status: draft, approved, posted, reversed
Important rules:
- Every journal entry must balance per entity and currency as required.
- Prevent posting across entities unless you explicitly support intercompany accounting.
- Support reversing entries and audit trails.
4) Handle intercompany transactions
For multi-entity bookkeeping, this is critical.
Create:
- Intercompany accounts in each entity
- Intercompany elimination logic for consolidated reporting
- Matching rules for intercompany payables/receivables
Example:
- Entity A records a sale to Entity B
- Entity A books intercompany receivable
- Entity B books intercompany payable
- Consolidation eliminates both sides
5) Define role-based access control
Use RBAC with roles tied to both permissions and entity scope.
Common roles
- Admin: full access
- Accountant: create and edit journals, view reports
- Approver/Controller: approve and post entries
- Viewer/Auditor: read-only access
- Entity accountant: limited to assigned entities
- AP/AR clerk: source-entry access only
- Consolidation manager: group-level reporting only
Permission examples
- View GL reports
- Create journal entries
- Edit draft entries
- Approve entries
- Post entries
- Reverse entries
- Manage chart of accounts
- Manage entities
- Export data
- View audit logs
Scope examples
- All entities
- Specific entity
- Specific entity + department
- Group consolidation only
A user may be “Accountant” for Entity A and “Viewer” for Entity B.
6) Use workflow controls
For financial accuracy, separate duties:
- Creator enters or imports the journal
- Approver reviews and approves
- Poster finalizes it
- Auditor can inspect but not change
Also add:
- Approval thresholds
- Two-step approval for high-value journals
- Period close controls
- Locked periods after close
- Exception workflow for adjustments
7) Build an audit trail
Track every important action:
- Who created/edited/approved/posted/reversed
- Timestamp
- Old vs new values
- Reason for change
- IP/device metadata if needed
This is essential for compliance and internal control.
8) Support reporting
At minimum, produce:
- Trial balance by entity
- Balance sheet by entity
- Income statement by entity
- Consolidated financials
- General ledger detail
- Journal listing
- Intercompany aging
- Account rollups
- Comparative period reporting
Make reports filterable by:
- Entity
- Date range
- Account
- Dimension
- Currency
9) Plan the database model
A simple relational model might include:
- users
- roles
- permissions
- user_roles
- role_permissions
- entities
- entity_user_access
- accounts
- journal_entries
- journal_lines
- approvals
- periods
- audit_logs
- consolidation_eliminations
- dimensions and dimension_values
Key idea: keep access control separate from accounting data, but enforce it in every query and write operation.
10) Security and compliance basics
- MFA for privileged users
- Strong password policy / SSO
- Least-privilege access
- Immutable posting records
- Encrypted data at rest and in transit
- Regular backups and recovery tests
- Segregation of duties
- Logging and monitoring
11) Recommended implementation approach
If you’re building this from scratch:
- Start with a single-entity GL
- Add entity dimension to accounts and journals
- Add RBAC and entity-scoped permissions
- Add approvals and period close
- Add intercompany support
- Add consolidation and eliminations
- Add dimension-based reporting
If you’re using an ERP/accounting platform, configure:
- entities
- COA
- roles
- posting rules
- approval workflows
- consolidation mappings
12) Example access matrix
| Role | Entity A | Entity B | Consolidation | Post Journals | Approve |
|---|---|---|---|---|---|
| Admin | Yes | Yes | Yes | Yes | Yes |
| Entity Accountant | Yes | No | No | Yes | No |
| Controller | Yes | Yes | No | Yes | Yes |
| Consolidation Manager | No | No | Yes | No | Yes |
| Auditor | Read-only | Read-only | Read-only | No | No |
If you want, I can also provide:
- a database schema example,
- a sample permissions model, or
- a workflow diagram for multi-entity GL with approvals.
Observation history
Unlock observation history
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.