Run it locally
The full web app on your own computer with one command. No account, no sign-in, no limits.
$ npx easytestdata ui
# opens http://localhost:28080 in your browser;
# your data stays in ~/.easytestdata on this computer
Options, where your data lives and how to reset it are in the run-it-locally guide.
Local vs EasyTestData Cloud
| Local | Cloud | |
|---|---|---|
| Price | Free forever | Free |
| QBO connections | Unlimited | 3 |
| Loads into QuickBooks per month | Unlimited | 10 |
| Records per job | Unlimited | 5,000 |
| Sign-in | None (just you) | Google, GitHub or Intuit |
| Team members | Just you | 5 |
| Templates and scenarios | All | All |
| Intuit developer app | Your own | Provided |
| Where it runs | Your computer | Our server |
Cloud limits exist only to prevent abuse of the shared service: 3 QBO connections, 10 loads into QuickBooks per month (downloads and removals are free), 5,000 records per job and 5 members per team. Running it locally (npx easytestdata ui) has no limits.
What you need
Node.js 22.13+
Node.js 22.13 or later. The database is built in, so there is nothing else to install: no Docker, no database server.
An Intuit developer app
Free from developer.intuit.com, needed only to connect a sandbox. Add http://localhost:28080/api/v1/connections/callback to its Development redirect URIs (with --port, register the address the setup screen shows instead; the CLI's easytestdata auth uses http://localhost:8085/callback). The first time you connect, a setup screen asks for its development keys.
Nothing else
No account and no configuration. The encryption key for your QBO tokens is created on first run. Generating and downloading data works without any keys.
Prefer the terminal or a CI pipeline? The CLI generates, loads and purges without the web app.
Sandbox only, on your computer too
The same guarantees apply whether we run it or you do.
- ✓
assertSandboxBaseUrlin qbo-client.js refuses any API host other thansandbox-quickbooks.api.intuit.com. The production QuickBooks address doesn't appear anywhere in the source code; the tests use it only to prove the check rejects it. - ✓Your Intuit app's development keys can only authorize sandbox companies.
- ✓The only OAuth scope requested is
com.intuit.quickbooks.accounting. - ✓Per connection, the local database stores the realm ID, the company name and the OAuth tokens encrypted with AES-256-GCM, with a key created on first run and kept in
~/.easytestdata. Disconnecting deletes them. - ✓The app listens only on
127.0.0.1and refuses changes requested by other websites open in the same browser. Nothing on your network can reach it. - ✓Generated data is tagged
EZTDand cleared by tag. Purge deletes the transactions it added, makes its customers, vendors, employees and items inactive (accounts stay), and never touches records you made by hand (details).