# QuickBooks Online changelog

What changed in each QuickBooks Online simulator release, newest first.

What changed in each QuickBooks Online simulator release, newest first.

## v0.0.2 — 2026-11-10

1. **A plan change during a scenario load no longer clears the simulator.** When your plan changes while `POST /_rystic/scenario`, `POST /_rystic/seed` or `POST /_rystic/reset` is running, the request lands whole, or answers 403 and leaves the state as it was. Before, a scenario load could clear the state and then answer 403, and a scenario document sent to `/_rystic/seed` could answer 400 instead of 403.

## v0.0.1 — 2026-11-08

1. **A local QuickBooks Online company for the code that keeps the books.** The first release of the QuickBooks Online simulator: customers, the list entities, fourteen transactions, the TaxCode and TaxRate reads, CompanyInfo and the report reads, served on the Accounting API's `/v3/company/{realmId}/` paths in JSON at minorversion 75. Point `node-quickbooks` or `python-quickbooks` at it as the base URL with any OAuth token. Nothing reaches Intuit, no money moves and no email is sent.

2. **Customers and the rules QuickBooks applies to them.** Create, read, sparse and full update, deactivate and reactivate customers, with every write checked against the customer's current `SyncToken` and the company's name rules. A sub-customer keeps the `ParentRef`, `Job` and `BillWithParent` you send.

3. **Five scenarios to boot straight into.** `quickbooks_customer_ledger` (a bakery's eight customers, most with open balances), `quickbooks_fresh_books` (a company opened a week ago), `quickbooks_inactive_archive` (mostly deactivated customers), `quickbooks_job_hierarchy` (a contractor's customer tree two levels deep) and `quickbooks_replay_desk` (stored `requestid` responses). `--scenario` boots one, and `POST /_rystic/scenario` loads one without a restart.

4. **Tested against a live QuickBooks Online sandbox.** The newest full measurement, of 2026-11-07, matched 491 of the 538 tests that compare the simulator with QuickBooks Online (91.3%), and 2 of those tests gave no verdict. The simulator's page lists, under Limitations, the differences this release ships with.

5. **Transactions and the list entities they reference.** Create and read vendors, employees, items, accounts, classes, departments, terms and payment methods, and fourteen transactions from Invoice to Transfer. Each transaction checks the records it references, deletes with `?operation=delete`, and Invoice, Payment, SalesReceipt and BillPayment can be voided.

6. **CompanyInfo reads the realm's own company.** The CompanyInfo read returns only the company seeded under the realm in its path, and a realm with no seeded company returns 403 `AuthorizationFault` instead of a placeholder company or another realm's. A field the seeded company leaves out is filled in, and `CompanyName` and `LegalName` default to `Company <realmId>`.

7. **Payments and invoices move the balances they touch.** A payment lowers the `Balance` of each invoice it links and of its customer, and deleting or voiding it gives both back; the invoice also lists the payment in its `LinkedTxn` and raises its `SyncToken`. Creating, deleting or voiding an invoice moves its customer's `Balance` the same way. A payment whose invoice is deleted or voided stays, unapplied.

8. **`--describe` reports where the simulator answers and how it delivers webhooks.** The description lists the hosts the simulator answers for, when it has any, and how it delivers webhooks, including a receiver once one is set.

---

Source: https://www.rystic.ai/docs/simulators/quickbooks/changelog · Markdown: https://www.rystic.ai/docs/simulators/quickbooks/changelog.md
