Penalties for CD accounts

You can apply penalties to certificate of deposit (CD) accounts when specific withdrawal conditions occur, such as shortly after account opening, during the term, or after multiple withdrawals within a short period.

CD penalty configuration lets you model different withdrawal behaviors across the product lifecycle. You can apply these penalty types individually or combine them to enforce product rules more precisely. Penalties are configured at the deposit product level during its creation, and the Pismo platform evaluates them at withdrawal time.

When designing a penalty strategy, pay close attention to:

  • the customer event that triggers the penalty
  • whether the penalty should be percentage-based or fixed
  • the dependency on the interest plan
  • whether multiple penalties may apply together

A CD product can include one or more of these penalty types, refer to the Penalty types section for more details. Depending on the product configuration, you can apply more than one penalty to the same withdrawal.

Supported penalty models

CD account penalties use two main calculation models.

Penalty model

Description

Percentage-based

Calculates the penalty by applying the equivalent of a configured number of interest days to the withdrawn amount. In a percentage‑based penalty, the Pismo platform calculates the value of X interest days on the withdrawn amount. Percentage‑based penalties require the following interest‑plan values from the product:

  • fixed_interest_rate or benchmark_rate
  • accrual_basis

Fixed amount

Calculates a penalty as the monetary value of forfeited interest days, typically based on the account balance or CD principal. Fixed-amount penalties calculate the monetary value of X forfeited interest days for the account balance.

Penalty types

Here is a summary table of all penalty types. For the relevant fee IDs and transaction flows, refer to Create deposit product.

Penalty typeModelBasisMain configuration
Early withdrawal after openingPercentage-basedWithdrawn amountapplicable_within_days, penalty_interest_days
Tiered interest forfeitureFixed amountDays held tiermin_days_held, max_days_held, forfeited_interest_days
Subsequent withdrawalPercentage-basedWithdrawn amountwindow_behavior, applicable_within_days, penalty_interest_days
Grace periodPercentage-basedWithdrawn amountduration_days, penalty_interest_days
Withdrawal feePercentage-based or fixed amountWithdrawn amount or fixed configured valuetype, value

Early withdrawal after opening

This penalty applies to any withdrawal made within a configured number of days after account opening.

How it works

This is how early withdrawal after opening is calculated.

Calculation factorDescription
TypePercentage-based
BasisWithdrawn amount
Equivalent topenalty_interest_days days of interest
Applies withinapplicable_within_days after account opening

Example

"penalties": {
  "early_withdrawal_after_opening": {
    "applicable_within_days": 10,
    "penalty_interest_days": 7
  }
}

In this example, the Pismo platform applies a penalty equivalent to seven days of simple interest on the withdrawn amount for any withdrawal made within the first ten days after the deposit account opens.

Tiered interest forfeiture

This penalty applies a fixed penalty amount based on how long the funds remained in the account before withdrawal.

How it works

Calculation factorDescription
TypeFixed amount
BasisA holding‑period tier defined by min_days_held and max_days_held
Equivalent toforfeited_interest_days days of interest, converted into a monetary amount

Rules

  • You can define multiple tiers.
  • Tiers must not overlap.
  • The last tier’s max_days_held must not exceed the product’s max_term.

Example

"tiered_interest_forfeiture": [
  {
    "min_days_held": 1,
    "max_days_held": 90,
    "forfeited_interest_days": 30
  },
  {
    "min_days_held": 91,
    "max_days_held": 180,
    "forfeited_interest_days": 90
  }
]

In this example:

  • A withdrawal made between day 1 and day 90 forfeits 30 days of interest.
  • A withdrawal made between day 91 and day 180 forfeits 90 days of interest.

The Pismo platform converts the forfeited interest days into a fixed monetary penalty amount. The penalty amount remains fixed and does not vary based on the amount withdrawn.

Subsequent withdrawal

This penalty applies when a customer makes subsequent withdrawals within a configured time window.

How it works

Calculation factorDescription
TypePercentage-based
BasisWithdrawn amount
Equivalent topenalty_interest_days days of interest
Windowapplicable_within_days

Window strategies

Window strategies define how the time window is tracked when evaluating whether a penalty applies. The window sets the period in which withdrawals are reviewed, and the strategy determines how that period behaves after each withdrawal.

This penalty supports two window strategies:

  • ROLLING: the window resets after each withdrawal
  • FIXED: the window starts with the first withdrawal and does not reset

Example

"subsequent_withdrawals": {
  "window_behavior": "ROLLING",
  "applicable_within_days": 6,
  "penalty_interest_days": 7
}

In this example, the Pismo platform applies a penalty equivalent to seven days of simple interest to any subsequent withdrawal made within a six-day rolling window. Each qualifying withdrawal resets the window and starts a new six-day period.

Grace period

This penalty applies to withdrawals made during the grace period.

During the grace period, customers can make multiple cash‑out transactions without penalty as long as the total amount withdrawn does not exceed the matured CD balance.

When cumulative withdrawals go beyond the matured CD balance, only the excess amount is classified as an early withdrawal and is subject to the grace‑period penalty defined at the deposit product level.

If a withdrawal reduces the remaining balance below the previous principal amount, the Pismo platform applies the grace‑period penalty.

This behavior is deterministic and evaluated per transaction:

  • The penalty applies only to the withdrawal that causes the cumulative amount to exceed the matured balance.
  • The penalty is calculated solely on the excess amount and is never applied retroactively.

How it works

Calculation factorDescription
TypePercentage-based
BasisWithdrawn amount
Equivalent topenalty_interest_days days of interest
Durationduration_days

Example

"grace_period": {
  "duration_days": 10,
  "penalty_interest_days": 30
}

In this example, a withdrawal made during the ten-day grace period triggers a penalty only if it causes the remaining balance to fall below the previous CD principal. If that happens, the Pismo platform applies a penalty equivalent to 30 days of interest.

Withdrawal fee

This penalty is a generic withdrawal fee that you can configure as either a percentage-based fee or a fixed amount.

How it works

Calculation factorDescription
TypePercentage-based or fixed amount
ValuesThe product defines these directly in the withdrawal_fee configuration object

Example

"withdrawal_fee": {
  "type": "PERCENTAGE",
  "value": 1.5
}

In this example, a 1.5% fee is applied to the withdrawn amount because the penalty is configured using the PERCENTAGE type.

Penalty calculation

Penalty calculation depends on the penalty type.

Percentage-based penalties

This model applies to:

  • Early withdrawal after opening
  • Subsequent withdrawal
  • Grace period
  • Withdrawal fee when configured as a percentage

The Pismo platform derives the effective penalty percentage from the product’s interest settings.

Example parameters

The following formula is used to calculate a percentage-based penalty.

Calculation factorValue
fixed_interest_rate3% annually
accrual_basis365
penalty_interest_days7
withdrawal_amount10,000

Step 1: Compute the daily rate

daily_rate = fixed_interest_rate / accrual_basis
daily_rate = 0.03 / 365 ≈ 0.0000822

Step 2: Compute the penalty factor for X interest days

penalty_factor = daily_rate * penalty_interest_days
penalty_factor = 0.0000822 * 7 ≈ 0.0005754

Step 3: Convert the factor into a percentage

penalty_percent = penalty_factor * 100
penalty_percent ≈ 0.05754 (%)

Step 4: Apply the percentage to the withdrawal amount

penalty_amount = withdrawal_amount * (penalty_percent / 100)
penalty_amount = 10,000 * 0.0005754 ≈ 5.75

Result

The penalty amount is 5.75.

Fixed-amount penalties

This model applies to:

  • Tiered interest forfeiture
  • Withdrawal fee when configured as a fixed amount

The Pismo platform computes a monetary penalty based on forfeited interest days.

Example parameters

Calculation factorValue
interest_rate3% annually
accrual_basis365
forfeited_interest_days30
CD principal amount500

Formula

penalty = (((1 + (interest_rate * n / accrual_basis)) * CD_amount) - CD_amount)

Applied example

Note that the subtraction of 500 removes the original principal amount, ensuring the formula returns only the interest portion, which represents the penalty.

penalty = (((1 + (0.03 * 30 / 365)) * 500) - 500)
penalty ≈ 1.23

Result

The fixed penalty amount is 1.23. The Pismo platform then uses this monetary value as the fixed amount for the fee model.

Key rules and considerations

  • Penalties are evaluated at withdrawal time.
  • A single withdrawal can trigger multiple penalties if the product configuration allows it.
  • Percentage-based penalties depend on the product’s interest plan to derive the effective rate.
  • Tiered interest forfeiture tiers must be:
    • non-overlapping
    • logically ordered
    • bounded by the product’s maximum term
  • Grace period withdrawals do not automatically trigger a penalty; the Pismo platform applies this penalty only when the withdrawal reduces the remaining balance below the previous CD principal.

Example penalties object

This example shows how a CD product can define multiple penalties.

"penalties": {
  "early_withdrawal_after_opening": {
    "applicable_within_days": 10,
    "penalty_interest_days": 7
  },
  "tiered_interest_forfeiture": [
    {
      "min_days_held": 1,
      "max_days_held": 90,
      "forfeited_interest_days": 30
    },
    {
      "min_days_held": 91,
      "max_days_held": 180,
      "forfeited_interest_days": 90
    }
  ],
  "subsequent_withdrawals": {
    "window_behavior": "ROLLING",
    "applicable_within_days": 6,
    "penalty_interest_days": 7
  },
  "grace_period": {
    "duration_days": 10,
    "penalty_interest_days": 30
  },
  "withdrawal_fee": {
    "type": "PERCENTAGE",
    "value": 1.5
  }
}

Penalty waivers

Penalty waivers allow you to remove the early‑withdrawal penalty from a specific deposit account before processing a cash‑out. This functionality applies only to deposit products and is not available for savings accounts.

When creating a waiver, you can define its validity period and optionally specify exceptions. For example, all early‑withdrawal penalties may be waived while still keeping the grace‑period fee active.

These are the endpoints that you can use to manage penalty waivers.

EndpointDescription
Create penalty waiverCreates a waiver for active penalties on a deposit account.
Get penalty waiverReturns the active penalty waiver for a deposit account.
Delete penalty waiverDeletes the active penalty waiver for a deposit account. After deletion, all applicable penalty fees are restored and applied to future penalty‑triggering events.

Example

Here is a penalty waiver example, note that you must use an ISO 8601-compliant format for valid_until.

{
  "valid_until": "2026-04-31T23:59:59.000Z",
  "exceptions": [
    "WITHDRAWAL_FEE"
  ]
}

Exceptions

You can use the exceptions parameter of Create penalty waiver to define which penalty types are NOT waived when a penalty waiver is applied. If no exceptions are provided, all penalty types are waived by default.

Each exception value matches a field in the product’s penalties configuration. If you do not specify a penalty type in penalties, listing it as an exception has no effect. Only penalties that exist in the product and appear in the exception list stay active. For a list of penalty types, refer to Penalty types and Create deposit product.