Falaah Falaah AI

Import a Payroll Register (CSV)

Import a completed payroll register from ADP, QuickBooks, Paychex, or any provider into Muin via CSV upload to trigger automatic GL posting and reconciliation.

After each payroll run in your provider (ADP, QuickBooks, Paychex, or any other), export the payroll register as a CSV and import it into Muin. From there, Muin handles the bookkeeping automatically.

What Muin does with the register:

  1. Matches each row to a Muin HR employee
  2. Posts GL entries (wages, employer taxes, employer benefits)
  3. Auto-matches the ACH payroll debit in your bank feed
  4. Makes paystubs available to employees in My Pay

Step 1: Export from Your Payroll Provider

Provider Where to export
QuickBooks Payroll Reports → Payroll Summary → Export to Excel/CSV
ADP Reports → Payroll Register Detail → Download
Paychex Reports → Payroll Journal → Export

Most providers call this a “payroll register,” “payroll journal,” or “employee earnings report.”


Step 2: Open the Import Page

Navigate to HR → Payroll → Enter Payroll Register.


Step 3: Enter Run Metadata

Field Description
Pay period start First day of the period covered
Pay period end Last day of the period covered
Check date Date employees received payment
Employer taxes Total employer-side tax expense (Social Security employer match + Medicare employer match + FUTA/SUTA). This is separate from the employee withholdings in the CSV.
Employer benefits Total employer-paid benefits (health insurance premiums, 401k match, etc.) if you want them in the GL
Reference Optional — your internal run ID (e.g. 2026-Q2-P01) for deduplication

Step 4: Upload and Map Columns

Click Upload CSV and select your export file.

Muin auto-maps columns when the header matches a canonical name. If your provider uses different headers, the column-mapping step lets you assign each CSV column to the right field:

Muin field What it means
employee_number Provider employee ID (optional if email present)
email Employee email (optional if employee_number present)
gross_pay Required — gross wages before deductions
net_pay Required — take-home after deductions
federal_tax Federal income tax withheld
state_tax State income tax withheld
social_security Employee Social Security withheld
medicare Employee Medicare withheld
ytd_gross Year-to-date gross (shown on paystub)
ytd_net Year-to-date net (shown on paystub)

Tip: gross_pay and net_pay are the only required columns. You can include as many or as few of the others as your export contains.


Step 5: Preview

Click Preview to see:

  • How many employees were resolved vs. unmatched
  • Gross total and net total for the run
  • Per-row errors (unmatched employee, net > gross, etc.)
  • Whether this run has already been imported (duplicate detection)

Resolve any errors before committing. Common fixes:

  • Unmatched employee: add the employee to Muin HR (HR → Employees → Add) or correct their email/employee_number
  • Net > gross: the CSV has a data error — gross pay must be ≥ net pay

Step 6: Commit

Click Commit Payroll Register to finalize. Muin:

  1. Creates a PayrollRun record (source = manual)
  2. Creates a PayStub for each matched employee
  3. Posts GL entries:
    • DR 5300 Payroll Wages Expense (total gross)
    • DR 5310 Employer Payroll Taxes (from the Employer taxes field you entered)
    • DR 5320 Employer Benefits Expense (from Employer benefits, if > 0)
    • CR 1000 Operating Cash (total disbursed)
  4. The bank-feed reconciliation engine auto-matches the ACH debit from your bank statement

After Import

Labor cost by program: Go to the run in the dashboard and click Allocate to split the fully-loaded cost across programs, funds, and departments based on each employee’s fund allocation settings.

Employee paystubs: Each employee sees their paystub immediately at HR → My Pay.

GL export: Download the payroll GL entries at Finance → GL Export for your accountant or grant report.


Scenario: 12-Person Mosque, Two Pay Groups

Mosque Nur al-Islam runs bi-weekly payroll for 8 full-time staff and monthly for 4 part-time staff. They run payroll through a third-party provider.

  1. After the bi-weekly payroll run, they export the payroll register CSV
  2. Upload to Muin → column map takes 30 seconds (the export headers are close enough to canonical)
  3. Enter employer taxes ($940) and commit
  4. Two GL entries post: wages DR 5300 / CR 1000 (gross), taxes DR 5310 / CR 1000
  5. The ACH debit from the bank feed auto-matches
  6. The finance director clicks Allocate → labor cost splits across the Masjid Operations program (60%) and Islamic Education program (40%) automatically based on fund allocations set up in HR

Total time: under 5 minutes per payroll run.


Troubleshooting

“Employee not found” for a row:

  • Muin matches by email first, then employee_number (lower-cased). Verify both match the employee’s Muin HR record.

Duplicate run warning:

  • Muin detects you already imported a register for this period with the same employees and amounts. Use a unique Reference field if you need two runs for the same period (e.g., off-cycle).

Net pay is wrong on the paystub:

  • The CSV net_pay column is what Muin shows. If it differs from what employees received, the source export has the error — correct it in your payroll provider first, then re-import.