---
title: "Create deposit product"
method: POST
path: "/v1/deposits"
tags: ["Product"]
---

# Create deposit product

`POST /v1/deposits`

Create an organization's time deposit accounts. Time deposit accounts, such as CDs, require you to keep your funds in the account for a mutually agreed amount for a specific period of time.<br>
This endpoint generates the [Deposit product created](https://developers.pismo.io/events/docs/deposit-product-creation-1) event.
For information about interest-bearing accounts, refer to [Interest-bearing accounts](https://developers.pismo.io/pismo-docs/docs/interest-bearing-accounts).

## Headers

- `AuthorizationToken` string, required

## Request body

- CreateDepositProductRequest
  - `name` string, required — The product name.
  - `interest_plan_id` string, required — Interest rate plan ID. This corresponds to the ID you created using the [Create interest plan version](https://developers.pismo.io/pismo-docs/reference/patch-v1-interest-plan)) endpoint.
  - `term_type` 'FIXED' | 'FLEXIBLE', required — Term type. For example, `FIXED` or `FLEXIBLE`.
  - `maturity_instructions` DepositMaturityInstructions — - If the principal or interest are `ROLLOVER,` the respective amounts is rolled over to a new deposit term. - If the principal is `NO_ACTION`, no action is taken with the principal amount at maturity. - If the interest is `PAY` and the accrued interest is greater than zero, it's paid to the account's cash balance.
    - `principal` 'NO_ACTION' | 'ROLLOVER' — Specifies the status of the principal amount at maturity. - `NO_ACTION`: No action is taken with the principal amount - `ROLLOVER`: The principal amount is rolled over to a new deposit term If no value is selected, the principal defaults to `NO_ACTION`.
    - `interest` 'PAY' | 'ROLLOVER' — Specifies the status of the accrued interest at maturity. - `PAY`: The accrued interest is paid to the account - `ROLLOVER`: The accrued interest is rolled over and added to the principal If no value is selected, the interest defaults to `PAY`.
  - `processing_codes` DepositProcessingCodes
    - `interest_processing_code` string — Processing code for interest calculation. <br> If you don't specify a value, the default is `009797`.
    - `detach_processing_code` string — Processing code for detaching deposit feature from a bank account.<br> Detaching means the bank removes the deposit feature from the bank account. If you don't specify a value, the default is `009696`.
  - `cool_off_period` integer — Period in days when a withdrawal can be made without penalty.
  - `funding_duration` integer — Period during which money is allowed to deposit into the account before the account is blocked. The value of this field is calculated in days.
  - `grace_period` integer — Number of days during which changes can be made to the product before it rolls over. If you define a grace period penalty, configure it under `penalties.grace_period`.
  - `min_amount` number — The minimum balance required to earn yield. If the balance is below this amount, yield is not calculated, and if no value is specified, any available amount is treated as accrued interest.
  - `max_amount` number — Maximum deposit amount.
  - `min_term` integer — Minimum term duration. The value of this field is calculated in days.
  - `max_term` integer — Maximum term duration. The value of this field is calculated in days.
  - `penalties` DepositPenalties — Set of penalty configurations that can be applied to a deposit product. Each penalty type corresponds to a specific fee ID and transaction flow within the Pismo platform. For details about penalty types, refer to the [Penalty types](https://developers.pismo.io/pismo-docs/docs/penalties-for-cd-accounts#penalty-types) section of Penalties for CD accounts.
    - `early_withdrawal_after_opening` EarlyWithdrawalAfterOpening — This penalty corresponds to fee ID `earlyWithdrawalAfterOpeningPenaltyID` and transaction flow `earlyWithdrawalAfterOpeningPenalty`
      - `applicable_within_days` integer, required — Number of days after opening that the penalty is applied
      - `penalty_interest_days` integer, required — Number of days multiplied by the applicable interest or earnings rate to determine the penalty amount.
    - `grace_period` GracePeriod — This penalty corresponds to fee ID `gracePeriodPenaltyID` and trasaction flow `gracePeriodPenalty`
      - `duration_days` integer, required — Duration of the grace period in days
      - `penalty_interest_days` integer, required — Number of interest days to forfeit as penalty
    - `tiered_interest_forfeiture` TieredInterestForfeitureTier[] — This penalty corresponds to fee ID `tieredInterestForfeiturePenaltyID` and transaction flow `tieredInterestForfeiturePenalty`
      - `min_days_held` integer, required — Minimum number of days the deposit must be held
      - `max_days_held` integer, required — Maximum number of days the deposit can be held
      - `forfeited_interest_days` integer, required — Number of interest days to forfeit as penalty
    - `withdrawal_fee` WithdrawalFee — This penalty corresponds to fee ID `withdrawalFeePenaltyID` and transaction flow `withdrawalFeePenalty`
      - `type` 'PERCENTAGE' | 'FIXED', required — Withdrawal fee type
      - `value` number, required — Value of the withdrawal fee
    - `subsequent_withdrawals` SubsequentWithdrawals — This penalty corresponds to fee ID `subsequentWithdrawalPenaltyID` and transaction flow `subsequentWithdrawalPenalty`.<br> Settings for the subsequent withdrawal penalty (Regulation D). A penalty fee is applied when a customer makes a withdrawal within the configured window. The window either resets with each withdrawal (ROLLING) or remains fixed from the first withdrawal (FIXED).
      - `applicable_within_days` integer, required — The number of days following a withdrawal during which a subsequent withdrawal triggers the penalty. Must be at least 1.
      - `window_behavior` 'ROLLING' | 'FIXED', required — Controls how the penalty window is managed after each withdrawal: - `ROLLING`: the window resets on every withdrawal (scheduler is replaced) - `FIXED`: the window is set once on the first withdrawal and does not reset
      - `penalty_interest_days` integer — Number of interest days to forfeit as the penalty amount. Must be at least 1 when provided.
  - `notices` MaturityNotice[] — Advance maturity notice configurations for deposit products only, rejected for savings‑account products. If this field is included in a savings‑account request, the API returns `HTTP 400`. When provided, the field must contain one to three entries, each with a unique `days_before_maturity` value. If the field is absent or the array is empty, no notices are configured.
    - `days_before_maturity` integer, required — Number of days before the account’s maturity date when the notice is sent. The value must be a positive integer greater than zero. Inputs such as zero, negative numbers, decimals, null, or non-numeric values result in `HTTP 400`. Each notice must use a distinct `days_before_maturity` value within the array.
    - `description` string, required — A short, human‑readable label for the notice. Each entry must include one description, and it cannot exceed 128 characters.
  - `start_date` string, date — Define the earliest date from which the product can be attached to an account or program. Attach operations attempted before this date are rejected. Date is displayed in UTC.
  - `end_date` string, date — Defines the final date when the product can be attached to an account or program, rejects any attach operations submitted after that date, uses the `yyyy‑mm‑dd` format with all dates shown in UTC+0 regardless of your timezone, and must be set at least one day after the current date (D+1).
  - `metadata` object — The metadata object contains user-defined key-value pairs that provide additional context or custom information.<br> Metadata content is not controlled by the Pismo platform and is instead controlled by the user.<br> **Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis#metadata).

## Response `201`

Success

- DepositProduct
  - `cool_off_period` integer — Period in days when a withdrawal can be made without penalty.
  - `created_at` string, datetime — Date and time the product was created
  - `funding_duration` integer — Period during which money is allowed to deposit into the account before the account is blocked. The value of this field is calculated in days.
  - `interest_plan_id` string — Interest rate plan ID. This corresponds to the ID you created using the [Create interest plan version](https://developers.pismo.io/pismo-docs/reference/patch-v1-interest-plan)) endpoint.
  - `maturity_instructions` DepositMaturityInstructions — - If the principal or interest are `ROLLOVER,` the respective amounts is rolled over to a new deposit term. - If the principal is `NO_ACTION`, no action is taken with the principal amount at maturity. - If the interest is `PAY` and the accrued interest is greater than zero, it's paid to the account's cash balance.
    - `principal` 'NO_ACTION' | 'ROLLOVER' — Specifies the status of the principal amount at maturity. - `NO_ACTION`: No action is taken with the principal amount - `ROLLOVER`: The principal amount is rolled over to a new deposit term If no value is selected, the principal defaults to `NO_ACTION`.
    - `interest` 'PAY' | 'ROLLOVER' — Specifies the status of the accrued interest at maturity. - `PAY`: The accrued interest is paid to the account - `ROLLOVER`: The accrued interest is rolled over and added to the principal If no value is selected, the interest defaults to `PAY`.
  - `min_amount` number — The minimum balance required to earn yield. If the balance is below this amount, yield is not calculated, and if no value is specified, any available amount is treated as accrued interest.
  - `max_amount` number — Maximum deposit amount.
  - `min_term` integer — Minimum term duration. The value of this field is calculated in days.
  - `max_term` integer — Maximum term duration. The value of this field is calculated in days.
  - `grace_period_duration_days` integer — The number of days in the grace period. Withdrawals are allowed during this period. This field applies only if no grace period penalty is defined and penalties do not apply.
  - `name` string — Product name
  - `penalties` DepositPenalties — Set of penalty configurations that can be applied to a deposit product. Each penalty type corresponds to a specific fee ID and transaction flow within the Pismo platform. For details about penalty types, refer to the [Penalty types](https://developers.pismo.io/pismo-docs/docs/penalties-for-cd-accounts#penalty-types) section of Penalties for CD accounts.
    - `early_withdrawal_after_opening` EarlyWithdrawalAfterOpening — This penalty corresponds to fee ID `earlyWithdrawalAfterOpeningPenaltyID` and transaction flow `earlyWithdrawalAfterOpeningPenalty`
      - `applicable_within_days` integer, required — Number of days after opening that the penalty is applied
      - `penalty_interest_days` integer, required — Number of days multiplied by the applicable interest or earnings rate to determine the penalty amount.
    - `grace_period` GracePeriod — This penalty corresponds to fee ID `gracePeriodPenaltyID` and trasaction flow `gracePeriodPenalty`
      - `duration_days` integer, required — Duration of the grace period in days
      - `penalty_interest_days` integer, required — Number of interest days to forfeit as penalty
    - `tiered_interest_forfeiture` TieredInterestForfeitureTier[] — This penalty corresponds to fee ID `tieredInterestForfeiturePenaltyID` and transaction flow `tieredInterestForfeiturePenalty`
      - `min_days_held` integer, required — Minimum number of days the deposit must be held
      - `max_days_held` integer, required — Maximum number of days the deposit can be held
      - `forfeited_interest_days` integer, required — Number of interest days to forfeit as penalty
    - `withdrawal_fee` WithdrawalFee — This penalty corresponds to fee ID `withdrawalFeePenaltyID` and transaction flow `withdrawalFeePenalty`
      - `type` 'PERCENTAGE' | 'FIXED', required — Withdrawal fee type
      - `value` number, required — Value of the withdrawal fee
    - `subsequent_withdrawals` SubsequentWithdrawals — This penalty corresponds to fee ID `subsequentWithdrawalPenaltyID` and transaction flow `subsequentWithdrawalPenalty`.<br> Settings for the subsequent withdrawal penalty (Regulation D). A penalty fee is applied when a customer makes a withdrawal within the configured window. The window either resets with each withdrawal (ROLLING) or remains fixed from the first withdrawal (FIXED).
      - `applicable_within_days` integer, required — The number of days following a withdrawal during which a subsequent withdrawal triggers the penalty. Must be at least 1.
      - `window_behavior` 'ROLLING' | 'FIXED', required — Controls how the penalty window is managed after each withdrawal: - `ROLLING`: the window resets on every withdrawal (scheduler is replaced) - `FIXED`: the window is set once on the first withdrawal and does not reset
      - `penalty_interest_days` integer — Number of interest days to forfeit as the penalty amount. Must be at least 1 when provided.
  - `notices` MaturityNotice[] — Advance maturity notice configurations for deposit products only, rejected for savings‑account products. If this field is included in a savings‑account request, the API returns `HTTP 400`. When provided, the field must contain one to three entries, each with a unique `days_before_maturity` value. If the field is absent or the array is empty, no notices are configured.
    - `days_before_maturity` integer, required — Number of days before the account’s maturity date when the notice is sent. The value must be a positive integer greater than zero. Inputs such as zero, negative numbers, decimals, null, or non-numeric values result in `HTTP 400`. Each notice must use a distinct `days_before_maturity` value within the array.
    - `description` string, required — A short, human‑readable label for the notice. Each entry must include one description, and it cannot exceed 128 characters.
  - `processing_codes` DepositProcessingCodes
    - `interest_processing_code` string — Processing code for interest calculation. <br> If you don't specify a value, the default is `009797`.
    - `detach_processing_code` string — Processing code for detaching deposit feature from a bank account.<br> Detaching means the bank removes the deposit feature from the bank account. If you don't specify a value, the default is `009696`.
  - `product_id` string — Product identifier.
  - `product_type` 'deposit' | 'savings-account' — Product type
  - `status` 'CREATED' | 'ACTIVE' | 'INACTIVE' — Indicates the current state of the product. For example, `CREATED`.
  - `term_type` 'FIXED' | 'FLEXIBLE' — Term type. For example, `FIXED` or `FLEXIBLE`.
  - `start_date` string, date — Defines the earliest date from which the product can be attached to an account or program. Date is displayed in UTC.
  - `end_date` string, date — Defines the final date when the product can be attached to an account or program, rejects any attach operations submitted after that date, uses the `yyyy‑mm‑dd` format with all dates shown in UTC+0 regardless of your timezone, and must be set at least one day after the current date (D+1).
  - `metadata` object — The metadata object contains user-defined key-value pairs that provide additional context or custom information.<br> Metadata content is not controlled by the Pismo platform and is instead controlled by the user.<br> **Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis#metadata).

## Other responses

- `400` — Bad request
- `500` — Internal server error

---

[API](https://skmtc.net/pismo/apis/platform-authentication.md) · [All operations](https://skmtc.net/pismo/apis/platform-authentication/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pismo/platform-authentication/versions/935b62e16de4/schema)
