Fill your QuickBooks Online sandbox with realistic test data
Fill a QuickBooks Online (QBO) sandbox with a year of connected invoices, bills, payments and payroll, then clear it with one command. Sandbox companies only — we show you the line of code that guarantees it.
Star on GitHub · The playground needs no account. Filling a sandbox needs a free Intuit developer account and sandbox company.
$ npx easytestdata generate --template saas --scenario rapid-growth --seed 42 --start-date 2025-09-01 --format csv --output ./sample-data
Generating files needs no account. Same seed and dates, same data, on any machine.
Not just random rows
The data is synthetic, but the accounting relationships are real, so reports and integrations behave the way they will with a customer's books.
Financially coherent
Invoices and sales receipts add up to the revenue target; bills, expenses and payroll add up to the expense budget. Payments point at real invoices.
Industry-specific
Each template sets its own service items, expense categories, cash-vs-invoice mix, payment timing and estimate/PO rates.
The messy stuff
Partial payments, unpaid invoices, credit memos, vendor credits and refund receipts: the edge cases that break integrations.
Deterministic seeds
Same template, scenario, dates and seed produce the same data every time, so bugs reproduce across machines and CI runs.
One-command cleanup
Everything is tagged EZTD. 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).
JSON and CSV too
No QBO sandbox yet? easytestdata generate writes the same plan to JSON or CSV for fixtures and seed scripts.
From empty sandbox to a year of books
Connect a sandbox
Authorize a QBO sandbox company with Intuit OAuth, from the CLI (easytestdata auth), the app on your own computer, or EasyTestData Cloud. Sandbox companies only, by design.
Pick a template and scenario
8 industries and 8 scenarios, from a quick three-month demo to a fast-growing company or messy books full of credits and refunds. Or set revenue, target profit, customers and dates yourself.
Load, test, clear
Records load in dependency order within QBO's API rate limits, with live progress. A typical 12-month run is 250–2,950 transactions depending on the scenario.
See each step with the commandsNew to QBO sandboxes? Read how to create, reset and fill one.
Why you can trust it in your sandbox
Not a promise, a design. Here is what keeps EasyTestData away from real books.
One line of code refuses production
assertSandboxBaseUrl in qbo-client.js throws for any API host other than sandbox-quickbooks.api.intuit.com. Every request goes through it. The production QuickBooks address doesn't appear anywhere in the source code; the tests use it only to prove the check rejects it.
Intuit's keys only open sandboxes
EasyTestData uses Intuit development keys, and Intuit only lets development keys authorize sandbox companies. Your real company can't be connected even by mistake.
One OAuth scope, nothing else
The only permission requested is com.intuit.quickbooks.accounting. No payments, no payroll service, no profile data beyond what QBO returns for the sandbox company.
What's stored, and when it's gone
In the web app, on EasyTestData Cloud or on your own computer: the sandbox's realm ID, its company name, and the OAuth tokens encrypted with AES-256-GCM. Disconnect the sandbox and they're deleted. The CLI keeps its tokens in a local file on your machine.
Tagged going in, cleared by tag going out
Every generated record carries the EZTD tag (in a document number, memo or note field, never the display name). Purge deletes the tagged transactions and makes the tagged customers, vendors, employees and items inactive, because QuickBooks doesn't allow deleting those. Accounts it created stay. Load two datasets with different tags and you can clear them separately. Anything you entered by hand is never touched.
The whole thing is open source under Apache-2.0, so you can read every line: easytestdata/easytestdata.
Open source first. Cloud if you want it.
Every package, including the web app, is Apache-2.0 and free. Run it on your own computer with no limits, or let us run it for you on EasyTestData Cloud.
On your computer
- ✓ Apache-2.0, every package
- ✓ No limits on connections, jobs or records
- ✓ No account or sign-in, your own Intuit app
- ✓ One command:
npx easytestdata ui
EasyTestData Cloud
- ✓ Free, with generous limits to prevent abuse
- ✓ Nothing to install or operate
- ✓ Teams included
- ✓ Same open-source code as the local app
No credit card, no paid plans. Is it really free?
Built for people who work with QBO
QBO app developers
Test sync, pagination and reporting against hundreds of invoices with partial payments and credits, not three hand-typed ones.
CI/CD pipelines
Generate fixtures with a fixed seed, or run load → test → purge against a sandbox from the CLI.
Consultants and trainers
A construction firm, a restaurant or a nonprofit in a sandbox for a demo or class, then purged when you're done.
QA and testers
Reproducible datasets for report, aggregation and aging tests. Same seed, same numbers.
Stop hand-entering test data.
or star it on GitHub and run it locally with no limits.