Skip to main content

holdbackcalc

Prompt-payment and holdback deadlines for Alberta and Ontario construction work — verified rules only. Give it an anchor date (invoice received, payment received, lien trigger event, contract anniversary); it gives back a dated schedule you can drop into a calendar or CI reminder.

Not legal advice. An administrative date calculator. Every constant was verified against official sources in October 2026 — and everything we could not verify is deliberately not encoded: run holdbackcalc what-we-dont-encode to see the holes.

Install

pip install holdbackcalc

Alberta

holdbackcalc ab-invoice 2026-01-01        # proper invoice received
holdbackcalc ab-sub-payment 2026-03-02    # owner's payment received by the contractor
Deadline Rule
dispute notice by: received + 14 days owner must give notice of dispute within 14 calendar days
payment due (owner → contractor): received + 28 days proper invoice payable within 28 calendar days
payment due (contractor → sub): owner payment + 7 days pay the sub within 7 days of receiving the owner's payment

Deliberately blank: holdback release — Alberta's statutory holdback percentage and release clock could not be verified from official text, so no date is invented.

Ontario

holdbackcalc on-lien 2026-01-01           # from the trigger event (e.g. publication of substantial performance)
holdbackcalc on-holdback 2026-01-01       # 10% holdback schedule from the same event
holdbackcalc on-invoice 2026-06-01        # proper-invoice deficiency window (2026 rules)
holdbackcalc on-annual 2026-01-01         # annual holdback release, contracts ≥ Jan 1 2026
Deadline Rule
preserve lien by: event + 60 days 60-day lien preservation period
perfect lien by: preserve deadline + 90 days 90 days to commence the action
owner must pay holdback: event + 74 days lien period (60) + owner's 14 days to pay after expiry
pass downstream: payment + 14 days contractor/sub has 14 days after receipt
deficiency notice: invoice + 7 days (2026) otherwise the invoice is deemed proper
annual notice: anniversary + 14 days (2026) payment window opens at notice +60, closes at notice +74

--json gives a machine-readable schedule for automation.

What it does NOT encode

$ holdbackcalc what-we-dont-encode
  - AB: statutory holdback percentage and the post-substantial-performance release clock
  - AB: substantial-performance payment deadline and base-building/partial-performance treatment
  - AB: detailed adjudication filing deadlines
  - ON: any 'first 90 days of contract' short lien period (not found in the current Act)
  - ON: a general 45-day pleadings deadline (not found in the current Act)

These were checked against official text in October 2026 and could not be confirmed. A calculator that guesses a legal deadline is worse than no calculator.

Sources

Notes

  • All offsets are calendar days from the anchor date you pass in.
  • Deadlines that depend on a later event (e.g. pass-down timing) print as reminders with no date unless you supply the trigger.
  • Pair with clearancewatch for the coverage side of job compliance.

License

MIT-style: use it, ship it, no warranty.

Metadata

Release files for holdbackcalc 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for holdbackcalc 0.1.0
File Size Uploaded Provenance
holdbackcalc-0.1.0.tar.gz 9.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for holdbackcalc 0.1.0
File Interpreter ABI Platform
holdbackcalc-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.1 kB

Release files / holdbackcalc-0.1.0.tar.gz

Download URL holdbackcalc-0.1.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
143cbae6f8d7cc0d651fff4101932952e139a469fdf025cd8f26e0bf2f9208fb
BLAKE2b-256 checksum
How to use checksums
7871e15fbb377b7dfe4b9415373d37422801206d42e682a0058b7c8634de6f38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / holdbackcalc-0.1.0-py3-none-any.whl

Download URL holdbackcalc-0.1.0-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89c3132f0d02616752b59f49e53dc22bfa62c5aa64b4353d143b4abc4026fa86
BLAKE2b-256 checksum
How to use checksums
fdba226b08f51bd960895ed7d9fe0f2b5a6efa759ec6a1c359a645e1812a5524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Security for holdbackcalc 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page