- What is abivia/ledger and what problem does it solve in a Laravel app?
- It is a domain package for double-entry financial record keeping in Laravel, shipping Eloquent models, migrations, and a service provider for ledger accounts, journals, journal entries, and transactions. It gives you an accounting-style foundation for tracking balances rather than a reporting table bolted onto billing or orders. It fits best as an internal finance subsystem in a Laravel monolith or modular monolith.
- How do I install and configure abivia/ledger in a Laravel project?
- Install it with Composer and then publish its configuration and migrations using vendor:publish. That is the standard low-friction Laravel integration path described for the package. After publishing, run the migrations and design your chart of accounts before posting real journals.
- Which Laravel and PHP versions does abivia/ledger support?
- The package declares support in composer.json, but you should verify which versions are actually tested in CI rather than trusting declarations alone. The technical assessment flags this as a key question because your Laravel upgrade horizon depends on the real test matrix. Check the repository's CI configuration and recent commits before committing to it.
- How does abivia/ledger store monetary amounts and handle precision?
- The assessment does not confirm the storage strategy, so inspect the migrations and models before relying on it. You need to know whether amounts use integer minor units, fixed decimal columns, or floats, and whether arithmetic runs through BC Math throughout. Monetary precision is a material risk because it is expensive to correct after journals are written.
- Does abivia/ledger enforce balanced entries and immutable posted journals?
- The package models double-entry primitives, but the assessment explicitly asks whether balance enforcement happens at the database or model layer. Verify this in a spike by posting balanced and unbalanced journals and checking constraint and rollback behavior. Also test whether posted journals can be mutated or deleted through the models and database constraints. If immutability is not enforced, add application-level controls before production use.
- How does abivia/ledger handle concurrent journal posting and idempotency?
- The assessment flags concurrency as a key question: verify whether posting uses database transactions, row locking, and unique idempotency keys. Payment webhooks especially need idempotency so duplicate events do not create duplicate journals. Test concurrent writes in a spike before relying on it for production finance flows.
- Is abivia/ledger suitable for multi-tenant or multi-entity accounting?
- First-class multi-tenancy is an open question, and company or entity scoping may require a wrapper around the package. If you run multiple legal entities or tenants, validate how accounts and journals are scoped before modeling your chart of accounts. Treat entity isolation as something you must design and test rather than assume.
- Does abivia/ledger provide trial balance, P&L, and balance sheet reports?
- The assessment recommends building your own reporting layer, including trial balance and period summaries, as read models. The package is positioned as an accounting foundation rather than a complete statutory reporting suite. Plan to own the queries and presentation for financial statements.
- How do I integrate abivia/ledger with existing orders, invoices, and payments?
- Map each business event into balanced journal entries and integrate one revenue-adjacent flow end to end behind a feature flag. Design the chart of accounts and account-type taxonomy with finance sign-off before broad integration. For historical data, consider backfilling opening balances rather than replaying every past transaction, then reconcile.
- When should I avoid abivia/ledger and use an ERP instead?
- Avoid positioning it as a replacement for a statutory-grade ERP such as NetSuite, Xero, or QuickBooks when those systems are your finance system of record. It fits better as an internal subledger feeding an external general ledger in a Laravel monolith. If finance sits behind a separate service or you need compliance out of the box, evaluate other options.