Product

Create savings account product

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 event. For information about interest-bearing accounts, see 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.

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

Request body

interest_plan_idstring required

Interest rate plan ID. This corresponds to the ID you created using the Create interest plan version) endpoint.

namestring 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_amountnumber 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.

start_datestring 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.

metadataobject

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.

Example request

{
  "interest_plan_id": "263d509a-d5d0-4b3a-b909-ce1b9174beff",
  "name": "Tax 1 Default",
  "accrual_model": "DEPOSIT_BASIS",
  "balance_type": "VALUE_DATED_BALANCE",
  "min_amount": 1000,
  "processing_codes": {
    "interest_processing_code": "009797",
    "detach_processing_code": "009696"
  },
  "start_date": "2025-11-01",
  "metadata": {
    "key": "value"
  }
}

Response

Success

created_atstring date-time

The moment when a product is created.

updated_atstring date-time

The moment when a product is updated.

interest_plan_idstring

Interest rate plan ID. This corresponds to the ID you created using the Create interest plan version) endpoint.

namestring

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_amountnumber 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.

product_idstring

Product identifier.

product_type'deposit' | 'savings-account'

Product type.

status'CREATED' | 'ACTIVE' | 'INACTIVE'

Product status

start_datestring date

Define the earliest date from which the product can be attached to an account or program. Date is displayed in UTC.

metadataobject

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.

Example response

{
  "created_at": "2024-01-23T13:26:25.000Z",
  "updated_at": "2024-01-23T13:26:25.000Z",
  "interest_plan_id": "263d509a-d5d0-4b3a-b909-ce1b9174beff",
  "name": "Tax 1 Default",
  "accrual_model": "DEPOSIT_BASIS",
  "balance_type": "VALUE_DATED_BALANCE",
  "min_amount": 1000,
  "processing_codes": {
    "interest_processing_code": "009797",
    "detach_processing_code": "009696"
  },
  "product_id": "2c336e9d-d04f-4fd0-8f6e-25808f48d70c",
  "status": "ACTIVE",
  "start_date": "2025-11-01",
  "metadata": {
    "key": "value"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.