Muin is in private beta.Watch the public release announcement —talk to us.
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

ProviderWhere to export
QuickBooks PayrollReports → Payroll Summary → Export to Excel/CSV
ADPReports → Payroll Register Detail → Download
PaychexReports → 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

FieldDescription
Pay period startFirst day of the period covered
Pay period endLast day of the period covered
Check dateDate employees received payment
Employer taxesTotal employer-side tax expense (Social Security employer match + Medicare employer match + FUTA/SUTA). This is separate from the employee withholdings in the CSV.
Employer benefitsTotal employer-paid benefits (health insurance premiums, 401k match, etc.) if you want them in the GL
ReferenceOptional — 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 fieldWhat it means
employee_numberProvider employee ID (optional if email present)
emailEmployee email (optional if employee_number present)
gross_payRequired — gross wages before deductions
net_payRequired — take-home after deductions
federal_taxFederal income tax withheld
state_taxState income tax withheld
social_securityEmployee Social Security withheld
medicareEmployee Medicare withheld
ytd_grossYear-to-date gross (shown on paystub)
ytd_netYear-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.