Skip to content

Credits Expiration

Systematic 90-day expiration policy for all MLC (Meclabs Credits) ensuring predictable revenue recognition, healthy credit circulation, and automated customer communication at optimal intervention points.

Overview

The credits expiration system implements a uniform 90-day validity period across all credit types - plan allocations, Customer Kit credits, and top-ups. This consistency simplifies customer messaging while optimizing platform economics through managed breakage rates.

Expiration Policy

Universal 90-Day Rule

All credits expire exactly 90 days from their allocation or purchase date:

  • Plan Credits: Allocated monthly with billing cycle, expire 90 days from allocation
  • Customer Kit Credits: 1,000 MLC activated upon kit deployment, expire after 90 days
  • Top-up Credits: Purchased on-demand at $0.0135/MLC, expire 90 days from purchase
  • 21-Day Build Credits: Trial credits expire at day 21 decision gate if subscription declined

No Rollover or Extension

Credits cannot be rolled over, extended, or refunded after expiration. This policy applies uniformly regardless of credit source or customer tier.

Consumption Priority

Credits are consumed in FIFO (First In, First Out) order:

  1. Oldest credits consumed first to minimize expiration losses
  2. Automatic source selection prioritizes expiring credits
  3. Cross-pool consumption when primary pool exhausted
  4. Overage billing only after all available credits consumed

Tracking Architecture

Credit Ledger Structure

Each credit allocation maintains metadata for expiration tracking:

typescript
interface CreditAllocation {
  id: string;
  organizationId: string;
  teamId?: string;
  userId?: string;

  // Credit details
  amount: number; // MLC allocated
  remaining: number; // MLC available
  consumed: number; // MLC used

  // Expiration tracking
  allocatedAt: Timestamp; // Allocation timestamp
  expiresAt: Timestamp; // Exactly 90 days later
  expiredAmount: number; // MLC expired unused

  // Source identification
  source: "subscription" | "kit" | "topup" | "trial";
  sourceId: string; // Plan/Kit/Transaction ID
}

Daily Expiration Processing

Automated batch job runs daily at 2:00 AM UTC:

  1. Identify Expiring Credits: Query allocations where expiresAt <= now()
  2. Calculate Breakage: Record expiredAmount = remaining
  3. Update Balances: Zero out expired allocation remaining balance
  4. Generate Events: Emit expiration events for analytics and notifications
  5. Archive Records: Move expired allocations to historical storage

Notification System

Pre-Expiration Alerts

Multi-channel notifications at strategic intervals before expiration:

30-Day Warning (60 days remaining)

  • Email: Monthly usage summary with expiration reminder
  • Dashboard: Yellow warning badge on credit balance
  • Message: "Your credits will expire in 60 days. Use them or lose them!"

14-Day Alert (76 days after allocation)

  • Email: Targeted alert with usage suggestions
  • In-App: Modal on login if >500 MLC expiring
  • Dashboard: Orange alert banner
  • Message: "Act now - 14 days until credit expiration"

7-Day Urgency (83 days after allocation)

  • Email: Daily reminder if >1,000 MLC expiring
  • In-App: Persistent notification bar
  • Dashboard: Red critical alert
  • Message: "Final week - use your expiring credits"

24-Hour Final Notice

  • Email: Urgent notice with exact expiration time
  • SMS: Optional for accounts >$500/month
  • Message: "Last chance - credits expire tomorrow at [time]"

Post-Expiration Communication

Expiration Confirmation

Sent immediately after daily processing:

  • Subject: "Credits Expired - Action Required"
  • Content: Amount expired, renewal options, usage recommendations
  • CTA: One-click top-up purchase or plan upgrade

Monthly Breakage Report

First Monday of each month for accounts with >10% breakage:

  • Analysis: Credit utilization patterns and optimization tips
  • Recommendations: Model selection, usage scheduling, team training
  • Incentive: 10% bonus credits on next top-up if breakage reduced

Renewal Workflows

Automated Renewal Options

Auto Top-up

Configurable automatic credit purchases before expiration:

  • Trigger Threshold: When <1,000 MLC remain with <7 days validity
  • Purchase Amount: Preset blocks (10K, 25K, 50K, 100K MLC)
  • Billing: Uses default payment method at $0.0135/MLC
  • Notification: Email confirmation with invoice

Smart Renewal

ML-powered renewal recommendations based on usage patterns:

  • Prediction Model: Forecasts next 30-day consumption
  • Timing Optimization: Suggests purchase 7-14 days before depletion
  • Amount Calculation: Historical usage + 20% buffer
  • Approval: Requires one-click confirmation

Manual Renewal Process

Self-service renewal through billing dashboard:

  1. Usage Analytics: View consumption trends and projections
  2. Expiration Timeline: Visual calendar of credit expirations
  3. Quick Purchase: Pre-filled amounts based on tier and history
  4. Bulk Discount: 5% bonus on purchases >50,000 MLC

Breakage Economics

Expected Breakage Rates

Industry-calibrated expiration rates by usage segment:

SegmentMonthly UsageExpected BreakageEffective Margin Impact
Light Users<30% of allocation40-50%+8-10% margin
Average Users30-70% of allocation15-25%+3-5% margin
Power Users>70% of allocation5-10%+1-2% margin
EnterpriseCustom allocations<5%Negotiable

Revenue Recognition

Expired credits follow specific accounting treatment:

  • Deferred Revenue: Credits recorded as liability until consumed/expired
  • Recognition Event: Revenue recognized upon usage or expiration
  • Breakage Revenue: Expired credits recognized as "other revenue"
  • Reporting: Separate line item in financial statements

Customer Kit Considerations

Kit-Specific Expiration

Customer Kits have unique expiration dynamics:

  • Activation: 1,000 MLC credits activate on kit deployment
  • Independence: Kit credits expire independently of organization credits
  • Visibility: End users see expiration in their dashboard
  • Renewal: Partners handle kit renewal/top-up decisions

Partner Communication

Reseller partners receive additional notifications:

  • Weekly Summary: Aggregate kit expiration across all deployments
  • Bulk Renewal: Options for renewing multiple kits simultaneously
  • White-Label: Customizable expiration messaging for end users
  • Commission Protection: Expired credits don't affect commission calculations

Strategic Adjustments

Dynamic Expiration Windows

Platform reserves right to adjust expiration for strategic purposes:

ScenarioCurrent PolicyPotential AdjustmentTrigger Condition
Standard90 daysNo changeDefault state
Promotional90 days120 daysNew customer acquisition
Enterprise90 days180 daysAnnual contract >$50K
High Breakage90 days60 daysPlatform breakage >15%
Retention Risk90 days120 daysChurn score >0.7

Seasonal Considerations

Expiration policy adapts to usage patterns:

  • Q4 Extension: Optional 30-day extension during holidays
  • Summer Slowdown: Proactive alerts in July/August
  • Fiscal Year-End: Bulk purchase incentives before expiration

Implementation Details

Database Schema

Firestore collections for expiration tracking:

typescript
// Credit allocations with expiration
credits/{orgId}/allocations/{allocationId}
  - amount: number
  - remaining: number
  - allocatedAt: Timestamp
  - expiresAt: Timestamp
  - source: string
  - status: 'active' | 'expired' | 'consumed'

// Expiration events for analytics
events/{orgId}/expirations/{eventId}
  - allocationId: string
  - expiredAmount: number
  - expiredAt: Timestamp
  - notificationsSent: string[]

API Endpoints

tRPC procedures for expiration management:

typescript
// Get credits with expiration dates
trpc.credits.getWithExpiration({
  orgId: string,
  includeExpired?: boolean
})

// Get expiring credits
trpc.credits.getExpiring({
  orgId: string,
  daysUntilExpiration: number
})

// Configure auto-renewal
trpc.credits.setAutoRenewal({
  orgId: string,
  enabled: boolean,
  threshold: number,
  amount: number
})

Notification Templates

Standardized messaging for consistency:

typescript
interface ExpirationNotification {
  type: "30day" | "14day" | "7day" | "24hour" | "expired";
  recipientType: "owner" | "admin" | "member" | "partner";
  channel: "email" | "inapp" | "dashboard" | "sms";

  // Dynamic content
  creditsExpiring: number;
  expirationDate: Date;
  suggestedAction: string;
  renewalLink: string;
}

Analytics & Monitoring

Key Metrics

Real-time tracking of expiration dynamics:

  • Breakage Rate: Percentage of credits expiring unused
  • Renewal Rate: Percentage purchasing before expiration
  • Notification Effectiveness: Click-through rates by channel/timing
  • Recovery Revenue: Top-ups triggered by expiration alerts
  • Margin Impact: Effective margin improvement from breakage

Operational Dashboards

Administrative views for expiration management:

  • Expiration Calendar: Organization-wide expiration timeline
  • Breakage Trends: Historical patterns by segment/tier
  • Alert Performance: Notification engagement metrics
  • Revenue Impact: Breakage contribution to gross margin

Best Practices

For Platform Administrators

Optimization Strategies

  1. Segmented Messaging: Tailor alerts based on usage patterns and tier
  2. Predictive Interventions: Use ML to identify high-breakage risk accounts
  3. Incentive Timing: Offer renewal bonuses 14 days before expiration
  4. Partner Enablement: Provide white-label expiration management tools
  5. A/B Testing: Continuously optimize notification timing and messaging

For Organization Owners

  1. Usage Planning: Schedule high-consumption tasks before expiration
  2. Team Training: Educate members on credit lifecycle
  3. Auto-Renewal: Configure thresholds to prevent disruption
  4. Monitoring: Set up alerts at 50% and 80% consumption
  5. Bulk Purchasing: Take advantage of volume discounts

For Partners

  1. Proactive Management: Monitor kit expiration across deployments
  2. Value Communication: Frame expiration as usage incentive
  3. Renewal Campaigns: Batch communications for efficiency
  4. Margin Optimization: Price services considering breakage rates
  5. Support Preparation: Train team on expiration policies

Compliance Considerations

Regulatory Requirements

  • Clear Disclosure: Expiration terms prominent in purchase flow
  • Reminder Obligations: Notifications required in certain jurisdictions
  • Refund Rights: Some regions mandate unused credit refunds
  • Accounting Standards: ASC 606 compliance for breakage revenue

Terms of Service

Expiration policy clearly stated in customer agreements:

  • Purchase confirmation emails include expiration date
  • Dashboard displays days remaining for each allocation
  • API responses include expiration timestamps
  • Monthly statements show expiring credits

Policy Enforcement

The 90-day expiration is strictly enforced with no exceptions outside documented enterprise agreements. Customer service cannot extend or restore expired credits.