Important
You are browsing upcoming documentation for version 7.0 of OroCommerce, scheduled for release in 2026. Read the documentation for the latest LTS version to get up-to-date information.
See our Release Process documentation for more information on the currently supported and upcoming releases.
InvoiceBundle
Note
This bundle is only available in the Enterprise edition.
OroInvoiceBundle enables invoice management in a standalone application, relying exclusively on OroPlatform as a dependency.
The bundle introduces the following entities:
\Oro\Bundle\InvoiceBundle\Entity\Invoice
- represents an invoice and includes the generic invoice fields such as invoice number, invoice date, total amount, etc.\Oro\Bundle\InvoiceBundle\Entity\InvoiceLineItem
- represents an individual line item within an invoice and includes fields such as description, unit, quantity, price, etc.
Note
This package is designed to operate independently of OroCommerce and should not include any commerce-related functionalities. All OroCommerce-specific features must be included in the OroCommerceInvoiceBundle.
The bundle introduces the invoice
feature, enabling the invoice management functionality, including:
Invoices section in the application menu in the back-office
Invoice index and view pages in the back-office
Invoice PDF generation in the back-office
Each invoice gets a unique invoice number generated automatically when an invoice is created. For more information, see Invoice Number Generation.
Invoice Internal Status
Invoice entity has the internalStatus
enum field that represents the internal status of the invoice. The statuses available out-of-the-box are listed in the \Oro\Bundle\InvoiceBundle\Entity\Invoice
class. You can manage the invoice internal status using \Oro\Bundle\InvoiceBundle\Manager\InvoiceInternalStatusManager
manager.
Sending an Invoice to a Customer
OroInvoiceBundle provides the ability to send an invoice to a customer via email. It leverages the OroEmailBundle to facilitate this functionality. The main entry points are \Oro\Bundle\CommerceInvoiceBundle\Email\InvoiceEmailModelBuilder
to build an email model and \Oro\Bundle\InvoiceBundle\Email\InvoiceEmailModelSender
to send it.
The bundle declares the oro_invoice_send_invoice_to_customer
operation backed by the \Oro\Bundle\InvoiceBundle\Operation\SendInvoiceToCustomer
class to expose this functionality in the UI as the Send to Customer button on the invoice view back-office page. It opens the Send Email dialog pre-filled with the compiled email model, including its email attachments (if any).
Note
If the invoice is not yet in the posted status, it is transitioned to this status before the dialog opens.
The email template used to compile the email is invoice_notification_template
that contains general information about an invoice and a PDF attachment of the invoice. For more information about invoice PDF documents see Invoice PDF Documents.
Hint
Learn more about how email template attachments work in Email Template Attachments.