Guide
QuickBooks Connector: Two Companies, Invoices, and Bundles
Can separate Magento websites connect to different QuickBooks Online companies, use the Intuit sandbox, and wait to invoice until the order is Complete?
Separate Magento websites (Ireland and UK) can each connect to a different QuickBooks Online company. Use scope mode Website and OAuth on each website. Store views in one website cannot. Magento 2.4.6-p15 and PHP 8.2 are supported (2.4.x, PHP 8.1-8.3). The Intuit Developer sandbox is supported: Environment Sandbox or Production per website. Invoice export cannot run with order export off. Enable Order Export. Unpaid orders always become a QuickBooks invoice, never a sales receipt. Paid orders use Document Type, default Invoice, so sales receipts stay off. Payment export runs only if money is already captured on that export. A later payment does not sync alone. Set Order Status Allowlist to complete to wait until the order is Complete, or resync with Sync Invoice to QuickBooks after payment. Fixed-price bundles send one invoice line at the bundle price and skip child simples. Dynamic-price bundles price the children; those lines are skipped, so the parent can export at $0. Skip or flatten only creates QuickBooks items, not invoice prices. 77 bundles and 1742 simples use this rule. An unmapped parent uses QuickBooks item Services and keeps the Magento name, SKU, and amount.
This is the setup note for a Magento 2.4.6 store on PHP 8.2 that sells in two countries, Ireland and the UK, and keeps a separate QuickBooks Online company for each business.
Two QuickBooks companies at the same time
Yes, when Ireland and the UK are separate Magento websites. Set Connection Profile Scope Mode to Website (that is the default), then connect OAuth on the Ireland website and again on the UK website. Each website keeps its own QuickBooks company, client credentials, and environment.
Store views inside one website cannot each point at a different QuickBooks company. The admin list includes a store-view scope, but order sync does not support it yet. Use two websites, not two store views, for two QuickBooks companies.
Magento 2.4.6 and the Intuit sandbox
Magento 2.4.x and PHP 8.1, 8.2, or 8.3 are the supported range, which includes Magento 2.4.6-p15 and PHP 8.2. The Intuit Developer sandbox is supported. On each website, set Environment to Sandbox or Production before you connect. Sandbox and production are different Intuit companies, so connect again after you switch.
Invoices without sales receipts, including invoices paid later
Invoice export cannot run while order export is turned off. The sync queue creates the QuickBooks invoice from the Magento order, and that queue runs only when Enable Order Export is on. The separate invoice-export flag is not what starts the sync.
There is no on/off switch named sales-receipt export. An order that is not fully paid always exports as a QuickBooks invoice, never a sales receipt. An order that is already fully paid follows Paid-at-Checkout Document Type. The default is Invoice. Leave it on Invoice and sales receipts are not created.
Turn on Enable Payment Export as well. A payment is queued only when a captured amount already exists at the moment that order export succeeds. If the order is exported while it is still unpaid, the later payment does not start its own sync. After the customer pays, use Sync Invoice to QuickBooks on that order so a new export can queue the payment.
Waiting until the Magento order is Complete
Yes. Order Status Allowlist controls automatic sync. The default is often processing,complete. Set it to complete and the first export waits until the Magento order status is Complete. Do that when you want the QuickBooks invoice and the payment to go together, after the order is paid and finished. If you export earlier, while the order is unpaid, you get an open QuickBooks invoice and you must resync after payment.
Fixed-price and dynamic-price bundle invoice lines
Invoice lines use the parent order line only. Child simple lines are skipped, whether you have 77 bundles and 1742 simples or a smaller catalog. The count does not change the rule.
A fixed-price bundle keeps its price on the parent, so QuickBooks gets one line at the bundle price. The child simples are not separate invoice lines.
A dynamic-price bundle keeps its price on the child lines in Magento. Those children are skipped, and the parent row is often zero, so the QuickBooks line can export at $0. The QuickBooks total will not match the Magento order for that bundle until the line mapping is changed. Plan on fixed-price bundles if each kit should be one priced invoice line.
Bundle / Grouped Export Strategy (skip parents, or flatten to child simples) only decides which catalog items are created in QuickBooks. It does not split invoice prices across the simples. If the bundle parent was skipped and has no QuickBooks item, the invoice line falls back to the QuickBooks Services item and still sends the Magento name, SKU, and amount.
The longer setup steps are in the QuickBooks Connector user guide. The extension is QuickBooks Connector.
