LedgerLoom Chapter 13 — Payroll as a multi-line event ===================================================== This chapter shows how to take a **payroll register export** (a CSV from a payroll provider) and translate it into deterministic **multi-line journal entries**. What you build -------------- * A tiny import pipeline for ``payroll_register.csv`` * A deterministic pay-run-to-entry generator that posts: * **Gross wages** to expense * **Employee withholdings** to payroll liabilities (control accounts) * **Employer payroll taxes** to expense + liabilities * **Net pay** as a payable that is then paid in cash * Statutory **remittances** (pay the withholdings + employer contributions) * A control reconciliation: ``payroll register totals → G/L control account balances`` How to run ---------- .. code-block:: console make ll-ch13 Artifacts --------- The Chapter 13 runner writes ``outputs/ledgerloom/ch13`` containing: * ``payroll_register.csv`` — the sample input register (CSV) * ``payroll_runs_summary.csv`` — pay-run totals (gross, deductions, net, employer taxes) * ``payroll_remittances.csv`` — remittance schedule and payments posted in-period * ``postings_payroll.csv`` — postings generated by payroll runs, payments, and remittances * ``payroll_control_reconciliation.csv`` — subledger vs G/L reconciliation for key balances * Standard LedgerLoom artifacts: postings, trial balance, statements, invariants, manifest Notes and limitations --------------------- This is a **teaching implementation**: * The numbers are illustrative (not jurisdiction-accurate tax logic) * No accrual across periods (the demo posts each pay run on its pay date) * Remittances are modeled as a single cash payment that clears liabilities The point is to show a clean, testable pipeline from payroll exports to ledger postings and control checks.