keep one operational order as the source of truth, then add a separate billing-allocation layer for each company that must issue documents.
This avoids copying products, services, and staff assignments into several orders. It also makes duplicate billing easier to prevent.
The problem
A business may complete one job but need more than one legal entity to issue quotations, proforma invoices, invoices, or receipts. If each entity gets a full copy of the original order, those copies can drift apart.
The cause is mixing two different concerns:
- Operations: what was ordered, delivered, and assigned.
- Billing: which company charges for each item.
The design decision
The original order should remain the operational record. Billing documents should reference allocations from that order instead of becoming independent copies.
An allocation connects a billable item or quantity to one issuing company. Each company can then generate its own documents while everyone still works from the same products, services, and staff assignments.
A practical workflow
- Create one order containing the complete scope of work.
-
Assign each billable line, quantity, or amount to an issuing company.
-
Validate that allocations do not exceed the original quantity or value.
-
Generate company-specific documents from approved allocations.
-
Track payments against each issued document while preserving the link to the original order.
Important controls
- Duplicate billing: lock or validate allocations so the same quantity cannot be invoiced twice.
-
Document identity: give every issuing company its own numbering sequence and legal details.
-
Changes after billing: use revisions or credit notes instead of silently editing issued documents.
-
Concurrent edits: use a database transaction and row locking when finalizing allocations.
-
Permissions: limit document creation and approval to authorized users for that company.
Whole-order distribution or line-level splitting?
Use whole-order distribution when each order always belongs to one billing company. It is simpler and easier to audit.
Use line-level splitting only when one order genuinely needs several issuing companies. It is more flexible, but it requires stronger validation and clearer reporting.
Common mistake
Cause: cloning the full order for every company.
Fix: keep shared operational data in one place and store only the billing allocation and company-specific document details separately.
Snapshot issued document details
Once a document is issued, preserve its issuer details, line descriptions, allocation references, and calculated totals as a snapshot. Later edits to the operational order should not silently alter that document. Keep calculations explicit about currency, rounding, and the permitted allocation balance.
A clean multi-company billing design separates operational truth from legal document ownership. The next action is to decide whether the business needs whole-order assignment or line-level allocation before designing the tables and approval flow.
