ParabolInc / parabol

Free online agile retrospective meeting tool
https://www.parabol.co/
Other
1.87k stars 326 forks source link

Update `draftEnterpriseInvoice` mutation to include the option for not touching Stripe #9731

Open tianrunhe opened 2 months ago

tianrunhe commented 2 months ago

We have a couple of use cases where we need to upgrade an org to enterprise but we do not create new Stripe subscriptions:

Success criteria:

Estimated effort: X points (see CONTRIBUTING.md)

mattkrick commented 2 months ago

we'll probably need to change the name here because if draftEnterpriseInvoice doesn't draft an invoice, we're gonna confuse people!

PPMI where the entire company is within an environment hence all the orgs within that environment should be on the enterprise tier but we only need 1 Stripe customer/subscription

i know this is a problem for legacy PPMIs where we don't have access to the DB to update all teams/orgs to enterprise. Moving forward, we set IS_ENTERPRISE=true in the env & this problem is solved, right?

Free-trial use cases for companies that are window shopping

I see there's some logic for trialStartDate, but I don't see anything for trialEndDate? With the goal of not creating a bunch of spaghetti logic, could we lay out the business logic for trials for teams & enterprises? If we have a trialEndDate we can store it on the stripe subscription object instead of in our system. That way, trials would roll over into paid subscriptions automatically & we wouldn't need as much human intervention.

tianrunhe commented 2 months ago

we'll probably need to change the name here because if draftEnterpriseInvoice

I agree!

we set IS_ENTERPRISE=true in the env & this problem is solved, right?

I think so! Yeah moving forward this should be the preferred solution

That way, trials would roll over into paid subscriptions automatically & we wouldn't need as much human intervention.

I suggested this to sales before but it does not look like a popular option, especially for some gov users (e.g., this thread🔒). I guess people don't like having a deadline to pay/sign the contract.

mattkrick commented 2 months ago

talked to Rafa about legacy PPMIs & we can now just directly hit the DB to upgrade them, so the only use case we have to worry about is free trials.

The usecase in the chat is a good one! Seems like it's just for pubsec, but now that we're in Platform 1 I'm not sure if we'll ever have to support that since they can just use Parabol in P1. We'll need to confirm this to make sure.

Is there a usecase we have for private companies? Providing a way to upgrade that isn't tied to a payment method & doesn't have an expiration feels like a dangerous thing to add to the API.