Skip to content

msabel27/payroll-magic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✨ Payroll Magic

Make your Gusto payroll actually reconcile in QuickBooks Desktop — in about 10 seconds.

Payroll Magic turns Gusto's messy, one-big-blob IIF export into one clean, balanced check per employee that imports cleanly and ticks off your bank rec line-by-line.

🆓 Free · 🔒 Private (runs in your browser, nothing uploaded) · ⬇️ No install, no sign-up

Try it in 3 steps: download standalone/PayrollMagic.html → double-click it → drop in your Gusto file. That's it.

Made by a bookkeeper who was tired of fighting the Gusto → QuickBooks import. If it saves you a headache, ⭐ the repo so others can find it.


Who it's for

Anyone who runs payroll in Gusto and keeps their books in QuickBooks Desktop — bookkeepers, accountants, and small-business owners who just want the bank reconciliation to work without hand-fixing every import.

The problem

When you run payroll in Gusto and export it for QuickBooks Desktop, Gusto writes the entire payroll run as a single lumped journal entry (one GENERAL JOURNAL transaction). Everyone's net pay, the gross wages, and all the taxes are bundled together into that one entry.

That causes two real headaches:

  1. You can't reconcile the bank. In real life, each employee's paycheck (or direct deposit) clears your bank account as its own separate withdrawal, and your tax payment clears separately too. But Gusto's file only gives QuickBooks one combined journal entry — so there are no individual paycheck transactions in your bank register to match against the line items on your bank statement. Ticking off the bank rec becomes a manual nightmare.

  2. QuickBooks Desktop often rejects the file. Gusto's export uses formatting the IIF importer is picky about (thousands separators in amounts, blank rows, inconsistent columns), so the import errors out or brings numbers in wrong.

In short: Gusto's file is one big blob that doesn't match how the money actually moves through your bank — which is exactly what reconciliation depends on.

What Payroll Magic does

Payroll Magic reads the Gusto export and rewrites it as clean, individual transactions that QuickBooks Desktop imports without complaint:

  • One balanced check per employee. Each paycheck becomes its own CHECK — money out of your bank account, offset to your payroll-expense account. Now every paycheck shows up as a separate line in the bank register, so it reconciles one-to-one against your bank statement, just like the real withdrawals do.
  • You add the check numbers. Before exporting, you type the check (or ACH) number for each employee, so the transaction in QuickBooks matches the actual item that cleared the bank.
  • Taxes kept whole. The employer/withheld taxes are consolidated into a single "Payroll Taxes" check (with an optional reference number), so the bank still ties out to the penny — total money out matches the original Gusto run exactly.
  • Import-ready formatting. The output is tab-delimited, two-decimal, no thousands commas, no blank rows, with the line endings QuickBooks Desktop expects — fixing the import errors Gusto's raw file causes.

The result: instead of one lumped journal entry you can't reconcile, you get a tidy, reconcilable check for every paycheck — and the bank rec just ticks off.

Before vs. after

Gusto's raw export After Payroll Magic
Structure 1 lumped journal entry 1 check per employee + 1 tax check
Shows in bank register As a single combined amount Each paycheck separately
Bank reconciliation Manual, painful Ticks off one-to-one
Check numbers None You add them per employee
QuickBooks import Often errors on formatting Clean import
Totals Tie to the penny vs. the original

It does not invent any data — it only re-shapes the same dollars Gusto already gave you. The accounts come straight from the Gusto file, and the grand total always matches the original run.

How it works (under the hood)

  1. Read the Gusto file and find each employee from the Check for <name> lines (name + net pay). Anything left over (the gross/tax side) becomes the tax total — computed as total cash out − sum of employee nets, so the result always balances even if Gusto shifts its lines around.
  2. You enter each check number.
  3. Export a QuickBooks-ready IIF: one balanced CHECK per employee plus the tax check, every transaction netting to zero.
  4. Import in QuickBooks Desktop: File → Utilities → Import → IIF Files (back up your company file first — IIF imports can't be undone).

How to use it — nothing to install

Recommended: the standalone file. It's a single web page that runs in your browser. No install, no Python, no account, no internet, no server.

  1. Download standalone/PayrollMagic.html to your computer. (On that page click the ⬇ Download raw file button — or open Raw, then right-click → Save as.)
  2. Double-click the file. It opens in your browser (Chrome/Edge).
  3. Choose Gusto IIF → type each employee's check numberExport QuickBooks IIF. It downloads as QBFixed-WthCheckNo-<name>-<date>.iif.
  4. In QuickBooks Desktop: File → Utilities → Import → IIF Files → pick that file. (Back up your company file first — IIF imports can't be undone.)

That's the whole thing. Copy the one .html file to any other computer and it works there too. Your payroll file is read and converted inside your browser — it is never uploaded anywhere.

Want a shared link instead of a file?

There's also a Google Apps Script version — the same converter hosted as a private web page in your own Google account, so you bookmark a URL instead of keeping a file. Setup steps are in gas/README.md.

📁 standalone/ — one file 📁 gas/ — hosted link
Setup None — double-click the file Paste 2 files + deploy once (~5 min)
Needs A web browser A Google account
Updates Replace the file Re-deploy once, link stays the same
Privacy Runs in your browser, never uploaded Runs in your browser, never uploaded

Both produce the exact same output. docs/DESIGN.md has the design details; tests/test.js checks the converter (run with node tests/test.js).

Notes

  • Input is Gusto's native IIF export (a GENERAL JOURNAL with Check for <name> lines). The parser reads columns by header name, so it tolerates Gusto changing column order between exports.
  • Per-employee amounts are net pay — what actually clears the bank — which is what reconciliation matches on. Employer/withheld taxes are consolidated into the single tax check, and the totals always tie back to the original file.
  • When QuickBooks imports the file, any payee name or account it hasn't seen before is offered for creation on the spot.

A quick word on trust

This handles your payroll numbers, so: it runs entirely in your browser, makes no network calls, and uploads nothing — you can read every line in standalone/PayrollMagic.html. It never invents data; it only re-shapes the same dollars Gusto gave you, and the totals always tie back to the original. Still, always back up your QuickBooks company file before importing, and eyeball the first run against your Gusto totals.

Found a bug or have an idea?

Open an issue — pull requests welcome too. If a payroll setup produces something unexpected (especially direct deposit — see the note in docs/DESIGN.md), a scrubbed sample of the Gusto export helps a lot.


Free and open. No accounts, no tracking, no catch. If Payroll Magic saved you some time, leave a ⭐ — it helps other bookkeepers find it.

Happy reconciling. 🪄

About

✨ Free, in-browser tool that turns a Gusto payroll export into a QuickBooks Desktop file that actually reconciles — one clean check per employee. No install, nothing uploaded.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors