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

# Use Cases

> Common scenarios for mandates

A mandate is the merchant's standing permission to collect from a customer in the future. The scenarios below describe the most common shapes that permission takes — what the customer agrees to and how the platform behaves at collection time — alongside the configuration that expresses each one.

<AccordionGroup>
  <Accordion title="Subscription billing">
    The customer agrees to pay a fixed amount on a regular cadence, the way streaming services, gym memberships, and SaaS plans bill. The customer authorises once during sign-up; every subsequent month the merchant collects without involving them.

    The configuration locks down the price so the customer cannot be charged a different amount.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 9900,
        "recurrence": {
          "type": "monthly",
          "interval_count": 1
        }
      }
    }
    ```

    <Note>
      By default (`adjustment: "nearest_weekday"`), if the chosen day falls on a Saturday or Sunday, the collection is moved to the closest weekday so banks process it on a working day. With `days: [1]`, a 1st that falls on Saturday is collected on the Friday before, and a 1st that falls on Sunday is collected on the Monday after. To collect on the 1st regardless of weekend, turn this behaviour off:

      ```json theme={"system"}
      {
        "mandate_options": {
          "type": "scheduled",
          "amount": 9900,
          "recurrence": {
            "type": "monthly",
            "interval_count": 1,
            "on": {
              "type": "day_of_month",
              "days": [1],
              "adjustment": "none"
            }
          }
        }
      }
      ```
    </Note>
  </Accordion>

  <Accordion title="Utility or insurance recurring collection">
    The customer agrees to pay a predictable amount each month — typically aligned with payday or a billing cycle.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 145000,
        "recurrence": {
          "type": "monthly",
          "interval_count": 1
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Payroll-aligned recurring collection">
    The customer agrees to pay on the last working day of every month, regardless of how many days the month has — a common pattern for payroll-aligned obligations such as rent, levies, or loan repayments.

    Using the `last` keyword instead of a specific number means the collection always lands on the actual final day of the month, even in February.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 250000,
        "recurrence": {
          "type": "monthly",
          "interval_count": 1,
          "on": {
            "type": "day_of_month",
            "days": ["last"],
            "adjustment": "previous_weekday"
          }
        }
      }
    }
    ```

    <Note>
      Specific day numbers are simply skipped in months that don't have them. For example, configuring the collection for day 31 means no collection in February, April, June, September, or November — five months in the year. If the intent is "every month-end", use `last` instead.

      ```json theme={"system"}
      {
        "mandate_options": {
          "type": "scheduled",
          "amount": 250000,
          "recurrence": {
            "type": "monthly",
            "interval_count": 1,
            "on": {
              "type": "day_of_month",
              "days": [31],
              "adjustment": "previous_weekday"
            }
          }
        }
      }
      ```
    </Note>
  </Accordion>

  <Accordion title="Twice-monthly collection (1st and 15th)">
    The customer agrees to split a monthly obligation across two collection dates — common for rent, body-corporate levies, or any arrangement where one large debit would strain cashflow.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 50000,
        "recurrence": {
          "type": "monthly",
          "interval_count": 1,
          "on": {
            "type": "day_of_month",
            "days": [1, 15],
            "adjustment": "nearest_weekday"
          }
        }
      }
    }
    ```

    <Note>
      Each configured day must be distinct. The platform rejects the configuration if the same day appears twice, or if two entries describe the same date (for instance "day 31" and "last day of month" in a 31-day month):

      ```json theme={"system"}
      {
        "mandate_options": {
          "type": "scheduled",
          "amount": 50000,
          "recurrence": {
            "type": "monthly",
            "interval_count": 1,
            "on": {
              "type": "day_of_month",
              "days": [1, 1, 15]
            }
          }
        }
      }
      ```
    </Note>
  </Accordion>

  <Accordion title="Nth weekday of the month">
    The customer agrees to a collection on a specific weekday occurrence within each month — for example, the second Tuesday (a common payday cadence in some markets) or the last Friday (typical for payroll-aligned subscriptions).

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 75000,
        "recurrence": {
          "type": "monthly",
          "interval_count": 1,
          "on": {
            "type": "nth_day_of_month",
            "day": "fri",
            "occurrence": "last"
          }
        }
      }
    }
    ```

    <Note>
      A given weekday appears either 4 or 5 times in a calendar month. Asking for the 5th occurrence means there's no collection in months that only contain 4 — which happens regularly, especially in February. If the intent is "always the last", use `"last"` instead of a number:

      ```json theme={"system"}
      {
        "mandate_options": {
          "type": "scheduled",
          "amount": 75000,
          "recurrence": {
            "type": "monthly",
            "interval_count": 1,
            "on": {
              "type": "nth_day_of_month",
              "day": "fri",
              "occurrence": 5
            }
          }
        }
      }
      ```
    </Note>
  </Accordion>

  <Accordion title="Annual renewal or membership fee">
    The customer agrees to a single collection per year — annual subscriptions, professional association dues, insurance premiums.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 120000,
        "recurrence": {
          "type": "yearly",
          "interval_count": 1
        }
      }
    }
    ```

    <Note>
      February 29 is a valid date but only exists in leap years. Configuring an annual collection for Feb 29 means it runs in 2024 and 2028 but is skipped in 2025, 2026, and 2027. If the intent is "once a year around month-end February", target Feb 28 or use a month-end configuration instead:

      ```json theme={"system"}
      {
        "mandate_options": {
          "type": "scheduled",
          "amount": 120000,
          "recurrence": {
            "type": "yearly",
            "interval_count": 1,
            "on": {
              "type": "day_of_year",
              "dates": [{ "month": 2, "day": 29 }]
            }
          }
        }
      }
      ```
    </Note>
  </Accordion>

  <Accordion title="Weekly recurring payment">
    The customer agrees to one or more collections per week — weekly delivery services, lesson fees, staff allowances.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 20000,
        "recurrence": {
          "type": "weekly",
          "interval_count": 1
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Variable recurring payment (VRP) / wallet top-up">
    The customer agrees that the merchant may collect varying amounts on demand, up to an agreed ceiling — wallet auto top-ups, ride-hailing balances, prepaid utility refills. There's no fixed cadence; the merchant decides when to collect.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "on_demand",
        "amount": { "max": 50000 },
        "validity_period": {
          "start_date": "2026-01-01",
          "end_date": "2026-12-31"
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Usage-based or pay-as-you-go billing">
    The customer agrees to be billed at the end of each period based on actual usage. The amount varies but stays within an agreed range, so the customer is never surprised by a charge outside the expected ballpark.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "on_demand",
        "amount": { "min": 1000, "max": 200000 },
        "recurrence": {
          "type": "monthly",
          "interval_count": 1
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Bounded campaign or pledge">
    The customer agrees to a fixed number of collections over a fixed time window — a 6-month donation pledge, a promotional payment plan, a capped fundraising commitment.

    ```json theme={"system"}
    {
      "mandate_options": {
        "type": "scheduled",
        "amount": 10000,
        "max_occurrences": 6,
        "validity_period": {
          "start_date": "2026-01-01",
          "end_date": "2026-06-30"
        },
        "recurrence": {
          "type": "monthly",
          "interval_count": 1
        }
      }
    }
    ```

    <Note>
      Once the agreed limit is reached — six successful collections in this case, or the validity period ending on June 30, 2026 — the mandate is automatically marked as `EXPIRED` and any further collection attempt is rejected. The customer keeps control: they never pay more than they originally agreed to. See [Lifecycle](/documentation/collect/payment-sessions/mandates/lifecycle) for how this is reflected in the mandate's status.
    </Note>
  </Accordion>
</AccordionGroup>

For configuration details on each field, see [Consent](/documentation/collect/payment-sessions/mandates/consent).
