gstwatch
The C$30,000 GST/HST threshold has two tests, a 29-day registration clock, and a 6-year memory. gstwatch applies Canada's published small-supplier rules to your quarterly revenue and tells you: are you still a small supplier, when registration takes effect, when you must register by, what filing frequency CRA will assign, and how long to keep records.
Rules verified against Canada.ca, October 2026. Not tax advice — it applies published rules to your numbers and shows its work.
Install
pip install gstwatch
Check the threshold
gstwatch check --quarter 2025-12-31=8000 --quarter 2026-03-31=8000 \
--quarter 2026-06-30=8000 --quarter 2026-09-30=8000
# or from a CSV: quarter_end,amount
gstwatch check quarters.csv
Both CRA tests are run:
- Single quarter — one calendar quarter alone over C$30,000: you must charge GST/HST on the supply that takes you over; effective registration is no later than that supply; register within 29 days. Pass
--crossing YYYY-MM-DDif you know the exact supply date (otherwise the quarter end is used and the output says so). - Four-or-fewer consecutive quarters — total over C$30,000: small-supplier status ends at the end of the month following the quarter in which you crossed; collect from the first supply after that; register within 29 days of that effective date.
Exit codes: 0 still a small supplier, 3 registration required (distinct on purpose, so scripts can branch), 2 usage error. --json for automation.
Filing frequency
gstwatch freq 1400000 # -> annual (assigned: annual <= C$1.5M)
gstwatch freq 7000000 # -> monthly (quarterly up to C$6M, monthly above)
Record retention
gstwatch records 2026-05-10 # -> keep records until 2032-12-31
Six years from the end of the year the record relates to.
What's modeled — and what isn't
Modeled: the two threshold tests, 29-day registration clock, effective-date rules (single vs rolling), assigned filing bands, 6-year retention.
Not modeled: the detailed supply inclusions/exclusions (exempt supplies, financial services, capital property, goodwill, associates' rules), voluntary-registration date elections and the one-year minimum, deregistration decisions, and filing obligations themselves. The threshold test includes worldwide taxable supplies (including zero-rated) per CRA's description — bring your accountant for the exclusions.
Sources: when to register and start charging · assigned reporting periods · records to keep
License
MIT-style: use it, ship it, no warranty.
Metadata
Release files for gstwatch 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gstwatch-0.1.0.tar.gz | 9.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gstwatch-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / gstwatch-0.1.0.tar.gz
| Download URL | gstwatch-0.1.0.tar.gz |
|---|---|
| Size | 9.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33036b1718ae96006963408e69baaa4e65b8841656b3d3b228ad7c327982238d
|
|
BLAKE2b-256 checksum How to use checksums |
f2ddef602dc0036909673a7dc8bf22b03d7163da16b91b56757ed66dbb7c699e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Release files / gstwatch-0.1.0-py3-none-any.whl
| Download URL | gstwatch-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c287ca42babd7635148845ede6e41d0c4e200c787a75064175a9d485c64aa86
|
|
BLAKE2b-256 checksum How to use checksums |
0890244c9436cbccd4377d60788660fb59e5d9a7de26127d85f3f92fc2eb4574
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Security for gstwatch 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.