> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useplinth.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# SaaS-Standard

> The right default for most subscription SaaS businesses.

Start here if you're not sure which preset to use. It covers the standard SaaS billing behaviour: charge immediately for upgrades, wait until renewal for downgrades, give customers a week to sort a failed card.

## Who should use this

* Monthly or annual subscription SaaS
* Nigerian B2B or B2C apps with card-paying customers
* Any product where you want sane defaults without thinking too hard about policy

## Settings

| Policy knob                   | Value                            | Why                                                                                |
| ----------------------------- | -------------------------------- | ---------------------------------------------------------------------------------- |
| Upgrade strategy              | Immediate, prorated              | Customer gets the upgrade now, pays the difference now                             |
| Downgrade strategy            | At period end                    | Customer keeps current plan until renewal — no partial credits to manage mid-cycle |
| Grace period                  | 7 days                           | Enough time to fix a card issue without losing the customer                        |
| Dunning retries               | 4 (days +1, +3, +7, +14)         | Payday-aware schedule                                                              |
| Plan changes while `past_due` | Block upgrades, allow downgrades | Don't let past-due customers upgrade without paying first                          |
| Billing mode                  | Advance                          | Invoice at start of period (standard SaaS)                                         |
| Arrears                       | No                               | —                                                                                  |
| Max debt                      | None                             | No cap on outstanding balance                                                      |

## Apply

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.useplinth.com/v1/tenant/apply-preset \
    -H "Authorization: Bearer sk_test_DOCS_SHARED_KEY" \
    -H "Content-Type: application/json" \
    -d '{"preset": "saas_standard"}'
  ```

  ```typescript Node.js theme={null}
  await client.tenant.applyPreset('saas_standard');
  ```
</CodeGroup>

## Knob details

<AccordionGroup>
  <Accordion title="Immediate upgrade (prorated)">
    When a customer upgrades mid-cycle, we calculate the unused value of their current plan and the prorated cost of the new plan. They pay the difference immediately. The upgrade takes effect that moment — no waiting for renewal. This is what customers expect: pay more, get more right now.
  </Accordion>

  <Accordion title="Downgrade at period end">
    When a customer downgrades, we schedule the change for the next renewal date. They stay on their current plan until then. This is simpler for you (no proration credit to issue) and better for the customer (they keep their access). The `subscription.plan_change_scheduled` event fires immediately; the actual change fires at period end.
  </Accordion>

  <Accordion title="7-day grace period">
    After all dunning retries are exhausted, the customer has 7 days before access is cut. Most payment issues — expired cards, daily limits — resolve within a week. 7 days keeps voluntary churn low without leaving you waiting indefinitely.
  </Accordion>

  <Accordion title="Payday-aware retry schedule">
    The retry on day +7 shifts to the 25th of the month if it would otherwise fall after the 25th. Salary and payroll dates in Nigeria cluster around the 25th, so the probability of a successful charge is higher then.
  </Accordion>
</AccordionGroup>
