@seethruhead/cra-payroll
v0.2.2
Published
Calculate Canadian payroll deductions using CRA's Payroll Deductions Online Calculator
Maintainers
Readme
@seethruhead/cra-payroll
Calculate Canadian payroll deductions using CRA's Payroll Deductions Online Calculator (PDOC).
Automates the CRA wizard via Puppeteer and returns your net pay, taxes, CPP, EI, and RRSP breakdown — per paycheck, monthly, or annually.
Requires Google Chrome — uses your system Chrome, no extra browser install needed.
Install
npm install -g @seethruhead/cra-payrollUsage
# Interactive — prompts for missing values
cra-payroll
# CLI args
cra-payroll --salary 120000 --province "British Columbia"
# Per-paycheck table for the year (tracks CPP/EI maxout)
cra-payroll --salary 263000 --table
# Annual totals
cra-payroll --salary 100000 --annual
# Monthly averages
cra-payroll --salary 100000 --monthly
# Combine them
cra-payroll --salary 263000 --table --annual --monthlyExample output (--table)
Per-Paycheck Table (2026)
══════════════════════════════════════════════════════════════════════════════════════════════
# │ Gross │ Fed Tax │ Prov Tax │ CPP │ EI │ Net Pay │ Cum CPP/EI
──────────────────────────────────────────────────────────────────────────────────────────────
1 │ 10,958.33 │ 2,232.82 │ 1,431.13 │ 669.42 │ 178.62 │ 6,446.34 │ 848.04
2 │ 10,958.33 │ 2,232.82 │ 1,431.13 │ 669.42 │ 178.62 │ 6,446.34 │ 1,696.08
... │ ... │ ... │ ... │ ... │ ... │ ... │ ...
7 │ 10,958.33 │ 2,232.82 │ 1,431.13 │ 213.93 │ 51.35 │ 7,029.10 │ 5,353.52 ← partial
8 │ 10,958.33 │ 2,232.82 │ 1,431.13 │ 0.00 │ 0.00 │ 7,294.38 │ 5,353.52 ✓ maxed
... │ ... │ ... │ ... │ ... │ ... │ ... │ ...Config
Create ~/.config/cra-payroll.json:
{
"province": "Ontario",
"annualSalary": 100000,
"payPeriod": "Semi-monthly (24 pay periods a year)",
"year": 2026,
"rrspEmployeePercent": 4,
"rrspEmployerPercent": 4
}CLI args override config file values. Missing values are prompted interactively.
Options
| Option | CLI flag | Config key | Default |
|--------|----------|------------|---------|
| Province | -p, --province | province | Ontario |
| Annual salary | -s, --salary | annualSalary | (prompted) |
| Tax year | -y, --year | year | current year |
| Pay period | --pay-period | payPeriod | Semi-monthly (24) |
| Employee RRSP % | --rrsp-employee | rrspEmployeePercent | 4 |
| Employer RRSP % | --rrsp-employer | rrspEmployerPercent | 4 |
| CPP maxed | --cpp-maxed | cppMaxedOut | false |
| EI maxed | --ei-maxed | eiMaxedOut | false |
| Yearly table | -t, --table | — | false |
| Annual totals | -a, --annual | — | false |
| Monthly averages | -m, --monthly | — | false |
| Verbose | -v, --verbose | — | false |
| Headless | --headless | — | false |
| Config path | -c, --config | — | — |
How it works
- Launches your system Chrome via Puppeteer (headed by default — CRA blocks headless)
- Fills out the PDOC wizard: province, pay period, salary, RRSP contributions
- Sets CPP/EI status and hits Calculate
- Scrapes the results page for taxes, deductions, and net pay
- For
--tablemode: runs twice (with/without CPP/EI) and simulates each paycheck using the annual maximums
Standalone binary
If you prefer a standalone binary without Node.js, see the GitHub releases.
License
MIT
