---
title: "List products"
method: GET
path: "/v1/products"
tags: ["Product"]
---

# List products

`GET /v1/products`

Return a list of an organization's savings and time-deposit accounts.

## Query parameters

- `beginDatetime` string, date-time
- `endDatetime` string, date-time
- `afterId` integer
- `perPage` string
- `order` 'ASC' | 'DESC'
- `productType` 'deposit' | 'savings-account'
- `status` string[]

## Headers

- `AuthorizationToken` string, required

## Response `200`

Success

- ProductList
  - `last_id` integer — Pagination reference, displayed in UNIX timestamp.
  - `next_page` boolean — Indicates whether there is a next page of results.
  - `per_page` integer — Number of items per page. Default `20`, maximum is `100`.
  - `items` object — A collection of individual product objects.
    - `cool_off_period` integer — Period in days when a withdrawal can be made without penalty.
    - `created_at` string, datetime — The moment when a product is 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 — Minimum amount for yield. If balance is below this value, yield is not calculated. If no value is provided, 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 — The 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` object
      - `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' — Product status
    - `term_type` 'FIXED' | 'FLEXIBLE' — Term type. For example, `FIXED` or `FLEXIBLE`.
    - `start_date` string, date — Define 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).
    - `updated_at` string, datetime — The moment when a product is updated.

## 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)
