Falaah Falaah AI

Payroll Operations in Muin

How payroll works in Muin: connect your provider, import registers or sync from QuickBooks, and let Muin post the GL, reconcile the bank debit and serve pay stubs.

Muin is a Payroll Operations Layer: it owns your payroll workflow, onboarding, approvals, GL posting, bank reconciliation, and employee self-service, while your existing payroll provider (QuickBooks, ADP, Paychex, or any other) handles the tax-filing step. Bring whatever provider you already run payroll in: Muin does not replace it.

The honest boundary: Muin does not process payroll, calculate taxes, or remit to state agencies. Your payroll provider does that. Muin orchestrates everything around it and brings the results into your books automatically.


How Payroll Works in Muin

Step Who does it How
Collect employee data (W-4, I-9, direct deposit) Muin Onboarding portal
Approve hours and time off Muin Time tracking and leave
Run payroll and file taxes Your provider (QBO / ADP / Paychex) Outside Muin
Import payroll results Muin Connect your provider, CSV upload, QuickBooks sync, or manual entry
Post wages / taxes / benefits to GL Muin Automatic
Match payroll debit to bank feed Muin Automatic
Show pay stubs to employees Muin Employee self-service

Four ways to get payroll results into Muin

Pick one. They all land in the same neutral register, so GL posting, reconciliation and pay stubs work identically whichever you use.

Way Where Best when
Connect payroll HR → Payroll & Benefits → Connect payroll You want each pay run pulled in automatically instead of hand-keyed. A paid add-on.
CSV import HR → Payroll → Enter Payroll Register Your provider exports a register and you are happy to upload it each period.
QuickBooks sync Settings → Integrations → QuickBooks → Payroll You already run payroll in QuickBooks.
Manual entry HR → Payroll → Enter Payroll Register You write checks or use a spreadsheet. This is the guaranteed floor and needs no provider at all.

Connect payroll (paid add-on)

To open it: Sidebar → HR → Payroll & Benefits → Connect payroll.

Bring payroll in from your provider connects Muin to the payroll system you already run, so each completed pay run is read back automatically rather than exported and uploaded. Employees then self-serve their own pay stubs, compensation and tax documents, and the payroll debit reconciles against your bank feed without anyone matching it.

This is a paid monthly add-on, charged per connected payroll provider, for as long as a provider is connected. The screen states the exact rate under What this costs, and what it buys, and the confirmation dialog repeats it before anything is charged. Cancelling it later is done from Billing.

To connect:

  1. Go to HR → Payroll & Benefits → Connect payroll.
  2. Press Add the payroll-connect add-on and confirm. The dialog tells you the monthly rate and that the charge recurs.
  3. Enter the Provider identifier - the identifier your payroll provider is listed under - and the Access credential. A credential is required the first time you connect; on a later edit, leave it blank to keep the one already stored.
  4. Press Save connection.
  5. Press Let the first import run. You will see Import started. Pay runs appear here once the provider read finishes.

The connection reports its own state honestly, and the states are distinct on purpose:

State Means
Connected Checked and working
Connected, unverified A connection exists but has never been checked
Connected, degraded Checked, and the provider reported a problem
Not connected No live connection
Not connected, check failed The check itself could not run, so nothing is claimed either way

Pause importing stops new pay runs being pulled without ending the connection; the screen says Importing is paused. Disconnect payroll ends it, and if the provider does not confirm, Muin says Your payroll provider has not confirmed the disconnect rather than reporting a clean disconnect it did not get.

Connection capacity is finite. When it is nearly used up the screen warns Connection capacity is running low, and when it is exhausted it says New connections are not available right now instead of taking a payment it cannot fulfil.


Importing a Payroll Register

HR → Payroll → Enter Payroll Register

Muin accepts a CSV export from any payroll provider (ADP, Paychex, QuickBooks Payroll, etc.) using standard column names:

Column Required
employee_number or email One of these (both is best)
gross_pay Yes
net_pay Yes
federal_tax, state_tax, social_security, medicare Optional
ytd_gross, ytd_net Optional

If your provider uses different headers, Muin’s column-mapping step lets you drag each column to the right field before importing.

After import:

  1. Muin resolves each row to a Muin employee
  2. Preview shows totals and any unmatched rows
  3. On commit: GL entries post (wages DR 5300, employer taxes DR 5310, employer benefits DR 5320, cash CR 1000)
  4. The bank-feed reconciliation engine auto-matches the ACH payroll debit
  5. Each employee’s paystub appears in HR → My Pay

QuickBooks Payroll Sync

If your organization uses QuickBooks for payroll, Muin can read completed payroll runs directly from your QuickBooks account.

Settings → Integrations → QuickBooks → Payroll tab → Read Payroll from QuickBooks

Select a date range and Muin fetches the payroll summary, matches employees by email, and imports the run into the same neutral register. GL posting, reconciliation, and paystubs work identically to a manual import.

What Muin reads from QuickBooks:

  • Completed payroll runs (gross pay, net pay, aggregate taxes per employee)
  • Employee directory (name, email · for matching)

What Muin does not get from QuickBooks: per-line tax breakdowns (federal / state / SS / Medicare). These appear in the paystub as a single “QuickBooks taxes” line.

Posting back to QuickBooks: If you also want Muin’s payroll GL entries to appear in QuickBooks, go to Settings → Integrations → QuickBooks → Payroll → Post payroll GL to QuickBooks and map the three GL codes (wages 5300, employer taxes 5310, cash 1000) to your QuickBooks accounts. Muin then creates a balanced JournalEntry in QuickBooks for each payroll run you approve.


GL Posting and Labor-Cost Allocation

Every imported payroll run automatically posts to the general ledger:

Account Debit / Credit Amount
5300 Payroll Wages Expense DR Total gross pay
5310 Employer Payroll Taxes DR Employer tax amount
5320 Employer Benefits Expense DR Benefits (if entered)
1000 Operating Cash CR Total disbursed

Allocate labor cost by program: Go to any payroll run in the dashboard and click Allocate. Muin splits the fully-loaded labor cost (wages + taxes + benefits) across your programs, funds, and departments based on each employee’s fund allocation settings: the same dimensions your grant reports use. This makes “what did the food program cost in Q2, including staff” answerable with one click.


Employee Self-Service

Employees see their own pay stubs (payslips) at HR → My Portal → My Pay on the web, and in the My Pay tab of the Muin Go mobile app. No login to the payroll provider’s employee portal is required.

Each pay stub shows:

  • Pay period, check date, gross / net pay
  • Deduction and tax breakdown (as imported)
  • Year-to-date totals

Benefit deductions

An employee’s benefit deduction comes from the cost stored on their own election, not from what the plan costs today. Every enrollment keeps its own employee-cost and employer-cost snapshot taken at the moment of election, so correcting a plan’s price never re-prices a paycheck that has already been issued. See benefits and enrollment.


Pre-Payroll Checklist

Before each payroll run, go to HR → Payroll → Pre-Payroll Audit. Muin automatically checks:

  • New hires missing compensation setup
  • Compensation changes in the pay period
  • Approved PTO overlapping the pay period
  • Anomalies vs. the previous run (net-pay swings > 15%, missing employees)

Each finding is flagged as warning or critical. Critical findings block the run recommendation until resolved.


Payroll Reports

Navigate to HR → Payroll → Labor Cost by Program for a period-scoped view of your fully-loaded labor cost (wages + taxes + benefits) broken down by program. Useful for grant reports and board presentations.


Troubleshooting

Employee not resolving on import:

  • Check that the email or employee_number in the CSV matches the employee’s record in Muin HR
  • The employee must be Active in Muin HR

Duplicate run warning:

  • Muin detected an identical register was already imported for this period
  • If this is a correction, use a unique reference field to distinguish the two runs

QuickBooks sync not finding runs:

  • Verify the QuickBooks integration is connected (Settings → Integrations → QuickBooks)
  • Confirm the payroll was completed (not in draft) in QuickBooks before syncing

“We could not read your payroll connection.”

  • The read failed, and nothing is claimed about whether payroll is connected until it succeeds. Retry. Do not treat a failed read as “not connected”.

“Payroll connect subscribe failed” / “We could not add the payroll-connect add-on.”

  • The add-on was not added and nothing was charged. Try again; if it keeps failing, check Billing for an existing subscription.

“Payroll connect provisioning failed.”

  • The add-on is in place but the connection was not created. Re-enter the provider identifier and credential and press Save connection.

“We could not start the payroll import.”

  • Nothing was imported. Check the connection state first: an import cannot run while the state is Not connected or while No credential is on file, so nothing can be imported yet.

“New connections are not available right now.”

  • Connection capacity is exhausted. This is a refusal rather than a failure, and it is deliberately raised before a charge.

Next Steps