- subscriptionId: SubscriptionId (UUID)
- clientId: ClientId
- tier: MASTER | ONE | EDGE | LEGACY
- billingCycle: MONTHLY | ANNUAL
- amount: Money (INR + GST)
- razorpaySubId: String?
- status: ACTIVE | PAST_DUE | CANCELLED
- currentPeriodStart: LocalDate
- currentPeriodEnd: LocalDate
- autoRenew: Boolean
+ activate(): DomainEvent[SubscriptionActivated]
+ upgrade(newTier): DomainEvent[TierUpgraded]
+ downgrade(newTier): DomainEvent[TierDowngraded]
+ cancel(): DomainEvent[SubscriptionCancelled]
+ renew(): DomainEvent[SubscriptionRenewed]
+ markPastDue(): DomainEvent[PaymentOverdue]
- paymentId: PaymentId
- subscriptionId: SubscriptionId?
- sipMandateId: MandateId?
- amount: Money
- razorpayOrderId: String
- razorpayPaymentId: String?
- status: PaymentStatus
- method: UPI | ENACH | CARD | NETBANKING
+ authorize(): DomainEvent[PaymentAuthorized]
+ capture(): DomainEvent[PaymentCaptured]
+ refund(amount): DomainEvent[PaymentRefunded]
+ fail(reason): DomainEvent[PaymentFailed]