Assembly automation for QuickBooks® Online
Set it up once.
Every build after runs itself.
Import your assemblies, link the parts to QuickBooks Online, and build one yourself. From then on the nightly run repeats the exact accounts and vendor you chose — checked at the gate stack before it posts, read back from QuickBooks after, and recorded where nothing can edit it.
Early access. Posting to live QuickBooks Online companies in this release.
Tonight's run · all times Eastern
- 05:00:00 Nightly run starts (completed) One slot a day, on the quarter hour.
- 05:00:04 Three cycle gates evaluated (completed) Enablement, pause, environment. Any refusal and the cycle stops before it opens a session or a run.
- 05:00:51 Preflight captured (completed) A read-only pass over your books. It never writes.
- 05:02:12 Three approvals recorded (completed) Build preflight, conversion source, then the posting — pre-authorized under single-operator registration, which unattended running requires.
- 05:02:37 Posted to QuickBooks Online (completed) Four documents for one build, each posted at most once.
- 05:03:02 Read back and verified (in progress) Each transaction re-read from QuickBooks by its own id, then recorded append-only.
Every request it sends Intuit is a GET or a POST, and it never sends the update, void or delete operation.
If a gate can't be read, that counts as closed. "Unknown" and "no" are the same answer.
Each bound by fingerprint to the exact build it approved — on manual builds, by two different roles.
PostgreSQL itself rejects UPDATE, DELETE and TRUNCATE on approvals, attempts and outcomes.
The setup
Four destinations, then it's yours to switch on.
Importing and authoring never touch QuickBooks Online — everything you bring in stays a draft, and publishing it still doesn't write to your books. Linking reads your item list. The one manual build in step three is the first thing that posts, and you drive it.
Add products
Import a CSV or XLSX, or build the recipe in the app. Upload, map, preview, commit — the preview is row by row, and warnings have to be acknowledged before commit unlocks.
25 MB · 50,000 rowsLink to QuickBooks
For companies at or under 500 active QuickBooks items, exact-name matches bind automatically. Above that the automatic pass is refused and every item is linked by hand. Anything ambiguous, inactive or the wrong type stops and waits for you, with the reason named.
6 outcomes · 7 named reasonsBuild one by hand
You choose the accounts, the vendor and the conversion policy once. Automation refuses an assembly with no build precedent rather than inventing them.
Required · not optionalSwitch it on
Pick the rule and the time of day. It ships off, per assembly — turning it on is a deliberate act, and an administrator can pause the whole lane instantly.
Per assemblyThe rules
Two ways to decide how much to build.
That's the whole vocabulary. There is no third mode, and the database refuses one.
Mode one
Build a fixed number every night
The same quantity, once per QuickBooks company day, whatever is on hand.
- You set the quantity — it never reads on-hand at all
- Cannot double-build. A database constraint makes a second attempt the same day record "already built today" instead of posting twice — even after a crash
- For planned or periodic production
Mode two
Keep a level on hand
Each run builds only the shortfall below the level you set, up to a per-run cap.
- Two numbers: keep at least, build at most per run
- Rounds down to your item's precision, never up — it can't overshoot your target
- The cap is a stop, not a ceiling. A shortfall bigger than the cap builds nothing and asks for a person
And the schedule
One run a night, at a time you pick
A single slot on the quarter hour — not a cron expression, not an interval.
- 96 choices on a UTC quarter-hour grid, defaulting to 09:00 UTC — 5:00 AM Eastern in summer, 4:00 AM in winter
- The screen and the runner share one clock, so what you're shown is what will happen
- Run now when you can't wait for tonight
The night shift
What happens while nobody is signed in.
The lane signs in as a short-lived machine identity that idles out in thirty minutes and is revoked when the cycle ends. One run at a time, per company, by design.
Gate
Three cycle gates before anything with a side effect — one refusal and there is no sync, no session, no ledger row. A fourth, per assembly, decides which ones the cycle considers.
Plan
Reads what's on hand, applies your rule, and materializes a numbered work order locally. Nothing has reached QuickBooks yet.
Preflight
A read-only capture that rebuilds each item's cost layers from the QuickBooks Online inventory valuation report and compiles a workpaper. It writes nothing back to your books.
Post
Searches QuickBooks for a match first, then posts. Every stage carries an idempotency key, so a retry replays instead of duplicating.
Read back
Re-reads the posted transaction from QuickBooks by its own id and fails closed unless what came back still matches what was intended.
The safety model
Most software sells you what it will do.
Here is what it refuses.
Every refusal is a named code from a closed list, shown to you in plain language, with the code preserved so you can quote it. None of these are errors — they're the product working.
Negative on hand
"On hand is negative in QuickBooks"
On "keep a level on hand", it will not build over an oversold item, whatever level you set — an oversold item has consumption with no cost layer behind it, so there is no honest cost to certify against. Fixed-quantity builds never read on hand at all.
Material shortage
"2 parts short — order them and build when they arrive"
A plan short of material cannot become a build. The screen names the parts and offers to cost the order — and says on its face that nothing is ordered or posted until you confirm.
Capped
"Shortfall above the per-run cap"
The gap is bigger than the limit you set, so nothing is built and the assembly is flagged. A partial build would quietly hide how far behind you are.
No build precedent
Never built by hand
The nightly lane reuses the accounts, vendor and conversion policy from your own manual build. With no precedent to copy, it refuses rather than choosing accounts for you.
Accepted-unknown
The answer never came back
If a post is sent and the outcome is never learned, it stops. The result is recorded as accepted-unknown and opened for reconciliation — it is never blindly re-posted.
Already built today
Once per company day, on fixed quantities
Bound to the day QuickBooks itself calls today, not your server's clock. If the company day rolls over mid-run, the rest is deferred rather than half-built across the boundary.
One bad recipe can't stop the rest
Each assembly is isolated. A failure becomes its own history row with a named class, and the run carries on to the next one.
Transient problems clear themselves. The rest say so.
The product distinguishes them out loud. When something needs a person, the message says it will not clear on its own — and what to do instead.
Approvals and evidence
History you correct by appending, never by editing.
Approvals, attempts, outcomes and accounting evidence are append-only in the database itself — PostgreSQL rejects UPDATE, DELETE and TRUNCATE on those tables, and the application's own logins have no power to switch that off.
Three approvals, in order
Build preflight, signed by an Approver. Conversion source, signed by an Accountant. Then the posting itself. The third can't be reached without the first two.
- Bound by fingerprint to the exact plan, snapshot and policy version approved
- Change the inputs and the approval stops applying — silently carrying over is impossible
- If a signer's role changed since, their approval stops counting
- The unattended lane is the exception. It runs under single-operator registration, where one machine principal signs all three. Separation of duties and unattended running cannot both hold — choose deliberately
Evidence addressed by its own content
Each record is hashed with SHA-256 over its canonical payload, and refuses to exist if the payload and the digest disagree.
- Encrypted at rest and bound to its own storage key — move the file and it fails to open
- Writes are create-only: a second write must match the stored bytes exactly or it errors
- An evidence file can be withdrawn but never rewritten — withdrawal is permanent, recorded, and the address is never reused
One build, one request, the whole picture
Intents, attempts, outcomes, approvals, the accounting evidence and its checks come back as a single ordered record per build lot.
- Verified postings carry a deep link straight into QuickBooks Online
- The browser re-checks every row and refuses one that claims verified without a digest
- Five seats — Admin, Operator, Approver, Accountant, Auditor — each read only what they should
Scope, stated plainly
What Vata Assembly does not do.
You will find this out eventually. Better here than in a demo.
It doesn't change anything already in your books
It reads, and it creates. There is no update, void or delete path to QuickBooks anywhere in it. Corrections are your call, made in QuickBooks.
It doesn't back-date or correct
A build is bound to the day QuickBooks itself calls today. You can't ask it to post to last week, and it refuses outright rather than guessing when the company day can't be read.
It doesn't replace your accounting system
QuickBooks Online stays the system of record. Vata Assembly is a separate application that connects to it — not a panel inside it.
It doesn't watch your stock in real time
There are no live alerts and no webhooks. One scheduled run a night, plus Run now — deliberately, so it isn't reading your books all day.
It doesn't export an audit bundle
Evidence is readable in the app by Accountant and Auditor seats. Downloadable bundles are pinned off in this release, not hidden behind a plan.
It doesn't hold a certification
No SOC 2, no accounting-standard attestation, no Intuit partner status. What it has are the mechanisms on this page, which you can check yourself.
Questions, answered
The ones that decide it.
Does QuickBooks Online stay my system of record?
Yes. Vata Assembly reads your items, accounts and vendors, and creates new transactions. It has no ability to edit, void or delete anything that already exists — across every place it talks to Intuit, the only permitted verbs are GET and POST.
What does one build actually post?
Up to four documents: an inventory adjustment consuming the components, a journal entry for the conversion cost, a purchase recording the finished receipt, and a clearing journal entry. Each is searched for before it's posted and re-read after, so a retry can't create a second one.
Separately, and only when you approve it, a shortage can be funded by creating a purchase order, a vendor bill or a new item. Those take an administrator or a typed confirmation of their own — they don't ride along on the build's approvals.
How long does setup take?
We won't give you a number we can't stand behind — it depends entirely on how clean your item list is. What we can tell you is the shape: four steps to a committed import, then linking, then one manual build per assembly you want automated.
The linking step is usually where the time goes. Exact-name matches bind automatically, but only for companies at or under 500 active items — that is a hard limit in this release, not a batch size. Above it, every link is made by hand. Everything else is a decision only you can make either way.
What happens when stock is short?
The build stops. The screen names how many parts are short and which ones, and offers to cost the order — stating in the same breath that nothing is ordered or posted until you confirm.
If you've authorised the nightly lane to fund shortfalls, it can create the vendor bill itself, but it only proceeds to build if that bill is independently verified by reading it back from QuickBooks with its purchase-order linkage intact. An unverified or unknown result stops the assembly.
Who has to approve a build?
Three approvals across two roles: an Approver signs the preflight, an Accountant signs the conversion source, and an Approver signs the posting. By default the requester, the operator and every approver must be different people.
A one-person shop can register as single-operator, which lets one principal sign all three. That mode is also what the unattended lane runs under — worth knowing before you enable it, because separation of duties and unattended operation are genuinely in tension.
Can I connect my real QuickBooks Online company?
Yes. This release posts to live QuickBooks Online companies, through Intuit's public OAuth 2.0 and Accounting API. Every screen tells you which company you're connected to, so there's no doubt about where a build is going.
We'd still recommend running your first assembly against a sandbox company. Be aware of what does and doesn't travel: your assemblies, recipes and history come with you, but item links and build precedent are bound to the QuickBooks company they were made in. Linking, and the one manual build per assembly, are done once per company you connect.
What if a posting's outcome is uncertain?
It stops and tells you. If a request is sent and the answer never arrives, the result is recorded as accepted-unknown and opened as an exception for reconciliation. It is never re-posted on the assumption it failed — that's how duplicate accounting gets made.
It also won't claim a matching QuickBooks record as its own unless it already holds a durable local marker proving it authorised that post. A transaction someone else created stays someone else's.
How do I find out a run stopped, or posted something I didn't want?
A stopped assembly costs you nothing, because nothing was built — it becomes its own row in the run history with a named class, and the count of assemblies needing attention is the first thing on the automation screen. There are no emails and no alerts in this release; you find out when someone opens the app.
For something posted that you'd rather undo: Vata Assembly can't reverse it, and won't pretend to. The evidence record deep-links to each transaction it created in QuickBooks Online, and you void or adjust them there — which keeps the correction in your books, under your accountant's control, where an auditor expects to find it.
What will it cost?
Pricing publishes with general availability. Early access isn't charged, and any company in it gets the number in writing before anything is billed — we're not going to surprise you with an invoice for a product you helped shake down.
What can I import, and what are the limits?
UTF-8 CSV and XLSX, up to 25 MB and 50,000 rows per file. Items, revisions, component lines and build requests, each with a template you can download in the app. Legacy .xls, .xlsb and .xlsm are refused, and any file containing formulas is rejected rather than evaluated.
Your column mappings are saved as a reusable profile, so the second import of the same file shape is a pick rather than a re-map.
Set it up once.
Automate every safe repeat.
You set the rules. Vata Assembly runs the night shift — and stops the moment something doesn't add up.
A short form — name, email, and what you assemble. Opens in a new tab. We use it only to contact you about early access; see the privacy policy.