{"openapi":"3.1.0","info":{"title":"Canada Payroll Rates API","version":"0.1.0","description":"Computes the statutory payroll contributions a Canadian employer withholds and matches: Canada Pension Plan (CPP) and the second additional CPP (CPP2), Employment Insurance (EI, federal or reduced Quebec rate, employer 1.4 times), and in Quebec the Quebec Pension Plan (QPP, with its second additional contribution) and the Quebec Parental Insurance Plan (QPIP). Rates, maximums and the basic...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://ca-payroll-rates.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. Canada Payroll Rates is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/ca-payroll-rates/docs"},"termsOfService":"https://connectorbay.com/ca-payroll-rates/terms"},"servers":[{"url":"https://ca-payroll-rates.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/ca-payroll-rates/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/cpp_contribution":{"post":{"operationId":"cpp_contribution","summary":"Employee and employer Canada Pension Plan contribution for one pay period from pensionable earnings and year-to-date con","description":"Employee and employer Canada Pension Plan contribution for one pay period from pensionable earnings and year-to-date contributions (outside Quebec). Use for \"What CPP do I deduct and match on a $2,500 biweekly paycheque in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Pensionable Earnings"},"pay_periods_per_year":{"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_contributions":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Contributions"}},"required":["pensionable_earnings","pay_periods_per_year"],"title":"cpp_contributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cpp2_contribution":{"post":{"operationId":"cpp2_contribution","summary":"Second additional CPP (CPP2) for one pay period: 4% on pensionable earnings between the year's maximum pensionable earni","description":"Second additional CPP (CPP2) for one pay period: 4% on pensionable earnings between the year's maximum pensionable earnings and the additional maximum. Use for \"My employee has been paid $70,000 so far in 2026: how much CPP2 applies to this $8,000 payment?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Pensionable Earnings"},"ytd_pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Pensionable earnings paid earlier this year, before this pay period, as a plain decimal (0 if none)","title":"Ytd Pensionable Earnings"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_cpp2":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Cpp2"}},"required":["pensionable_earnings","ytd_pensionable_earnings"],"title":"cpp2_contributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ei_premium":{"post":{"operationId":"ei_premium","summary":"Employment Insurance employee premium and the employer amount (1.4 times) for one pay period, at the federal or the redu","description":"Employment Insurance employee premium and the employer amount (1.4 times) for one pay period, at the federal or the reduced Quebec rate. Use for \"How much EI do I withhold and owe on top for a $2,500 paycheque, and does Quebec differ?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"insurable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Insurable Earnings"},"region":{"default":"rest_of_canada","description":"'rest_of_canada' (CPP and the federal EI rate) or 'quebec' (QPP, QPIP and the reduced Quebec EI rate)","title":"Region","type":"string"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_employee_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Employee Premiums"}},"required":["insurable_earnings"],"title":"ei_premiumArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/qpp_contribution":{"post":{"operationId":"qpp_contribution","summary":"Quebec Pension Plan contribution for one pay period: base plus first additional at 6.30% (2026) and the second additiona","description":"Quebec Pension Plan contribution for one pay period: base plus first additional at 6.30% (2026) and the second additional 4% above the maximum pensionable earnings. Use for \"What QPP do I withhold and match on a $3,000 monthly salary in Quebec in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Pensionable Earnings"},"pay_periods_per_year":{"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_contributions":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Contributions"},"ytd_pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Pensionable earnings paid earlier this year, before this period (used for the second additional contribution)","title":"Ytd Pensionable Earnings"},"ytd_second_additional":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Second Additional"}},"required":["pensionable_earnings","pay_periods_per_year"],"title":"qpp_contributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/qpip_premium":{"post":{"operationId":"qpip_premium","summary":"Quebec Parental Insurance Plan employee and employer premiums for one pay period with the year's maximum insurable earni","description":"Quebec Parental Insurance Plan employee and employer premiums for one pay period with the year's maximum insurable earnings. Use for \"How much QPIP do I withhold and owe on a $2,500 Quebec paycheque in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"insurable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Insurable Earnings"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_employee_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Employee Premiums"},"ytd_employer_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Employer QPIP premiums already paid this year for this employee; when left out it is derived from the employee's year-to-date amount","title":"Ytd Employer Premiums"}},"required":["insurable_earnings"],"title":"qpip_premiumArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/employer_cost_estimate":{"post":{"operationId":"employer_cost_estimate","summary":"Employer statutory payroll contributions for a year of even pay: CPP and CPP2 with EI outside Quebec, or QPP, second add","description":"Employer statutory payroll contributions for a year of even pay: CPP and CPP2 with EI outside Quebec, or QPP, second additional, Quebec EI and QPIP in Quebec. Use for \"What do CPP and EI add to the cost of a $60,000 employee paid every two weeks in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"annual_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Annual Earnings"},"pay_periods_per_year":{"default":26,"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"region":{"default":"rest_of_canada","description":"'rest_of_canada' (CPP and the federal EI rate) or 'quebec' (QPP, QPIP and the reduced Quebec EI rate)","title":"Region","type":"string"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"}},"required":["annual_earnings"],"title":"employer_cost_estimateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cap_hit_date":{"post":{"operationId":"cap_hit_date","summary":"Pay period in which an employee reaches each annual maximum (CPP or QPP, CPP2 or second additional, EI, QPIP) for even p","description":"Pay period in which an employee reaches each annual maximum (CPP or QPP, CPP2 or second additional, EI, QPIP) for even pay across the year. Use for \"When in 2026 does my $120,000 employee stop paying CPP and EI?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"annual_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Annual Earnings"},"pay_periods_per_year":{"default":26,"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"region":{"default":"rest_of_canada","description":"'rest_of_canada' (CPP and the federal EI rate) or 'quebec' (QPP, QPIP and the reduced Quebec EI rate)","title":"Region","type":"string"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"first_pay_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the first pay in the year as YYYY-MM-DD, inside the year; adds pay dates for weekly, biweekly, monthly, quarterly, semi-annual and annual schedules (not semi-monthly)","title":"First Pay Date"}},"required":["annual_earnings"],"title":"cap_hit_dateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payroll_parameters":{"post":{"operationId":"payroll_parameters","summary":"Every CPP, CPP2, EI, QPP and QPIP parameter for a year (rates, maximums, exemption per pay period) with sources, page da","description":"Every CPP, CPP2, EI, QPP and QPIP parameter for a year (rates, maximums, exemption per pay period) with sources, page dates, verification and announced changes. Use for \"What are the 2026 CPP, EI and QPIP maximums and where does each figure come from?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD used to say which upcoming changes are already in force; defaults to today (UTC)","title":"On Date"}},"title":"payroll_parametersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compare_years":{"post":{"operationId":"compare_years","summary":"Parameter-by-parameter difference between two years of CPP, CPP2, EI, QPP and QPIP rates and maximums. Use for \"How much","description":"Parameter-by-parameter difference between two years of CPP, CPP2, EI, QPP and QPIP rates and maximums. Use for \"How much did the CPP and EI maximums go up from 2025 to 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"year_a":{"default":2025,"description":"Earlier year, 2025 or 2026 (EI also 2027)","title":"Year A","type":"integer"},"year_b":{"default":2026,"description":"Later year, 2025 or 2026 (EI also 2027)","title":"Year B","type":"integer"}},"title":"compare_yearsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}