Feature #11113
openSubscription cancellation Customer Side
Added by Yalavarthi Thriveni 7 days ago. Updated 4 days ago.
100%
Files
| Customer_Side_Cancellation_Flow_Updated_No_Labels(1).pdf (982 KB) Customer_Side_Cancellation_Flow_Updated_No_Labels(1).pdf | Divya Inapakurthi, 10/01/2026 08:40 AM | Delete | |
| Customer_Side_Cancellation_flow.pdf (963 KB) Customer_Side_Cancellation_flow.pdf | Divya Inapakurthi, 10/01/2026 08:40 AM | Delete |
Subtasks
Related issues
Updated by Divya Inapakurthi 6 days ago
- Due date set to 09/29/2026
- Status changed from New to In Progress
Updated by Divya Inapakurthi 6 days ago
1. Update email with button to public cancellation settlement view Add a prominent "Manage / Cancel Subscription" button in subscription emails (e.g., invoices, welcome email, renewal reminders). The link should point to /subscription-cancel-public/:id (ideally with an optional security token or email verification).
2. Implement UI for cancellation settlement view with only Cancel option Adapt the Admin Modal into a clean, dedicated customer-facing public page (similar to ProductQuotationPublicUrl or InvoicePublicUrl). Customer should see the plan summary, jobs count, and settlement breakdown (paid vs jobs completed), but without admin-only options (like manual cash refund overrides or custom buffer day inputs).
3. Add Terms & Conditions checkbox Require a mandatory agreement checkbox before the "Confirm Cancellation" button is enabled (non-reactivation clause, auto-cancellation of pending jobs, agreement to pay remaining balance).
4. Payment constraint: Cancel & invoice vs Require payment before cancel Do not block cancellation on upfront payment. If payment fails, customers will get stuck in recurring cycles and file chargebacks. Follow the admin pattern: Cancel the subscription, clean up future jobs, and automatically issue & email the Settlement Invoice with a direct online payment link (if balance is due) or a Refund Notice (if refund is owed).
5. Update API to allow customer without token Do not simply remove verifyToken from the admin route. Instead, create dedicated public endpoints: GET /public-settlement/:id and POST /public-cancel/:id that handle tenant dbName resolution and customer validation securely.
Updated by Divya Inapakurthi 5 days ago
- Due date changed from 09/29/2026 to 09/30/2026
Actor Tracking: Added strict cancellation initiator tracking (cancelledByType: strictly 'admin' or 'customer') across database schemas, backend APIs, and frontend subscriber detail chips.
In-Progress Visit Alerts: Implemented admin notification emails detailing the initiator when a subscription is cancelled with an active in-progress job.
Customer Immediate Cancellation: Fixed customer portal cancellation with active jobs to cancel immediately and prune unstarted visits instead of scheduling to the tenure cutoff.
Cancellation Portal Badging: Updated customer portal status badges so in-progress visits render with an orange "In Progress" badge rather than "Pending Verification".
Settlement Proportional Rounding: Resolved 3-cent calculation mismatches by adopting proportional visit cost calculations (completedJobs * yearlyTotal) / totalJobs with a 5-cent rounding tolerance.
Live Settlement Recomputation: Fixed backend settlement recomputation so marking in-progress jobs "Completed" on cancelled contracts updates dues even after earlier balances were paid.
Multi-Settlement Invoice Generation: Updated invoice creation logic so subsequent settlement dues generate new dedicated POS invoices without overwriting previously paid ones.
Automated Payment Receipts: Added sendSubscriptionSettlementPaidEmail to automatically dispatch payment confirmation emails with attached PDF invoices when a settlement is paid via Stripe.
Cumulative Payment Aggregation: Enhanced total-paid calculation across all contract and settlement invoices so completed payments update the contract balance to $0.00 and status to paid.
Updated by Divya Inapakurthi 5 days ago
- Estimated time changed from 8:00 h to 16:00 h
Updated by Divya Inapakurthi 4 days ago
- File Customer_Side_Cancellation_Flow_Updated_No_Labels(1).pdf Customer_Side_Cancellation_Flow_Updated_No_Labels(1).pdf added
- File Customer_Side_Cancellation_flow.pdf Customer_Side_Cancellation_flow.pdf added
- % Done changed from 70 to 100
Cancellation Flow Audit: Analyzed and verified the full end-to-end customer cancellation and settlement lifecycle.
Bulk Write Loop Removal: Removed the DB write/recompute loop inside getSubscribers to speed up subscriber list queries.
Second Invoice Amount Fix: Fixed the issue where sending a 2nd Stripe settlement invoice would keep charging the old amount by creating fresh checkout sessions reflecting updated completed jobs.
Outdated Invoice Tracking: Added invoicedAmount and isInvoiceOutdated flags to backend models and services to automatically flag when job changes invalidate previously sent invoices.
Multi-Round Settlement Testing: Validated 2nd and 3rd recalculated settlements ensuring amount changes, invoice counters, and updated payment links work correctly without desyncing.
Top Ticker Status Badges: Updated
CancelSettlementPendingTicker.tsx
to show In-Progress Jobs — Review, Invoice Outdated — Resend, Awaiting Payment, and Needs Invoice Sent.
Subscribers Table Resend Action: Added outdated invoice warning banners and a direct ⚠️ Resend Updated Stripe Invoice button in
Subscribers.tsx
Subscription Details Settlement Card: Implemented the complete Cancellation Settlement Statement card with financial breakdown on
SubscriptionDetail.tsx
Settlement Actions on Details Page: Added Send/Resend Stripe Invoice actions, Refund Processing modal, and View Receipt/Invoice PDF buttons to
SubscriptionDetail.tsx
Created Customer Flow Documentation