Falaah Falaah AI

Sync Payroll from QuickBooks

If QuickBooks is your payroll system, Muin can read completed payroll runs directly and post them to your GL automatically — no CSV export required.

If your organization uses QuickBooks Online Payroll, Muin can read completed payroll runs directly from your QuickBooks account and post them to your GL — no CSV export required.

The honest boundary: Muin reads payroll results from QuickBooks. It does not initiate, submit, or run payroll in QuickBooks. Payroll must be completed in QuickBooks first.


Prerequisites

  • QuickBooks integration connected in Muin (Settings → Integrations → QuickBooks)
  • Payroll run completed and approved in QuickBooks

How It Works

Reading Payroll from QuickBooks

Go to HR → Payroll → Sync from QuickBooks (or Settings → Integrations → QuickBooks → Payroll tab).

  1. Select a date range covering the pay period
  2. Muin fetches the QuickBooks payroll summary for that window
  3. Employees are matched by email between QuickBooks and Muin HR
  4. On confirm:
    • A payroll run is created (source = quickbooks)
    • GL entry posts: DR 5300 Wages / CR 1000 Cash (based on gross pay)
    • Bank feed reconciliation auto-matches the ACH debit
    • Employees see paystubs in HR → My Pay

Note on per-tax detail: QuickBooks’s accounting summary exports aggregate “taxes” per employee — it does not break out federal / state / Social Security / Medicare individually. Those taxes appear on each employee’s paystub as a single “QuickBooks taxes” line. If you need the breakdown, use the CSV import path instead.

Idempotency

If you read the same payroll window twice, Muin returns the existing run and posts no duplicate GL entries. Payroll periods are matched by the combination of QuickBooks company (realm) and the start/end date window.


Optionally Post Payroll GL Back to QuickBooks

If you want the Muin payroll GL entries to also appear as a JournalEntry in QuickBooks:

  1. Go to Settings → Integrations → QuickBooks → Payroll
  2. Enable Post payroll GL to QuickBooks
  3. Map the three Muin GL codes to your QuickBooks accounts:
    • 5300 Wages → your QuickBooks wages expense account
    • 5310 Employer Taxes → your QuickBooks employer tax expense account
    • 1000 Cash → your QuickBooks operating cash account
  4. Save

After setup, each approved payroll run shows a Post to QuickBooks button in the dashboard. Clicking it creates a balanced JournalEntry in QuickBooks: DR wages / DR employer taxes (if any) / CR cash. The entry is idempotent — re-clicking does nothing if already posted.

Guard: Runs imported from QuickBooks (source = quickbooks) cannot be posted back to QuickBooks — that would double-count the entries. The Post button only appears for manually-imported or CSV-imported runs.


Side-by-Side Comparison

CSV Import QuickBooks Sync
Requires CSV export? Yes No
Tax line detail (federal/state/SS/medicare) Yes (from CSV) No (aggregate only)
Employer tax amount You enter it Not read (enter after sync)
Employer benefits You enter it Not read (enter after sync)
Employee matching Email or employee_number Email
Works without QBO Payroll? Yes (any provider) Requires QBO Payroll

Scenario: Food Pantry Using QuickBooks Payroll

Salaam Food Pantry runs bi-weekly payroll in QuickBooks for 6 staff. The finance director doesn’t want to export CSVs.

  1. Payroll is run and approved in QuickBooks as normal
  2. Finance director opens HR → Payroll → Sync from QuickBooks, selects the pay period
  3. Muin reads 6 employee rows, matches all 6 by email, shows the preview
  4. Confirm → wages GL posts, bank feed auto-matches the ACH
  5. Staff open the Muin mobile app → My Pay tab → see their paystub instantly

Total time: under 3 minutes, no CSV involved.


Troubleshooting

“No employees matched” on sync:

  • Verify the employee’s email in QuickBooks matches their email in Muin HR exactly (case-insensitive)
  • Check the date range — make sure it covers the completed payroll run

“QuickBooks connection error” on sync:

  • The QuickBooks OAuth token may have expired — go to Settings → Integrations → QuickBooks and reconnect
  • Verify the QuickBooks account has Payroll enabled (QuickBooks Payroll subscription required)

Post to QuickBooks returns 400 “write-back not enabled”:

  • The account map hasn’t been configured yet — go to Settings → Integrations → QuickBooks → Payroll and map the three GL codes before posting

Duplicate warning on re-sync:

  • This is expected — Muin detected you already synced this window. No action needed; the existing run and GL entries are intact.