Skip to content
Apache-2.0 · Free forever

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
PriceFree foreverFree
QBO connectionsUnlimited3
Loads into QuickBooks per monthUnlimited10
Records per jobUnlimited5,000
Sign-inNone (just you)Google, GitHub or Intuit
Team membersJust you5
Templates and scenariosAllAll
Intuit developer appYour ownProvided
Where it runsYour computerOur 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.

  • ✓assertSandboxBaseUrl in qbo-client.js refuses any API host other than sandbox-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.1 and refuses changes requested by other websites open in the same browser. Nothing on your network can reach it.
  • ✓Generated data is tagged EZTD and 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).