---
title: "Create savings account product"
method: POST
path: "/v1/savings-accounts"
tags: ["Product"]
---

# Create savings account product

`POST /v1/savings-accounts`

## Request

- Base URL: `https://sandbox.pismolabs.io/savings-products`
- URL: `https://sandbox.pismolabs.io/savings-products/v1/savings-accounts`
- Auth: HTTP bearer

Create an organization's savings account product. Savings account products accrue interest based on the balance at the time of the interest calculation.<br>
This endpoint generates the [Savings account product created](https://developers.pismo.io/events/docs/savings-account-product-creation-1) event.
For information about interest-bearing accounts, see [Interest-bearing accounts](doc:interest-bearing-accounts).
The interest plan is fetched once and used to resolve or validate `accrual_model` before any resource configuration. Missing, null, or empty values derive the model from the plan. An explicit mismatch returns `HTTP 400 EIBACC0365`. An unknown nonempty plan model or a missing plan object returns `HTTP 500 EIBACC0007`, and errors from the interest plan API are passed through. None of these failures configure resources, persist a product, or publish a creation event.

## Request body

- CreateSavingsAccountProductRequest
  - `interest_plan_id` string, required: Interest rate plan ID. This corresponds to the ID you created using the [Create interest plan version](ref:patch-v1-interest-plan)) endpoint.
  - `name` string, required: The product name.
  - `accrual_model` 'DEPOSIT_BASIS' | 'BALANCE_BASIS' | '' | 'null', nullable: Defines the balance basis for daily interest accrual: - `DEPOSIT_BASIS`: Net daily balance change (credits minus debits), determined at the end of the day. - `BALANCE_BASIS`: Daily closing balance. If not provided (omitted, `null`, or empty string `""`), the value is derived from the interest plan: `BALANCE-CHANGE` → `DEPOSIT_BASIS` or `CLOSING-BALANCE` → `BALANCE_BASIS`. An explicit value must match the plan; otherwise, the request returns a `400` error: `EIBACC0365`. If the plan's `interest_base_model` is missing, `null`, or empty, the Pismo platform treats it as `CLOSING-BALANCE`, which produces `BALANCE_BASIS` when the request does not set `accrual_model`.
  - `balance_type` 'VALUE_DATED_BALANCE' | 'LEDGER_BALANCE': Which balance of the `balance_history` event is submitted when `accrual_model` is `BALANCE_BASIS`. `VALUE_DATED_BALANCE` uses the cleared balance (default). `LEDGER_BALANCE` includes uncleared funds.
  - `min_amount` number, float: 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.
  - `processing_codes` SavingsAccountProcessingCodes, required
    - `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`.
  - `start_date` string, date: Defines 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.
  - `metadata` object: The metadata object contains user-defined key-value pairs that provide additional context or custom information.<br> The platform has no control over its content, but rather 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](ref:get-started-with-pismo-apis#metadata).

## Response `201`

Success

- SavingsAccountProduct
  - `created_at` string, date-time: The moment when a product is created.
  - `updated_at` string, date-time: The moment when a product is updated.
  - `interest_plan_id` string: Interest rate plan ID. This corresponds to the ID you created using the [Create interest plan version](ref:patch-v1-interest-plan)) endpoint.
  - `name` string: The product name.
  - `accrual_model` 'DEPOSIT_BASIS' | 'BALANCE_BASIS': Interest accrual model configured at the product level and returned in both the creation event and API response. With `DEPOSIT_BASIS`, the Pismo platform calculates accruals based on the net daily balance change (credits minus debits) at the end of each day. With `BALANCE_BASIS`, accruals are calculated using the account's closing balance at the end of the day, regardless of whether any transactions occurred. For example, if an account has a balance of 1000 and no transactions are made during the day, the platform still uses 1000 as the accrual basis. At creation, the interest plan determines the model: `BALANCE-CHANGE` maps to `DEPOSIT_BASIS`, and `CLOSING-BALANCE` maps to `BALANCE_BASIS`.
  - `balance_type` 'VALUE_DATED_BALANCE' | 'LEDGER_BALANCE': Which balance of the `balance_history` event is submitted when `accrual_model` is `BALANCE_BASIS`. `VALUE_DATED_BALANCE` uses the cleared balance (default). `LEDGER_BALANCE` includes uncleared funds.
  - `min_amount` number, float: 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.
  - `processing_codes` SavingsAccountProcessingCodes
    - `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
  - `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.
  - `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](ref:get-started-with-pismo-apis#metadata).

## Other responses

- `400`: Bad request
- `409`: Conflict
- `500`: Internal error

---

[API](https://skmtc.dev/pismo/apis/banking-interest-bearing-accounts.md) - [All operations](https://skmtc.dev/pismo/apis/banking-interest-bearing-accounts/llms.txt) - [OpenAPI document](https://skmtc.dev/pismo/apis/banking-interest-bearing-accounts/revisions/c68f61feb8a8?raw)
