How to Map PCT Rule 47 Deadlines to National Phase

Mapping PCT Rule 47 to national phase means treating the International Bureau’s document-transmittal schedule as a notification signal, never as the controlling entry deadline — the deadline itself is fixed by PCT Articles 22 and 39 and each designated office’s implementing statute.

Automated docketing systems that conflate the two produce confidently wrong dates. Rule 47.1(a) tells the International Bureau (IB) when to forward copies of the international application to designated offices; national phase entry is a separate act with its own statutory clock. This walkthrough shows the exact date arithmetic, the per-office override that shifts 30 months to 31, the business-day shift, and the audit logging required to make the mapping defensible. It is the practitioner-level counterpart to the National Phase Entry Date Logic engine and sits inside the broader Core Docketing Architecture & Deadline Types schema so rule inheritance stays consistent across international and domestic tracks.

Statutory Specification: Rule 47 Versus Articles 22 and 39

Three provisions govern the mapping, and each answers a different question:

  • PCT Rule 47.1(a) — the IB “shall promptly” communicate the international application to each designated office, and by Rule 47.1(a) that communication is effected such that offices hold the documents by the expiry of the relevant time limit. This is a transmittal anchor, not a deadline the applicant must meet. Source: WIPO PCT Regulations, Rule 47.
  • PCT Article 22(1) — the applicant must perform the acts of national phase entry (translation, national fee, and where required a copy of the application) not later than 30 months from the priority date, for offices bound by the modified Article 22. Source: WIPO PCT Article 22.
  • PCT Article 39(1)(b) — where a Chapter II demand is filed in time, the equivalent act is due not later than 30 months from priority; individual offices set the operative figure by reservation or regional law. The European Patent Office applies 31 months under Rule 159(1) EPC regardless of Chapter II election. Source: WIPO PCT Article 39.

Two supporting rules decide how the date lands. PCT Rule 80.5 governs expiry of periods that fall on a day the office is closed, extending them to the next working day. For European work, Rule 134(1) EPC provides the equivalent extension when the EPO is not open for receipt of documents. The month count itself is governed by the current WIPO PCT Contracting States table, which is versioned input — a state can file or withdraw a reservation that changes its window — never a constant baked into logic.

Minimal Reproducible Implementation

Compute the Rule 47 transmittal anchor and the statutory national phase deadline as two independent values from the same priority date, preserving a hash of the inputs so any docketed date can be traced back to the exact arithmetic that produced it. This mirrors the discipline enforced across the PCT 30/31 Month Deadline Calculators module.

import hashlib
import logging
from datetime import datetime, timezone
from typing import Optional
from dateutil.relativedelta import relativedelta
from zoneinfo import ZoneInfo

logger = logging.getLogger("pct_deadline_engine")

def derive_rule47_and_national_phase(
    priority_date: Optional[datetime],
    filing_date: datetime,
    statutory_months: int = 30,
) -> dict[str, object]:
    """Compute the Rule 47 IB transmittal anchor and the statutory
    national phase deadline for a single designated office.

    `statutory_months` is resolved per office (see the override matrix
    below): 30 for Article 22 states, 31 for the EPO under Rule 159(1) EPC.
    Call once per designated office rather than assuming one global window.
    """
    if priority_date is None:
        # Fallback: no valid priority claim → anchor on the PCT filing date.
        # Article 2(xi) treats the international filing date as the reference
        # when there is no earlier priority; flag for attorney confirmation.
        logger.warning("PRIORITY_DATE_NULL: anchoring on international filing date.")
        priority_date = filing_date

    # Normalize to UTC so the arithmetic has one unambiguous origin.
    if priority_date.tzinfo is None:
        priority_date = priority_date.replace(tzinfo=timezone.utc)

    original_day = priority_date.day
    rule47_transmittal = priority_date + relativedelta(months=30)
    national_phase_deadline = priority_date + relativedelta(months=statutory_months)

    # relativedelta clamps to month-end when the target month is shorter
    # (the "corresponding date" behaviour). Log the clamp for review.
    day_shifted = national_phase_deadline.day != original_day
    if day_shifted:
        logger.info(
            "MONTH_END_ROLLOVER: anchor day %s clamped to %s (PCT Rule 80.2 corresponding date).",
            original_day, national_phase_deadline.day,
        )

    # Deterministic hash — not Python's built-in hash(), which is salted per run.
    payload = f"{priority_date.isoformat()}|{statutory_months}"
    calculation_hash = hashlib.sha256(payload.encode()).hexdigest()

    return {
        "priority_date": priority_date.isoformat(),
        "rule47_transmittal": rule47_transmittal.isoformat(),
        "national_phase_deadline": national_phase_deadline.isoformat(),
        "statutory_months": statutory_months,
        "day_shifted": day_shifted,
        "calculation_hash": calculation_hash,
    }

The statutory_months argument is resolved from a version-pinned override file rather than hardcoded, because the 30-vs-31 split is jurisdictional:

# jurisdiction_overrides.yaml
# Source of truth: WIPO PCT Contracting States table — re-verify each release.
# https://www.wipo.int/pct/en/pct_contracting_states.html
rule_version: "2026.07.0"
jurisdictions:
  US:                       # 35 U.S.C. 371(b); 37 CFR 1.7 weekend/holiday shift
    statutory_window_months: 30
    holiday_rule: "forward_shift"
    translation_split: false
  EP:                       # PCT Art. 39(1)(b) as applied under Rule 159(1) EPC
    statutory_window_months: 31
    holiday_rule: "forward_shift"
    translation_split: true
    fee_deadline_offset_days: 0
  CN:                       # PCT Art. 22(1); no reservation on file
    statutory_window_months: 30
    holiday_rule: "forward_shift"
    translation_split: false
  JP:                       # PCT Art. 22(1); 30-month standard entry
    statutory_window_months: 30
    holiday_rule: "forward_shift"
    translation_split: true

A raw statutory date that lands on a weekend or an office closure must roll forward under PCT Rule 80.5 (or Rule 134(1) EPC). The shift loop must re-test after each increment, because rolling off a Sunday can land on a Monday that is itself a holiday:

from datetime import datetime, timedelta
import holidays

def normalize_business_day(deadline: datetime, office: str) -> tuple[datetime, bool]:
    """Roll a deadline forward to the next open day for the office.

    For EPO deadlines, substitute the curated closure calendar published
    annually in the EPO Official Journal rather than a generic national set.
    """
    country = office[:2].upper()
    cal = holidays.country_holidays(country, years=[deadline.year, deadline.year + 1])
    current, adjusted = deadline, False
    while current.weekday() >= 5 or current.date() in cal:  # 5=Sat, 6=Sun
        current += timedelta(days=1)
        adjusted = True
    return current.replace(hour=23, minute=59, second=59), adjusted
Mapping a PCT priority date to national phase deadlines A horizontal timeline anchored on a single priority date at month zero. Three lanes fork from it: an informational Rule 47.1(a) International Bureau transmittal anchor at 30 months drawn as a dashed line and marked "notification signal, never the deadline"; a solid statutory deadline at 30 months for the US, Japan, and China offices under Article 22(1); and a highlighted statutory deadline at 31 months for the European Patent Office under Rule 159(1) EPC. Both statutory deadlines feed a final business-day forward-shift step that rolls a date landing on a weekend or closure to the next open day under PCT Rule 80.5 or Rule 134(1) EPC. Priority date month 0 Statutory deadline · Art. 22 / 39 Rule 47.1(a) · 30 mo IB transmittal anchor Notification signal — never the deadline 30 months US · JP · CN — Art. 22(1) 31 months EP — Rule 159(1) EPC Business-day shift → next open day Rule 80.5 / R.134(1)

Operational Action: Treat jurisdiction_overrides.yaml as code — gate every change through peer review by patent counsel, pin rule_version, and refuse any deadline whose office entry predates the current WIPO Contracting States table release.

Known Gotchas & Compliance Traps

The mapping fails in a small number of specific, repeatable ways. Each must be caught before a date reaches the docket, not after.

  • Transmittal date mistaken for the deadline. Rule 47.1(a) schedules IB document forwarding; it does not extend or set the entry deadline. Docketing the Rule 47 communication date as the actionable due date silently under- or over-states the real Article 22/39 window. Compute both values separately and label the transmittal record as informational only.
  • Global 30-month assumption. Applying a single 30-month window to every designated office misses the EPO’s 31 months under Rule 159(1) EPC (and any other office-specific reservation). Resolve statutory_months per office from the pinned override file and fail closed on an unmapped office rather than defaulting to 30.
  • Corresponding-date clamp on short months. A 31st-of-the-month or February-29 anchor is where naive arithmetic produces the wrong month. relativedelta clamps to the last valid day (PCT Rule 80.2 “corresponding date”), which is legally correct — but the day_shifted flag must fire so a paralegal can confirm before final docketing.
  • Holiday collision after the weekend shift, and stale calendars. Rolling a Sunday forward can land on a Monday closure, so the shift must loop (as above). Equally dangerous is a holiday dataset that lags an office’s published closures — pin the calendar to a release tag, alert on staleness, and for the EPO use the Official Journal closure list rather than a generic national holiday set.

Operational Action: Log every computation — inputs, resolved window, day_shifted, business-day adjustment, output, and calculation_hash — to append-only, write-once storage, and route any record triggered by the PRIORITY_DATE_NULL fallback to a paralegal review queue before the deadline is emitted.

Integration Point

This mapping is one node in the docketing pipeline, not a standalone calculator. Upstream, the earliest valid priority date and the designated-office list arrive already de-duplicated from portal synchronization — see the polling etiquette in WIPO PATENTSCOPE Integration and the authoritative source data resolved by the parent PCT National Phase Entry Rules framework. The derive_rule47_and_national_phase() output then feeds the reminder-dispatch and escalation layer, while every calculation_hash is written to the immutable audit trail so a compliance dashboard can replay exactly which inputs produced a docketed date. Who may read or override a computed deadline is governed by the Security & Access Control Boundaries module.

When deadline misalignment is reported, the recovery sequence is deterministic: query the audit log by calculation_hash, confirm the jurisdiction config version matches the filing date’s effective statutes, re-run the derivation against the original inputs, re-apply business-day normalization with a verified calendar, and — only if automated logic conflicts with local counsel — apply a documented override carrying override_reason, authorized_by, and effective_date while preserving the original automated output. Never patch a historical calculation in place; append a correction record with explicit versioning.

Frequently Asked Questions

Is the PCT Rule 47 transmittal date the national phase entry deadline?
No. Rule 47.1(a) governs when the International Bureau forwards the international application to designated offices — it is a document-transmittal signal. The controlling entry deadline is set by PCT Article 22(1) or Article 39(1)(b) and the designated office's implementing statute. Docket the two as separate records and mark the transmittal date as informational.
What happens if the 30-month PCT deadline falls on a weekend in the US?
Under PCT Rule 80.5 and, for the U.S. designated office, 37 CFR 1.7, a due date landing on a Saturday, Sunday, or federal holiday in the District of Columbia rolls forward to the next succeeding business day. The normalize_business_day() helper applies this and returns an adjusted flag so the audit record shows the emitted date differs from the raw statutory date.
Why does the EPO use 31 months when most offices use 30?
Most contracting states enter national phase at 30 months from the earliest priority date under Article 22(1). The European Patent Office applies the Article 39(1)(b) window as implemented by Rule 159(1) EPC, which sets the act of entry at 31 months, independent of whether a Chapter II demand was filed. Encode this as a per-office statutory_window_months value, never a global default.
How should the mapping behave when the priority claim is missing or withdrawn?
Fall back to the international filing date as the reference (Article 2(xi)) and emit a PRIORITY_DATE_NULL warning. Because a broken priority chain changes the entire window, the record must be routed to attorney review rather than silently docketed, and the fallback must be visible in the audit trail.
What if a designated office is not in the override file?
The pipeline halts with an explicit error instead of guessing 30 months. An unmapped office usually means the override file lags a WIPO Contracting States table change; failing closed forces a human to confirm the correct window before any deadline is emitted for that jurisdiction.

For authoritative references, consult the WIPO PCT Regulations, Rule 47, PCT Article 22 and Article 39, the WIPO PCT Contracting States table, and USPTO MPEP § 1893.03 for the U.S. entry acts. Python implementations should rely on dateutil.relativedelta for calendar-month arithmetic and the standard-library zoneinfo module. This walkthrough sits under the parent ← PCT National Phase Entry Rules framework; practitioners will also want the sibling National Phase Entry Date Logic engine.