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

# Calendar Subscription Plans

> Create a Calendar Subscription Plan, a subscription whose term ends on a fixed month and day shared by every subscriber.

## Overview

A **Calendar Subscription Plan** ends every subscriber's term on the same month and day, no matter when each subscriber started. Use this plan type when everyone must line up with a shared fiscal year, program year, or event window — for example, a membership that always renews on January 1.

A Calendar plan is a record of the `Subscription_Plan__c` object that uses the `FC_Calendar` **record type** (label "Calendar"). A record type is a Salesforce setting that makes one object behave in more than one way; choosing the Calendar record type is what makes the plan calculate its term against a fixed calendar date. There is no separate "type" picklist to set.

## Before You Start

* You need permission to create `Subscription_Plan__c` records (the **fusionCore Subscriptions** permission set or equivalent).
* Decide the fixed month and day every term should end on — for example, December 31.

## How the Term Is Calculated

At purchase time, fusionCore sets the term's end date to the plan's **End Month** and **End Day** in the start year. If the subscriber starts *after* that date has already passed for the year, the end date rolls forward to the same month and day in the next year.

For example, with an **End Month** (`End_Month__c`) of December and an **End Day** (`End_Day__c`) of 31:

* A subscriber who starts on March 1, 2025 ends on December 31, 2025.
* A subscriber who starts on December 31, 2025 (or later) ends on December 31, 2026.

<Info>
  **End Month** (`End_Month__c`) and **End Day** (`End_Day__c`) are both required for a Calendar plan to work. Without both, the term cannot be calculated and the purchase fails. See [Limitations and Common Pitfalls](#limitations-and-common-pitfalls) below.
</Info>

## How to Create a Calendar Subscription Plan

<Steps>
  <Step title="Open the Subscription Plans list">
    Click the **App Launcher** (the nine dots at the top left of Salesforce) and type **Subscription Plan**, then open the **Subscription Plans** list.

    <Frame caption="Searching for Subscription Plan in the App Launcher">
      <img src="https://mintcdn.com/fusionspan/4u-JGPkRA8QDMGYi/images/end-user-guides/4855267356/AppLauncher_SubscriptionPlan.png?fit=max&auto=format&n=4u-JGPkRA8QDMGYi&q=85&s=e751490dc6d10a5e468a8ff5e75a4f89" alt="The App Launcher search box with Subscription Plan typed in" width="3400" height="1744" data-path="images/end-user-guides/4855267356/AppLauncher_SubscriptionPlan.png" />
    </Frame>
  </Step>

  <Step title="Create a new plan with the Calendar record type">
    At the top right of the list view, click **New**.

    <Frame caption="The New button on the Subscription Plans list view">
      <img src="https://mintcdn.com/fusionspan/4u-JGPkRA8QDMGYi/images/end-user-guides/4855267356/New_SubscriptionPlan.png?fit=max&auto=format&n=4u-JGPkRA8QDMGYi&q=85&s=b1226be0fa5871a9e3cc4b2f088ef5f7" alt="The New button at the top right of the Subscription Plans list view" width="3396" height="1744" data-path="images/end-user-guides/4855267356/New_SubscriptionPlan.png" />
    </Frame>

    Select the **Calendar** record type, then click **Next**. This is the step that makes the plan a Calendar plan.

    <Frame caption="Selecting the Calendar record type">
      <img src="https://mintcdn.com/fusionspan/4u-JGPkRA8QDMGYi/images/end-user-guides/4855267356/SubscriptionPlan_RecordType.png?fit=max&auto=format&n=4u-JGPkRA8QDMGYi&q=85&s=7d5d9b9be3f035d9361e2ad4986ecd60" alt="The record type selection dialog with Calendar chosen" width="3398" height="1728" data-path="images/end-user-guides/4855267356/SubscriptionPlan_RecordType.png" />
    </Frame>
  </Step>

  <Step title="Fill in the plan fields">
    Complete the plan's fields:

    * **Name** (required)
    * **End Month** (`End_Month__c`) — required; the month the term ends
    * **End Day** (`End_Day__c`) — required; the day of the month the term ends
    * **Start Month** (`Start_Month__c`) — recommended; the month the period starts
    * **Start Day** (`Start_Day__c`) — recommended; the day of the month the period starts
    * **Renewal Days** (`Renewal_Days__c`) — optional; how many days before the end date the nightly renewal job generates the renewal order
    * **Grace Period** (`Grace_Period__c`) — optional; extra days after the end date before the subscription lapses
    * **Auto Charge** (`Auto_Charge__c`) — optional; whether renewals charge a stored payment method automatically (Disabled, Enabled, or Required)
    * **Prorate Type** (`Prorate_Type__c`) — optional; how a mid-period join is priced down (Calendar-only)
    * **Advanced Join Days** (`Advanced_Join_Days__c`) — optional; the early-join window (Calendar-only)
    * **Advanced Join Pricing** (`Advanced_Join_Pricing__c`) — optional; how the bonus period is charged (Calendar-only)
    * **Active** (`Active__c`) — leave checked so the plan can be used; it is checked by default

    <Frame caption="The Calendar Subscription Plan information fields">
      <img src="https://mintcdn.com/fusionspan/4u-JGPkRA8QDMGYi/images/end-user-guides/4855267356/SP_CalendarInfo.png?fit=max&auto=format&n=4u-JGPkRA8QDMGYi&q=85&s=5138599b53b34a9d1630c2e0c4be5bd4" alt="The new Calendar Subscription Plan form with the information fields filled in" width="1674" height="1494" data-path="images/end-user-guides/4855267356/SP_CalendarInfo.png" />
    </Frame>
  </Step>

  <Step title="Save the plan">
    Click **Save**.

    <Note>
      After saving, link the plan to a subscription product through a `Product_Subscription_Plan__c` record, and mark exactly one plan as the default for that product. The product must have **Is Subscription** checked (and **Is Membership** for memberships). See [Subscription Products](/end-user-guides/products/product-set-up/subscription-products).
    </Note>
  </Step>
</Steps>

## Proration and Advanced Joins

Two optional behaviors are unique to Calendar plans because they only make sense against a fixed end date.

<Info>
  **Prorate Type** (`Prorate_Type__c`) controls how a mid-period join is priced down. A subscriber who joins partway through the calendar term pays a fraction of the full price, at the granularity you choose: Daily, Weekly, Monthly, Quarterly, or Semi-Annual.
</Info>

<Info>
  **Advanced Joins** let a subscriber who joins shortly before the term end roll straight into the next full term.

  * **Advanced Join Days** (`Advanced_Join_Days__c`) defines a window of *N* days before the term end. If a subscriber joins inside that window, their end date is pushed to the following year's end date, so they get the rest of the current term plus all of next year.
  * **Advanced Join Pricing** (`Advanced_Join_Pricing__c`) sets how that bonus period is charged: Free, or a prorated amount at Daily, Weekly, Monthly, Quarterly, or Semi-Annual granularity.
</Info>

## Key Fields

| Field                 | API name                   | Notes                                                                                |
| --------------------- | -------------------------- | ------------------------------------------------------------------------------------ |
| Active                | `Active__c`                | Checkbox, checked by default. The plan must be active to be used.                    |
| End Month             | `End_Month__c`             | Picklist. Required — the month every term ends.                                      |
| End Day               | `End_Day__c`               | Picklist. Required — the day every term ends.                                        |
| Start Month           | `Start_Month__c`           | Picklist. Recommended — sets the start of the period.                                |
| Start Day             | `Start_Day__c`             | Picklist. Recommended — sets the start of the period.                                |
| Renewal Days          | `Renewal_Days__c`          | Number of days before the end date that the renewal job generates the renewal order. |
| Grace Period          | `Grace_Period__c`          | Number of days after the end date before the subscription lapses.                    |
| Auto Charge           | `Auto_Charge__c`           | Disabled, Enabled, or Required — controls automatic charging of renewals.            |
| Prorate Type          | `Prorate_Type__c`          | Calendar-only. Granularity for pricing down a mid-period join.                       |
| Advanced Join Days    | `Advanced_Join_Days__c`    | Calendar-only. The early-join window in days.                                        |
| Advanced Join Pricing | `Advanced_Join_Pricing__c` | Calendar-only. How the bonus period is charged.                                      |

## Limitations and Common Pitfalls

* **End Month and End Day are both required, but enforced at purchase, not at save.** A plan can save without them, yet a subscription purchase that uses the plan fails with a validation error (`Calendar_Subscription_Plan_Validation_Failed_V2`) when **End Month** (`End_Month__c`) or **End Day** (`End_Day__c`) is missing. Always set both.
* **Advanced Join and Prorate settings are Calendar-only.** **Advanced Join Days** (`Advanced_Join_Days__c`), **Advanced Join Pricing** (`Advanced_Join_Pricing__c`), and **Prorate Type** (`Prorate_Type__c`) are never read for an Anniversary plan; on that record type they are silently ignored, not blocked.
* **Advanced Join proration does not account for leap years.** Daily proration divides by 365 and weekly by 52, so amounts in a leap year are not adjusted.
* **The plan must be active to be used.** If **Active** (`Active__c`) is unchecked, the plan is not available for new subscriptions.
* **Renewal Days drives the automatic renewal job.** If **Renewal Days** (`Renewal_Days__c`) is blank, the nightly renewal job never picks up subscriptions on this plan, so renewal orders are not generated automatically. Manual renewals still work.
* **An unrecognized record type stops processing.** Subscription term logic only handles the `FC_Anniversary` and `FC_Calendar` record types. A plan on any other record type raises an unhandled-record-type error (`Error_Unhandled_Record_Type_Id_V2`).
