Payroll GL Reconciliation Skill
Reconcile payroll processor reports to general ledger journal entries. Automate journal entry creation, validate account mappings, detect variances, and produce audit-ready workpapers — all from raw payroll exports.
When to Use This Skill
Trigger phrases:
- - "Reconcile payroll to the GL"
- "Create journal entries for payroll"
- "Payroll didn't hit the right accounts"
- "Map Gusto export to QuickBooks"
- "Check payroll entries for month-end close"
- "Payroll reconciliation workpaper"
- "Validate payroll tax liabilities"
NOT for:
- - Running or processing payroll — use Gusto, ADP, or Paychex directly
- Filing 941/940/W-2 — use a tax compliance workflow
- On-chain payroll disbursement — use on-chain-payroll skill (PTIN-backed, not here)
- Benefits enrollment or HR workflows — out of scope
- Actual QuickBooks data entry — use
qbo-automation for live API writes
Payroll GL Reconciliation Overview
Every payroll run produces three categories of GL impact:
CODEBLOCK0
The fundamental check:
Total Debits = Gross Wages + Employer Taxes + Employer Benefits
Total Credits = Net Pay + All Withholdings + All Liabilities
Debits must equal Credits. If not, there's an error.
Standard Chart of Accounts Mapping
Expense Accounts (Debits)
| Payroll Line Item | GL Account | Account Type |
|---|
| Regular wages | 6100 – Salaries & Wages Expense | Expense |
| Overtime pay |
6100 – Salaries & Wages Expense | Expense |
| Bonus / commissions | 6110 – Bonus Expense | Expense |
| Employer FICA | 6200 – Payroll Tax Expense | Expense |
| Employer Medicare | 6200 – Payroll Tax Expense | Expense |
| FUTA | 6210 – Federal Unemployment Tax Expense | Expense |
| SUTA | 6220 – State Unemployment Tax Expense | Expense |
| Employer 401(k) match | 6300 – Employee Benefits Expense | Expense |
| Employer health premium | 6310 – Health Insurance Expense | Expense |
| Employer HSA contribution | 6320 – HSA Contribution Expense | Expense |
Liability Accounts (Credits)
| Payroll Line Item | GL Account | Account Type |
|---|
| Net pay to employees | 2000 – Net Payroll Payable | Current Liability |
| Employee FICA withheld |
2100 – FICA Payable | Current Liability |
| Employee Medicare withheld | 2110 – Medicare Payable | Current Liability |
| Federal income tax withheld | 2120 – Federal Withholding Payable | Current Liability |
| State income tax withheld | 2130 – State Withholding Payable | Current Liability |
| Employee 401(k) deduction | 2200 – 401(k) Payable | Current Liability |
| Employee health deduction | 2210 – Health Insurance Payable | Current Liability |
| Employer FICA (matching) | 2100 – FICA Payable | Current Liability |
| Employer Medicare (matching) | 2110 – Medicare Payable | Current Liability |
Note: When taxes are remitted to the IRS/state, debit the liability account and credit cash.
Department / Cost Center Allocation
For multi-department businesses, allocate wages by department:
CODEBLOCK2
Allocation methods:
- 1. Direct mapping — each employee assigned a department in payroll system
- Headcount ratio — allocate shared costs proportionally
- Time tracking — allocate based on logged hours per project/department
- Revenue ratio — allocate shared overhead by revenue contribution
Processor-Specific Export Formats
Gusto
Gusto provides a "Payroll Journal" CSV export under Reports → Journal Entries.
CODEBLOCK3
ADP
ADP exports vary by product (RUN, Workforce Now, TotalSource). Request the "Payroll Register" + "Tax Summary" reports.
CODEBLOCK4
Paychex
CODEBLOCK5
Journal Entry Builder
CODEBLOCK6
Variance Detection & Reconciliation Checks
CODEBLOCK7
Workpaper Output Format
Reconciliation Workpaper (Markdown)
CODEBLOCK8
Step-by-Step Workflow
Monthly Payroll Close Checklist
CODEBLOCK9
Tax Deposit Schedule Reference
| Tax Type | Federal Deposit Schedule | 2026 Rates |
|---|
| Federal income tax withheld | Semi-weekly or monthly* | Varies per W-4 |
| Employee FICA (SS) |
Same as FIT | 6.2% (up to $176,100 wage base) |
| Employer FICA | Same as FIT | 6.2% |
| Employee Medicare | Same as FIT | 1.45% (+ 0.9% over $200k) |
| Employer Medicare | Same as FIT | 1.45% |
| FUTA | Quarterly if liability > $500 | 0.6% (up to $7,000 wage base) |
| SUTA | Varies by state | Varies (avg ~2.7%) |
*Semi-weekly: payroll Wednesday/Thursday → deposit by following Wednesday; payroll Fri/Sat/Sun/Mon/Tue → deposit by following Friday
*Monthly: deposit by 15th of following month (if prior year tax liability < $50,000)
Integration Points
- -
qbo-automation — post journal entries via QBO API after reconciliation financial-close-checklist — payroll recon is a required step in monthly closecompliance-monitor — track 941 and state tax deposit deadlinescrypto-tax-agent — if employee equity/token compensation involvedbank-reconciliation-agent — confirm net payroll matches bank ACH outflow
Example: End-to-End Reconciliation
Input: Gusto export, 15 employees, pay period March 1-15, 2026
CODEBLOCK10
Common Errors & Fixes
| Error | Likely Cause | Fix |
|---|
| JE doesn't balance | Rounding on individual lines | Use Decimal, not float |
| FICA payable too low |
SS wage base hit for high earners | Check individual wage bases |
| Net pay variance | Off-cycle check or reversal | Search bank feed for extra ACH |
| Benefits mismatch | Mid-period enrollment change | Compare to benefits carrier invoice |
| SUTA variance | Rate update not in system | Confirm current year SUTA rate |
| Missing department | Employee dept not set in payroll | Default to 'General', flag for setup |
薪资总账对账技能
将薪资处理商报告与总账日记账分录进行对账。自动创建日记账分录,验证科目映射,检测差异,并生成审计就绪的工作底稿——全部基于原始薪资导出数据。
何时使用此技能
触发短语:
- - 将薪资与总账进行对账
- 为薪资创建日记账分录
- 薪资未计入正确科目
- 将Gusto导出映射到QuickBooks
- 检查月末结账的薪资分录
- 薪资对账工作底稿
- 验证薪资税务负债
不适用于:
- - 运行或处理薪资——直接使用Gusto、ADP或Paychex
- 提交941/940/W-2表格——使用税务合规工作流
- 链上薪资发放——使用链上薪资技能(需PTIN支持,此处不适用)
- 福利登记或HR工作流——超出范围
- 实际的QuickBooks数据录入——使用qbo-automation进行实时API写入
薪资总账对账概述
每次薪资运行会产生三类总账影响:
- 1. 工资总额费用(借方)
├── 正常工资
├── 加班工资
├── 奖金/佣金
└── 带薪休假/病假工资
- 2. 雇主薪资税费用(借方)
├── 雇主FICA(社会保障6.2%)
├── 雇主医疗保险(1.45%)
├── 联邦失业保险(FUTA 0.6%)
└── 州失业保险(SUTA——各州税率不同)
- 3. 负债科目(贷方)
├── 应付净工资(现金支出→员工银行账户)
├── 代扣员工FICA
├── 代扣员工医疗保险
├── 代扣联邦所得税
├── 代扣州所得税
├── 员工福利扣除(健康、牙科、401k)
└── 雇主福利缴款(401k匹配、HSA)
基本检查:
借方总额 = 工资总额 + 雇主税费 + 雇主福利
贷方总额 = 净工资 + 所有代扣款 + 所有负债
借方必须等于贷方。如果不相等,则存在错误。
标准会计科目表映射
费用科目(借方)
| 薪资项目 | 总账科目 | 科目类型 |
|---|
| 正常工资 | 6100 – 工资薪金费用 | 费用 |
| 加班工资 |
6100 – 工资薪金费用 | 费用 |
| 奖金/佣金 | 6110 – 奖金费用 | 费用 |
| 雇主FICA | 6200 – 薪资税费用 | 费用 |
| 雇主医疗保险 | 6200 – 薪资税费用 | 费用 |
| FUTA | 6210 – 联邦失业保险税费用 | 费用 |
| SUTA | 6220 – 州失业保险税费用 | 费用 |
| 雇主401(k)匹配 | 6300 – 员工福利费用 | 费用 |
| 雇主健康保险费 | 6310 – 健康保险费用 | 费用 |
| 雇主HSA缴款 | 6320 – HSA缴款费用 | 费用 |
负债科目(贷方)
| 薪资项目 | 总账科目 | 科目类型 |
|---|
| 应付员工净工资 | 2000 – 应付净工资 | 流动负债 |
| 代扣员工FICA |
2100 – 应付FICA | 流动负债 |
| 代扣员工医疗保险 | 2110 – 应付医疗保险 | 流动负债 |
| 代扣联邦所得税 | 2120 – 应付联邦代扣税 | 流动负债 |
| 代扣州所得税 | 2130 – 应付州代扣税 | 流动负债 |
| 员工401(k)扣除 | 2200 – 应付401(k) | 流动负债 |
| 员工健康保险扣除 | 2210 – 应付健康保险 | 流动负债 |
| 雇主FICA(匹配) | 2100 – 应付FICA | 流动负债 |
| 雇主医疗保险(匹配) | 2110 – 应付医疗保险 | 流动负债 |
注意: 当税款缴纳给IRS/州时,借记负债科目,贷记现金。
部门/成本中心分配
对于多部门企业,按部门分配工资:
6100 – 工资费用(工程部) [借方] $45,000
6100 – 工资费用(销售部) [借方] $30,000
6100 – 工资费用(行政部) [借方] $25,000
分配方法:
- 1. 直接映射 — 每位员工在薪资系统中分配部门
- 人数比例 — 按比例分配共享成本
- 时间跟踪 — 根据每个项目/部门记录的小时数分配
- 收入比例 — 按收入贡献分配共享间接费用
特定处理商导出格式
Gusto
Gusto提供薪资日记账CSV导出,路径为报告 → 日记账分录。
python
import csv
from dataclasses import dataclass
from typing import List
@dataclass
class GustoPayrollLine:
pay_date: str
employee_name: str
department: str
gross_wages: float
employee_fica: float
employee_medicare: float
federal_withholding: float
state_withholding: float
employee_401k: float
employee_health: float
net_pay: float
employer_fica: float
employer_medicare: float
futa: float
suta: float
employer_401k: float
employer_health: float
def parsegustoexport(filepath: str) -> List[GustoPayrollLine]:
解析Gusto薪资日记账CSV为结构化记录。
Gusto列名(可能因计划而异):
Check Date, Employee Name, Department, Gross Pay,
Employee OASDI, Employee Medicare, Federal WH, State WH,
401k Employee, Medical Employee, Net Pay,
Employer OASDI, Employer Medicare, FUTA, SUTA,
401k Employer, Medical Employer
lines = []
with open(filepath, r) as f:
reader = csv.DictReader(f)
for row in reader:
lines.append(GustoPayrollLine(
pay_date=row.get(Check Date, ),
employee_name=row.get(Employee Name, ),
department=row.get(Department, General),
gross_wages=float(row.get(Gross Pay, 0) or 0),
employee_fica=float(row.get(Employee OASDI, 0) or 0),
employee_medicare=float(row.get(Employee Medicare, 0) or 0),
federal_withholding=float(row.get(Federal WH, 0) or 0),
state_withholding=float(row.get(State WH, 0) or 0),
employee_401k=float(row.get(401k Employee, 0) or 0),
employee_health=float(row.get(Medical Employee, 0) or 0),
net_pay=float(row.get(Net Pay, 0) or 0),
employer_fica=float(row.get(Employer OASDI, 0) or 0),
employer_medicare=float(row.get(Employer Medicare, 0) or 0),
futa=float(row.get(FUTA, 0) or 0),
suta=float(row.get(SUTA, 0) or 0),
employer_401k=float(row.get(401k Employer, 0) or 0),
employer_health=float(row.get(Medical Employer, 0) or 0),
))
return lines
ADP
ADP导出因产品而异(RUN、Workforce Now、TotalSource)。请求薪资登记簿+税务汇总报告。
python
def parseadpregister(filepath: str) -> dict:
解析ADP薪资登记簿。ADP使用固定宽度或管道分隔格式。
关键ADP列名:
Employee Name, Reg Hours, Reg Earn, OT Earn, Gross,
FIT, SIT, SS EE, MED EE, SS ER, MED ER,
401K EE, 401K ER, Medical EE, Medical ER,
Net Pay, FUTA, SUI
# ADP格式检测
with open(filepath, r) as f:
header = f.readline()
delimiter = | if | in header else ,
# ... 使用检测到的分隔符解析
pass
Paychex