When does a customer pay for an app?

Hi All,
I have a couple questions with regards to payments for marketplace apps specifically cloud apps.

  1. When does a customer pay for a marketplace app?
    From what I understand, if a payment method is set in the system, the customer gets billed automatically on the day when the trial expires.
    Am I correct in my understanding? or does the customer get prompted via email that the app is about to expire and they have to explicitly click something to make the purchase happen.

  2. Is there an option to pay for the app before the trial period ends?

  3. Does the customer get notified of the expiry of the app, if so who receives it? Assuming it is the billing contact?

  4. What is the course of action a customer has to take to get the app out of the suspended state?

Appreciate your help in understanding how the system works.
Thank you
Vish

Definitions I picked from various threads:
Free trial period: App’s in cloud get 30 days evaluation at a minimum, and then co-terminate with the billing cycle of the account since one of those occurs every month. In practice this means the evaluation can be approximately 30 to 60 days

License statuses
Active - the license is still under maintenance
Expired - the license’s maintenance has expired and the app is in, or has gone through, the dunning process
Canceled - the license was deactivated manually by the customer, it will remain in this state until the expiration date of the license is passed and then it will change to Expired.

Dunning process - When a license expires (passes the date when renewal/purchase is required) there is a ~15 day window for the customer to make the payment required. If the payment is not made by the 15th day the app is put in a ‘suspended’ state. After another 15 days, if there’s still no payment received then the app is ‘deactivated’. Deactivated means that the app is set to an unlicensed state, so if license checks are in place the app will no longer function (more on this later).

sigh. ctrl enter, early submit.

If a payment method is set in the system, the customer gets billed automatically on the day when the trial expires.

Pretty sure its in arrears. As, if customer cancels an active subscription there is no cost for that month (and they can use free for the remainder of that month).

does the customer get prompted via email that the app is about to expire

I don’t think so. Some customers have explained they were waiting for such a prompt, never got it, so app cancels out.

Is there an option to pay for the app before the trial period ends?

Rephrasing, you’re asking for a “Buy it now” for cloud apps, sadly, no ([AMKT-22742] - Ecosystem Jira)

What is the course of action a customer has to take to get the app out of the suspended state?

Good question. Well, app doesn’t actually get suspended, what they do is cycle the license (unlicense, then start trial again, extending the eval, which according to every cloud licensing tab isn’t possible [AMKT-12613] - Ecosystem Jira).

In practice this means the evaluation can be approximately 30 to 60 days

You can block access to your app if you implement your own detection logic, eg (now - installDate > 62), the outcome is the same though, it involves pointing customer to support.atlassian.com, to highlight that, despite classic tier 1 support response of “just start an eval” actually no, they need to get active, now, so we refer the above issues. Doesn’t happen too often, but it does recur.

Suspended state

I’ve yet to see this. Typically, customers licenses expire out and that’s it. With no valid license present, we halt processing/app access. After 30days of no active license details, we purge the AC_HOST data graph we hold, and they are no more.

Zombie installs
Fun fact, if you think you’re getting a lot of installs ongoing, over the months/years you’ll start to recognise ‘zombie’ instances, that keep periodically reinstalling but never license, this is due to the problematic two phase unlicense then uninstall process that users don’t remember to do and the platform doesn’t help with [MC-235] - Ecosystem Jira

Thank you @andy for your insights.
So is the buying process as follows:

Option - 1 (Monthly / Annual subscription) If you have a credit card on file

  1. Customer starts a free trial of an app
  2. Customer gets notified via email of the trial expiration sometime before the trial expires
  3. At the end of they trial period they automatically get billed unless they stop the trial or unsubscribe or un-install the app

Option - 2 (Monthly / Annual subscription) If you don’t have a credit card on file

  1. Customer starts a free trial of an app
  2. Customer gets notified via email of the trial expiration sometime before the trial expires
  3. Customer has to explicitly request for a quote or add a payment method either before or after the trial ends?

I see a couple of my prospects automatically converting to paid at the end of the trial period and some of them go into Expired and they don’t know what to do next.

I am trying to better understand how to guide them through the process.

Appreciate your insights.
Thank you
Vish

Customer can start an eval with no card. Annual subscriptions can only be ‘purchased’.

Its quite likely that the successed do have a card registered, and the ones that don’t don’t. Beyond that, cards that decline the purchase or that expire themselves are common problems.

and they don’t know what to do next.
Detect the expired status, your app, instead of rendering should popup a warn or show somewhere, that they have no license, and need to talk to support.atlassian.com to get license active. At this time, its up to you to allow customer to cycle their license and restart a trial (that way lies abuse) or block access, for which you’d need to be tracking the install time to disallow and show a similar message (what we do).

1 Like

I’ve had customers complain that when they click “try it free” they get an endless loading spinner.

Atlassian support confirmed (mid October) that happens if a customer does not have a card on file. But the UI doesn’t give any indication of the error. Genius lol

1 Like