wexample / symfony-accounting
Accounting for Symfony: ledgers, double-entry bookkeeping, invoices, bank reconciliation, VAT, closing and reports, with country rules in jurisdiction packages
Requires
- php: >=8.5
- league/csv: ^9.5
- symfony/security-core: ^7.4 || ^8.0
- symfony/validator: ^7.4 || ^8.0
- wexample/php-date: >=2.1.2
- wexample/php-pseudocode: >=2.2.4
- wexample/symfony-api: >=14.0.5
- wexample/symfony-check: >=4.0.4
- wexample/symfony-geo: >=8.0.2
- wexample/symfony-helpers: >=18.0.2
- wexample/symfony-media: >=5.0.1
- wexample/symfony-money: >=7.0.4
- wexample/symfony-organization: >=3.0.3
- wexample/symfony-payment: >=4.0.6
- wexample/symfony-pseudocode: >=4.0.2
- wexample/symfony-remote-document-reader: >=2.0.4
- wexample/symfony-remote-payment: >=3.0.4
- wexample/symfony-remote-pdf-factory: >=2.0.4
- wexample/symfony-remote-peppol: >=2.0.4
Requires (Dev)
- phpunit/phpunit: ^13
- wexample/symfony-testing: >=2.0.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- 8.0.3
- 8.0.2
- 8.0.1
- 8.0.0
- 7.0.0
- 6.0.1
- 6.0.0
- 5.0.2
- 5.0.1
- 5.0.0
- 4.0.1
- 4.0.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.0
- 1.0.96
- 1.0.95
- 1.0.94
- 1.0.93
- 1.0.92
- 1.0.91
- 1.0.90
- 1.0.89
- 1.0.88
- 1.0.87
- 1.0.85
- 1.0.84
- 1.0.83
- 1.0.82
- 1.0.81
- 1.0.80
- 1.0.79
- 1.0.78
- 1.0.77
- 1.0.76
- 1.0.75
- 1.0.74
- 1.0.73
- 1.0.72
- 1.0.71
- 1.0.70
- 1.0.69
- 1.0.68
- 1.0.67
- 1.0.66
- 1.0.65
- 1.0.64
- 1.0.63
- 1.0.62
- 1.0.61
- 1.0.60
- 1.0.59
- 1.0.58
- 1.0.57
- 1.0.56
- 1.0.55
- 1.0.54
- 1.0.50
- 1.0.49
- 1.0.48
- 1.0.47
- 1.0.46
- 1.0.45
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.48
- 0.1.47
- 0.1.46
- 0.1.45
- 0.1.44
- 0.1.43
- 0.1.42
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.38
- 0.1.37
- 0.1.36
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.3
- 0.1.2
- 0.1.1
This package is auto-updated.
Last update: 2026-10-22 17:36:31 UTC
README
Version: 8.0.3
Accounting for Symfony: ledgers, double-entry bookkeeping, invoices, bank reconciliation, VAT, closing and reports, with country rules in jurisdiction packages
Table of Contents
Installation
// config/bundles.php Wexample\SymfonyCheck\WexampleSymfonyCheckBundle::class => ['all' => true], Wexample\SymfonyRemotePayment\WexampleSymfonyRemotePaymentBundle::class => ['all' => true], Wexample\SymfonyPayment\WexampleSymfonyPaymentBundle::class => ['all' => true], Wexample\SymfonyMoney\WexampleSymfonyMoneyBundle::class => ['all' => true], Wexample\SymfonyRemotePdfFactory\WexampleSymfonyRemotePdfFactoryBundle::class => ['all' => true], Wexample\SymfonyRemoteDocumentReader\WexampleSymfonyRemoteDocumentReaderBundle::class => ['all' => true], Wexample\SymfonyRemoteVies\WexampleSymfonyRemoteViesBundle::class => ['all' => true], Wexample\SymfonyMedia\WexampleSymfonyMediaBundle::class => ['all' => true], Wexample\SymfonyRemotePeppol\WexampleSymfonyRemotePeppolBundle::class => ['all' => true], Wexample\SymfonyAccounting\WexampleSymfonyAccountingBundle::class => ['all' => true], // One per country the app keeps books in: Wexample\SymfonyAccountingFr\WexampleSymfonyAccountingFrBundle::class => ['all' => true], Wexample\SymfonyAccountingBe\WexampleSymfonyAccountingBeBundle::class => ['all' => true],
The API needs symfony-api (and its symfony-security, symfony-translations, symfony-loader bundles) and its routes imported:
# config/routes/wexample_symfony_accounting.yaml wexample_symfony_accounting: resource: '@WexampleSymfonyAccountingBundle/Resources/config/routes.yaml'
The entities are mapped automatically (accounting_* tables); generate the migration in the app.
# config/packages/wexample_symfony_accounting.yaml wexample_symfony_accounting: document: default_stylesheet: true # start from the sober charter shipped here stylesheets: ['%kernel.project_dir%/assets/pdf/invoice.css'] # the application's, posted after it
The service itself is configured by wexample_symfony_remote_pdf_factory.url, and reading received Factur-X by wexample_symfony_remote_document_reader.url.
Crons worth running:
bin/console accounting:provider-import --match # Stripe balances, then matching bin/console accounting:invoice-renew --emit # monthly documents from models bin/console check:run invoices # overdue, overpaid, missing files…
symfony-accounting keeps the books of one or many companies in a Symfony app: double-entry ledger, invoicing, bank reconciliation, VAT, closing and financial statements. An accounting firm holds one ledger per client; an app keeping its own books holds one.
Nothing in it is specific to a country. Charts of accounts, VAT rules, legal mentions and statement layouts come from jurisdiction packages — symfony-accounting-fr and symfony-accounting-be — and a default jurisdiction serves the countries no package covers.
It never renders anything: printed documents are data handed to pdf-factory, and screens live in symfony-accounting-ds (to come).