The problem
Orders arrived through several channels, each with different fee structures, revenue timing, and chart-of-accounts requirements. Sending those channels directly to QuickBooks would make the accounting platform responsible for business rules and would make retries vulnerable to duplicate postings.
What we built
We built an Azure order database between the sales systems and QuickBooks. Nightly order data enters a raw layer, is normalized into a canonical data model, and is prepared for posting and reporting in dedicated marts. Channel mappings, revenue-recognition timing, and accrual logic are maintained in a configuration layer rather than hard-coded into the application.
Posting workers are idempotent, so repeat processing does not create duplicate ledger postings. If an order cannot be mapped, the workflow flags the exception for an operator to correct and rerun; it does not invent an accounting treatment.
The principle
The implementation establishes a clean and auditable order-data layer before reporting and ledger output. Finance can update a configured rule when the business changes, without requiring a code deployment for that rule change.