Skip to main content

Modpanel subscription end_date follows Mekari Billing updates

Jira: TBD — to be minted as a Story under Epic BIF-8695 · Epic: BIF-8695

Overview

  • Before: When Mekari Billing sends a new subscription end_date for an organization whose current subscription is not yet expired, Modpanel does not adopt the new end_date. Expiry-driven logic (notably the "subscription about to expire" reminder email) keeps running against the old end_date.
  • After: Modpanel always follows the latest end_date sent by Mekari Billing, even when the current subscription has not expired yet. A renewal/extension takes effect immediately and expiry reminders reflect the new end_date.

Problem this fixes — A customer who has already paid (renewed/extended) still receives a "subscription about to expire" email, because the paid renewal pushed a new (later) end_date from Mekari Billing but Modpanel is still enforcing the old one. Following the new end_date on receipt stops the false expiry warning.

Related pattern: this mirrors A8 — IG Comment validity follows subscription end_date (both make a Modpanel-side value follow the end_date Mekari Billing sends). Source: internal support thread (customer paid, still warned about expiry).

Scope Changes

  • Backend — on a Mekari Billing subscription-update, adopt the new end_date even when the current subscription is still active; expiry-reminder scheduling reads the updated end_date.

Out of scope

  • No Modpanel UI change beyond reflecting the already-synced end_date — this is a backend sync + expiry-trigger fix.

8. User Stories + Acceptance Criteria

User StoryImportanceMockup / Technical NotesAcceptance Criteria
[BILLEND-S01] — Subscription end_date follows Mekari Billing update

As the billing sync system, I want Modpanel to adopt the end_date from every Mekari Billing subscription update — even when the current subscription is not yet expired — so that a customer who has already paid to renew/extend is not warned that their subscription is about to expire.
Should HaveApplies to a subscription-update from Mekari Billing carrying a changed end_date. Confirm V1/V3 coverage (A8 applied to both). The "about to expire" reminder must read the updated end_date.— Happy Path —
• AC-1: Given an organization whose subscription is active and not yet expired, when Mekari Billing sends a subscription update carrying a new end_date, then Modpanel updates the subscription's end_date to the new value (not only after the old end_date passes).
• AC-2: Given the end_date has been extended after a paid renewal so the subscription is no longer near expiry, when the "subscription about to expire" reminder would have fired against the old end_date, then no expiry-reminder email is sent (the reminder evaluates the new end_date).
— Guard-rail —
• NEG-1: Given other subscription fields/emails, when the update is applied, then only end_date-driven state follows the update; unrelated billing/notification behaviour is unchanged.

Open questions

  1. Direction of change — does the new end_date always win, including a shorter (earlier) end_date, or only extensions? (Default assumption: always follow the value Mekari Billing sends.)
  2. Which reminder job(s) read end_date for the "about to expire" email — confirm the trigger and whether any already-scheduled reminders must be re-evaluated/cancelled when the end_date moves.
  3. Billing version scope — V1, V3, or both (A8 covered both).
  4. Store vs display — is the fix on the subscription record the platform uses for expiry logic, or only Modpanel's displayed value? (Expiry email must read the same updated value.)