Skip to content
METHODOLOGY

How we compute deadlines

Data sources, computation rules, and alert cadences — per regime.

Every rule on this page is verified against the application source code. Limitations are stated explicitly. Last updated: 11 June 2026.

Data update cadence

The daily cron job runs once per day:

  • Pro plan alerts are dispatched at approximately 07:00.
  • Starter plan alerts are dispatched at approximately 09:00.
  • The cron fires a single HTTP endpoint guarded by a PostgreSQL advisory lock. The exact wall-clock time depends on Railway's scheduling precision.

Snapshot staleness: Companies House data is fetched once per run per monitored company and stored as a daily snapshot. If a filing is made at Companies House after the cron runs on a given day, PenaltyProof will not detect it until the following day's run. A snapshot is treated as stale if it is more than seven days old.

Alert cadences by regime

Cadences are the number of calendar days before the due date on which an alert is triggered. "0" means on the due date itself. These values are verified from the application's threshold constants (pricing.py, scheduler/_thresholds.py, scheduler/_alert_checks/).

Regime Alert cadence (days before due) Plan
Annual accounts (AA) 30, 14, 7 days before; 0 (due date); overdue Paid
Confirmation statement (CS01) 30, 14, 7 days before; 0 (due date); overdue Paid
VAT returns 30, 14, 7 days before; 0 (due date) Paid
Corporation Tax (CT600 filing) 90, 60, 30, 14, 7 days before; 0 (due date) Paid
Corporation Tax payment 90, 60, 30, 14, 7 days before; 0 (due date) Paid
RTI Full Payment Submission 7, 3 days before; 0 (due date) Paid
P11D and Class 1A NIC 30, 14, 7 days before; 0 (due date) Paid
Self Assessment (secondary dates) 30, 14, 7 days before; 0 (due date) Paid
CIS monthly returns 7 days before Paid
Pension auto-enrolment re-enrolment 90, 60, 30, 14, 7 days before; 0 (due date) Paid
Pension re-declaration of compliance 90, 60, 30, 14, 7 days before; 0 (due date) Paid
ECCTA ID verification 90, 30, 14 days before; 0 (due date) Paid
MTD for ITSA (quarterly updates) Fixed dates: 7 August, 7 November, 7 February, 7 May (alerts approaching each) Paid
MTD for ITSA (final declaration) Alerts approaching 31 January Paid

Free plan: overdue notices only (when a Companies House filing is past its due date and not yet detected as filed).

Data sources and computation rules

Companies House (annual accounts and confirmation statement)

Data source: Companies House Public Data API (api.company-information.service.gov.uk), read once per day per monitored company.

Due date computation: The CH API returns next_accounts.due_on and confirmation_statement.next_due fields directly. PenaltyProof reads these fields and stores them as a dated snapshot. No independent date calculation is applied to CH deadlines — we use the date CH reports, which reflects any extensions already granted.

Filing detection: If the CH API reports the filing as made (accounts_next_due advances, or confirmation_statement.last_made_up_to is updated), the snapshot delta triggers an attribution pass and no further alerts are sent for that period.

HMRC obligations — general note

PenaltyProof does not integrate with HMRC. There is no connection to HMRC systems, no access to clients' HMRC records, and no agent-authorisation credential stored. HMRC obligation deadlines are computed from statutory rules and the per-client settings you configure. If the settings are wrong, the computed due date will be wrong. PenaltyProof cannot detect whether an HMRC filing has actually been made.

VAT returns

Input required: VAT stagger group (1, 2, or 3) configured per company.

Due date computation: Quarterly VAT returns are due one calendar month and seven days after the end of the VAT period. The stagger group determines which calendar months end each quarter. PenaltyProof calculates the next return due date from the stagger group and the current date.

Source: HMRC VAT Notice 700/12 (How to fill in and submit your VAT Return) and gov.uk VAT return deadlines guidance.

Corporation Tax

Input required: CT period end date configured per company.

Due date computation: CT600 filing is due 12 months after the end of the accounting period. Corporation Tax payment is due 9 months and 1 day after the end of the accounting period.

Source: HMRC Corporation Tax filing deadline rules (gov.uk/corporation-tax).

RTI Full Payment Submission

Input required: Pay frequency and pay date configured per company.

Due date computation: Under RTI the FPS is due on or before the pay date. PenaltyProof alerts at 7 and 3 days before the configured pay date.

Source: HMRC RTI guidance (gov.uk/paye-for-employers/sending-reports).

P11D and Class 1A NIC

Due dates: P11D return is due 6 July following the end of the tax year. Class 1A NIC payment is due 22 July (19 July for cheque payments).

Source: HMRC P11D guidance (gov.uk/paye-for-employers/expenses-and-benefits-returns-p11d).

Self Assessment (secondary dates)

Coverage: Practice-level alerts for the key SA dates: 5 October (registration), 31 October (paper returns), 31 January (online filing and balancing payment), 31 July (second payment on account).

Source: HMRC Self Assessment deadlines (gov.uk/self-assessment-tax-returns/deadlines).

CIS monthly returns

Due dates: CIS monthly returns are due by the 19th of each month, covering the tax month ending the 5th.

Source: HMRC CIS guidance (gov.uk/what-you-must-do-as-a-cis-contractor).

Pension auto-enrolment

Input required: Staging date or re-enrolment date configured per company.

Due date computation: Re-enrolment is required every three years from the staging date. The re-declaration of compliance must be submitted to TPR within five months of the re-enrolment date. PenaltyProof computes the re-enrolment date from the staging date plus the number of three-year cycles elapsed, and the re-declaration window from the re-enrolment date.

Source: The Pensions Regulator (gov.uk/auto-enrolment).

ECCTA identity verification and authorised-filer readiness

Coverage: Readiness reminders for configured ECCTA identity-verification and authorised-filer readiness dates. Under the Economic Crime and Corporate Transparency Act, directors and PSC individuals registered with Companies House are required to complete identity verification during the transition period. Authorised-agent filing is a separate readiness concept scheduled no earlier than November 2026.

Boundary: PenaltyProof does not verify identities, act as an Authorised Corporate Service Provider (ACSP), register firms as authorised agents, file Companies House documents or verification statements, check personal codes, store filing credentials, or confirm a person's verified status.

Further reading: Start with the ECCTA deadline guide, the ECCTA help article, and the IDV transition guide for accountants.

Source: Economic Crime and Corporate Transparency Act 2023; Companies House identity verification guidance; Companies House authorised corporate service provider guidance.

MTD for Income Tax Self Assessment

Quarterly update deadlines: 7 August, 7 November, 7 February, 7 May — practice-level alerts for all mandated clients.

Final Declaration: 31 January each year.

Source: HMRC MTD ITSA guidance (gov.uk/guidance/use-making-tax-digital-for-income-tax).

What happens when rules change

When statutory rules change — a new quarterly deadline, a revised penalty regime, a change to the CT filing window — the computation rules in the application code must be updated manually. PenaltyProof does not subscribe to a live regulatory data feed. We monitor HMRC and Companies House publications and update the application when rules change, but there is an inherent lag between a rule change being announced and the application being updated.

For Companies House filings, the due date is read directly from the CH API and therefore reflects any extensions or changes made by CH to a specific company. No manual rule update is required for CH-sourced dates.

Limitations

  • CH snapshot staleness: Filing detection relies on the daily CH API snapshot. If a client files at Companies House late in the day, or the API is delayed, PenaltyProof will not reflect it until the following day's run.
  • No HMRC filing confirmation: PenaltyProof cannot detect whether an HMRC filing has been submitted. Alerts continue until you configure the obligation as inactive or until the system's next cycle ends. There is no automatic confirmation from HMRC.
  • Configuration accuracy: HMRC deadlines are computed from your configuration inputs. An incorrect VAT stagger group, CT period end, or pension staging date will produce incorrect alerts. PenaltyProof does not validate these inputs against HMRC records.
  • CH API dependence: If the Companies House API is unavailable, snapshots are not updated that day. A circuit breaker pauses alert evaluation when the API is detected as unavailable, and evaluation resumes the following day. Companies House publishes its own service status at developer.company-information.service.gov.uk.
  • Single daily run: Alerts can only fire once per day. The latest filing information available is from that day's CH API call.
  • No client-facing alerts: All alerts go to the accountant's registered email address (and optional second recipient on Pro). There is no client-facing notification.
Security and data protection → Privacy Policy → Pricing → ← Back to penaltyproof.co.uk