2023-10-03 13:37:09 +03:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "x-ua-compatible" content = "ie=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta name = "generator" content = "ExDoc v0.30.3" >
< meta name = "project" content = "Plausible v0.0.1" >
2023-10-10 20:36:12 +03:00
< title > Plausible.Billing.Subscription.Status — Plausible v0.0.1< / title >
2023-10-03 13:37:09 +03:00
< link rel = "stylesheet" href = "dist/html-elixir-P5GXSCHE.css" / >
< script src = "dist/handlebars.runtime-NWIB6V2M.js" > < / script >
< script src = "dist/handlebars.templates-NBND3S2D.js" > < / script >
2023-11-30 14:51:25 +03:00
< script src = "dist/sidebar_items-CA39C431.js" > < / script >
2023-10-03 13:37:09 +03:00
< script src = "docs_config.js" > < / script >
< script async src = "dist/html-CGDDOCMI.js" > < / script >
< / head >
< body data-type = "modules" class = "page-module" >
< script >
try {
var settings = JSON.parse(localStorage.getItem('ex_doc:settings') || '{}');
if (settings.theme === 'dark' ||
((settings.theme === 'system' || settings.theme == null) & &
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
document.body.classList.add('dark')
}
} catch (error) { }
< / script >
< div class = "main" >
< button class = "sidebar-button sidebar-toggle" aria-label = "toggle sidebar" >
< i class = "ri-menu-line ri-lg" title = "Collapse/expand sidebar" > < / i >
< / button >
< section class = "sidebar" >
< form class = "sidebar-search" action = "search.html" >
< button type = "submit" class = "search-button" aria-label = "Submit Search" >
< i class = "ri-search-2-line" aria-hidden = "true" title = "Submit search" > < / i >
< / button >
< button type = "button" tabindex = "-1" class = "search-close-button" aria-label = "Cancel Search" >
< i class = "ri-close-line ri-lg" aria-hidden = "true" title = "Cancel search" > < / i >
< / button >
< label class = "search-label" >
< p class = "sr-only" > Search< / p >
< input name = "q" type = "text" class = "search-input" placeholder = "Search..." aria-label = "Input your search terms" autocomplete = "off" autocorrect = "off" autocapitalize = "off" spellcheck = "false" / >
< / label >
< / form >
< div class = "autocomplete" >
< div class = "autocomplete-results" >
< / div >
< / div >
< div class = "sidebar-header" >
< a href = "readme.html" >
< img src = "assets/logo.png" alt = "Plausible" class = "sidebar-projectImage" >
< / a >
< div class = "sidebar-projectDetails" >
< a href = "readme.html" class = "sidebar-projectName" translate = "no" >
Plausible
< / a >
< div class = "sidebar-projectVersion" translate = "no" >
v0.0.1
< / div >
< / div >
< ul class = "sidebar-listNav" >
< li > < a id = "extras-list-link" href = "#full-list" > Pages< / a > < / li >
< li > < a id = "modules-list-link" href = "#full-list" > Modules< / a > < / li >
< li > < a id = "tasks-list-link" href = "#full-list" > < span translate = "no" > Mix< / span > Tasks< / a > < / li >
< / ul >
< / div >
< div class = "gradient" > < / div >
< ul id = "full-list" > < / ul >
< / section >
< section class = "content" >
< output role = "status" id = "toast" > < / output >
< div class = "content-outer" >
< div id = "content" class = "content-inner" >
< h1 >
< button class = "icon-action display-settings" >
< i class = "ri-settings-3-line" > < / i >
< span class = "sr-only" > Settings< / span >
< / button >
2023-10-10 20:36:12 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L1" title = "View Source" class = "icon-action" rel = "help" >
2023-10-03 13:37:09 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
2023-10-10 20:36:12 +03:00
< span translate = "no" > Plausible.Billing.Subscription.Status< / span >
2023-10-03 13:37:09 +03:00
< small class = "app-vsn" translate = "no" > (Plausible v0.0.1)< / small >
< / h1 >
< section id = "moduledoc" >
< p > The subscription statuses are stored in Paddle. They can only be changed
through Paddle webhooks, which always send the current subscription status
via the payload.< / p > < ul > < li > < p > < code class = "inline" > active< / code > - All good with the payments. Can access stats.< / p > < / li > < li > < p > < code class = "inline" > past_due< / code > - The payment has failed, but we're trying to charge the customer
again. Access to stats is still granted. There will be three retries - after
3, 5, and 7 days have passed from the first failure. After a failure on the
final retry, the subscription status will change to < code class = "inline" > paused< / code > . As soon as the
customer updates their billing details, Paddle will charge them again, and
after a successful payment, the subscription will become < code class = "inline" > active< / code > again.< / p > < / li > < li > < p > < code class = "inline" > paused< / code > - we've tried to charge the customer but all the retries have failed.
Stats access restricted. As soon as the customer updates their billing details,
Paddle will charge them again, and after a successful payment, the subscription
will become < code class = "inline" > active< / code > again.< / p > < / li > < li > < p > < code class = "inline" > deleted< / code > - The customer has triggered the cancel subscription action. Access
to stats should be granted for the time the customer has already paid for. If
they want to upgrade again, new billing details have to be provided.< / p > < / li > < / ul > < p > Paddle documentation links for reference:< / p > < ul > < li > < p > Subscription statuses -
< a href = "https://developer.paddle.com/classic/reference/zg9joji1mzu0mdi2-subscription-status-reference" > https://developer.paddle.com/classic/reference/zg9joji1mzu0mdi2-subscription-status-reference< / a > < / p > < / li > < li > < p > Payment failures -
< a href = "https://developer.paddle.com/classic/guides/zg9joji1mzu0mduy-payment-failures" > https://developer.paddle.com/classic/guides/zg9joji1mzu0mduy-payment-failures< / a > < / p > < / li > < / ul >
< / section >
< section id = "summary" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#summary" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
Summary
< / a >
< / h1 >
< div class = "summary-types summary" >
< h2 >
< a href = "#types" > Types< / a >
< / h2 >
< div class = "summary-row" >
< div class = "summary-signature" >
2023-10-10 20:36:12 +03:00
< a href = "#t:status/0" translate = "no" > status()< / a >
2023-10-03 13:37:09 +03:00
< / div >
< / div >
< / div >
< div class = "summary-functions summary" >
< h2 >
< a href = "#functions" > Functions< / a >
< / h2 >
< div class = "summary-row" >
< div class = "summary-signature" >
2023-10-10 20:36:12 +03:00
< a href = "#active/0" translate = "no" > active()< / a >
2023-10-03 13:37:09 +03:00
< / div >
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2023-10-10 20:36:12 +03:00
< a href = "#deleted/0" translate = "no" > deleted()< / a >
< / div >
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#past_due/0" translate = "no" > past_due()< / a >
< / div >
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#paused/0" translate = "no" > paused()< / a >
< / div >
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#valid_statuses/0" translate = "no" > valid_statuses()< / a >
2023-10-03 13:37:09 +03:00
< / div >
< / div >
< / div >
< / section >
< section id = "types" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#types" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
Types
< / a >
< / h1 >
< div class = "types-list" >
2023-10-10 20:36:12 +03:00
< section class = "detail" id = "t:status/0" >
2023-10-03 13:37:09 +03:00
< div class = "detail-header" >
2023-10-10 20:36:12 +03:00
< a href = "#t:status/0" class = "detail-link" title = "Link to this type" >
2023-10-03 13:37:09 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this type< / span >
< / a >
2023-10-10 20:36:12 +03:00
< h1 class = "signature" translate = "no" > status()< / h1 >
2023-10-03 13:37:09 +03:00
2023-10-10 20:36:12 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L36" class = "icon-action" rel = "help" title = "View Source" >
2023-10-03 13:37:09 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2023-10-10 20:36:12 +03:00
< pre translate = "no" > < span class = "attribute" > @type< / span > status() :: :deleted | :paused | :past_due | :active< / pre >
2023-10-03 13:37:09 +03:00
< / div >
< / section >
< / section >
< / div >
< / section >
< section id = "functions" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#functions" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
Functions
< / a >
< / h1 >
< div class = "functions-list" >
2023-10-10 20:36:12 +03:00
< section class = "detail" id = "active/0" >
< div class = "detail-header" >
< a href = "#active/0" class = "detail-link" title = "Link to this macro" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this macro< / span >
< / a >
< h1 class = "signature" translate = "no" > active()< / h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L39" class = "icon-action" rel = "help" title = "View Source" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
2023-10-03 13:37:09 +03:00
2023-10-10 20:36:12 +03:00
< span class = "note" > (macro)< / span >
< / div >
< section class = "docstring" >
< / section >
< / section >
< section class = "detail" id = "deleted/0" >
2023-10-03 13:37:09 +03:00
< div class = "detail-header" >
2023-10-10 20:36:12 +03:00
< a href = "#deleted/0" class = "detail-link" title = "Link to this macro" >
2023-10-03 13:37:09 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
2023-10-10 20:36:12 +03:00
< span class = "sr-only" > Link to this macro< / span >
2023-10-03 13:37:09 +03:00
< / a >
2023-10-10 20:36:12 +03:00
< h1 class = "signature" translate = "no" > deleted()< / h1 >
2023-10-03 13:37:09 +03:00
2023-10-10 20:36:12 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L39" class = "icon-action" rel = "help" title = "View Source" >
2023-10-03 13:37:09 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
2023-10-10 20:36:12 +03:00
< span class = "note" > (macro)< / span >
2023-10-03 13:37:09 +03:00
< / div >
< section class = "docstring" >
< / section >
< / section >
2023-10-10 20:36:12 +03:00
< section class = "detail" id = "past_due/0" >
< div class = "detail-header" >
< a href = "#past_due/0" class = "detail-link" title = "Link to this macro" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this macro< / span >
< / a >
< h1 class = "signature" translate = "no" > past_due()< / h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L39" class = "icon-action" rel = "help" title = "View Source" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
2023-10-03 13:37:09 +03:00
2023-10-10 20:36:12 +03:00
< span class = "note" > (macro)< / span >
< / div >
< section class = "docstring" >
< / section >
< / section >
< section class = "detail" id = "paused/0" >
< div class = "detail-header" >
< a href = "#paused/0" class = "detail-link" title = "Link to this macro" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this macro< / span >
< / a >
< h1 class = "signature" translate = "no" > paused()< / h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L39" class = "icon-action" rel = "help" title = "View Source" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< span class = "note" > (macro)< / span >
< / div >
< section class = "docstring" >
< / section >
< / section >
< section class = "detail" id = "valid_statuses/0" >
2023-10-03 13:37:09 +03:00
< div class = "detail-header" >
2023-10-10 20:36:12 +03:00
< a href = "#valid_statuses/0" class = "detail-link" title = "Link to this function" >
2023-10-03 13:37:09 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2023-10-10 20:36:12 +03:00
< h1 class = "signature" translate = "no" > valid_statuses()< / h1 >
2023-10-03 13:37:09 +03:00
2023-10-10 20:36:12 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/billing/subscription/status.ex#L42" class = "icon-action" rel = "help" title = "View Source" >
2023-10-03 13:37:09 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< / section >
< / section >
< / div >
< / section >
< footer class = "footer" >
< p >
< span class = "line" >
< button class = "a-main footer-button display-quick-switch" title = "Search HexDocs packages" >
Search HexDocs
< / button >
< a href = "Plausible.epub" title = "ePub version" >
Download ePub version
< / a >
< / span >
< / p >
< p class = "built-using" >
Built using
< a href = "https://github.com/elixir-lang/ex_doc" title = "ExDoc" target = "_blank" rel = "help noopener" translate = "no" > ExDoc< / a > (v0.30.3) for the
< a href = "https://elixir-lang.org" title = "Elixir" target = "_blank" translate = "no" > Elixir programming language< / a >
< / p >
< / footer >
< / div >
< / div >
< / section >
< / div >
< script src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" > < / script >
< script > mermaid . initialize ( { startOnLoad : true } ) < / script >
< / body >
< / html >