Accounting Service
Chart of accounts and event publishing — the first production service on the platform.
The accounting service implements the Chart of accounts: The hierarchical set of accounts in one jurisdiction; codes are unique per chart, classifications are a closed enum, and parent links form a tree. slice: create accounts with
hierarchy, Account classification: One of asset, liability, equity, revenue, or expense; required on every account and used to derive normal balance and financial statement placement., postability, Cedar authz, and
Transactional outbox: Events are inserted into an events table in the same transaction as the state change; a publisher drains unpublished rows to RabbitMQ. publishing of account.created to RabbitMQ.
The ledger lives in the same service as a separate package (internal/ledger/) — planned, not yet
implemented.
- Domain
- Services
- Kind
- Go HTTP service
- Lifecycle
- Active
- flowctl project
- None
- Stacks
- Runs on its own
- Source
- services/accounting
Run it locally
make dev, create an account, and watch events with the log consumer.
Architecture
Binaries, chart domain, publisher, and layout.
API
The create-account endpoint and error shape.
Chart of accounts
Domain design, fields, and legacy comparison.
Response shape note
Accounting returns bare JSON on success and RFC 9457 application/problem+json on errors.
It does not yet use the template's HTTP envelope — see FRICTION.md.
Domain docs
Detailed design notes also live under docs/accounting/chart-of-accounts.md and docs/accounting/open-questions.md.