# 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.
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).
# OpenAPI definition
```json
{
"openapi": "3.0.0",
"info": {
"title": "Banking - Interest-bearing accounts",
"version": "1.0.0",
"description": "API for interest-bearing account functionality",
"contact": {
"name": "API Support",
"url": "https://developers.pismo.io/support/"
},
"license": {
"name": "Copyright Pismo"
}
},
"servers": [
{
"url": "https://sandbox.pismolabs.io/savings-products",
"description": "Sandbox API server for testing"
}
],
"tags": [
{
"name": "Product",
"description": "Endpoints that manage Interest-bearing accounts products"
}
],
"components": {
"parameters": {
"authorizationTokenHeader": {
"name": "AuthorizationToken",
"in": "header",
"schema": {
"type": "string"
},
"required": true,
"description": "Account token. Token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a 401 Unauthorized error.\n",
"example": 1234
}
},
"schemas": {
"ErrorResponse": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Error type code",
"example": "EIBACC0003"
},
"details": {
"type": "string",
"description": "Error details",
"example": "error EIBACC0008: Validation error [(Field 'Order' is invalid)]"
},
"message": {
"description": "Error message",
"example": "Bad Request",
"type": "string"
}
}
},
"CreateSavingsAccountProductRequest": {
"required": [
"interest_plan_id",
"name",
"processing_codes"
],
"type": "object",
"properties": {
"interest_plan_id": {
"type": "string",
"description": "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.",
"example": "263d509a-d5d0-4b3a-b909-ce1b9174beff"
},
"name": {
"type": "string",
"description": "The product name.",
"example": "Tax 1 Default"
},
"min_amount": {
"type": "number",
"description": "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.",
"example": 1000
},
"processing_codes": {
"$ref": "#/components/schemas/SavingsAccountProcessingCodes"
},
"start_date": {
"type": "string",
"format": "date",
"description": "Define the earliest date from which the product can be attached to an account or program. Attach operations attempted before this date are rejected.",
"example": "2025-11-01"
},
"metadata": {
"type": "object",
"description": "The metadata object contains user-defined key-value pairs that provide additional context or custom information.
\nThe platform has no control over its content, but rather controlled by the user.\n",
"example": {
"key": "value"
}
}
}
},
"SavingsAccountProcessingCodes": {
"type": "object",
"properties": {
"interest_processing_code": {
"type": "string",
"description": "Processing code for interest calculation.
If you don't specify a value, the default is `009797`.",
"example": "009797"
},
"detach_processing_code": {
"type": "string",
"description": "Processing code for detaching deposit feature from a bank account.
\nDetaching means the bank removes the deposit feature from the bank account.\nIf you don't specify a value, the default is `009696`.\n",
"example": "009696"
}
}
},
"SavingsAccountProduct": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "datetime",
"description": "The moment when a product is created.",
"example": "2024-01-23T13:26:25.000Z"
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "The moment when a product is updated.",
"example": "2024-01-23T13:26:25.000Z"
},
"interest_plan_id": {
"type": "string",
"description": "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.",
"example": "263d509a-d5d0-4b3a-b909-ce1b9174beff"
},
"name": {
"type": "string",
"description": "The product name.",
"example": "Tax 1 Default"
},
"min_amount": {
"type": "number",
"description": "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.",
"example": 1000
},
"processing_codes": {
"$ref": "#/components/schemas/SavingsAccountProcessingCodes"
},
"product_id": {
"type": "string",
"description": "Product identifier.",
"example": "2c336e9d-d04f-4fd0-8f6e-25808f48d70c"
},
"product_type": {
"type": "string",
"description": "Product type.",
"enum": [
"deposit",
"savings-account"
]
},
"status": {
"description": "Product status",
"example": "ACTIVE",
"type": "string",
"enum": [
"CREATED",
"ACTIVE",
"INACTIVE"
]
},
"start_date": {
"type": "string",
"format": "date",
"description": "Define the earliest date from which the product can be attached to an account or program.",
"example": "2025-11-01"
},
"metadata": {
"type": "object",
"description": "The metadata object contains user-defined key-value pairs that provide additional context or custom information.
\nMetadata content is not controlled by the Pismo platform and is instead controlled by the user.\n",
"example": {
"key": "value"
}
}
}
}
},
"securitySchemes": {
"BearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
},
"responses": {
"400BadRequest": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ErrorResponse"
}
]
},
"examples": {
"invalidRequestBody": {
"summary": "Bad Request",
"value": {
"code": "EIBACC0008",
"message": "Bad Request",
"detail": "error EIBACC0008: Validation error [(Field 'Order' is invalid)]"
}
}
}
}
}
},
"500InternalServer": {
"description": "Internal error",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ErrorResponse"
}
]
},
"examples": {
"internalProcessingError": {
"summary": "Internal processing error",
"value": {
"code": "EIBACC0007",
"message": "Internal error",
"detail": "Internal error"
}
}
}
}
}
}
}
},
"paths": {
"/v1/savings-accounts": {
"post": {
"tags": [
"Product"
],
"summary": "Create savings account product",
"description": "Create an organization's savings account product. Savings account products accrue interest based on the balance at the time of the interest calculation.
\nThis endpoint generates the [Savings account product created](https://developers.pismo.io/events/docs/savings-account-product-creation-1) event.\nFor information about interest-bearing accounts, see [Interest-bearing accounts](https://developers.pismo.io/pismo-docs/docs/interest-bearing-accounts).\n",
"operationId": "interest-bearing-v1-create-savings-account-product",
"parameters": [
{
"$ref": "#/components/parameters/authorizationTokenHeader"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSavingsAccountProductRequest"
}
}
}
},
"responses": {
"201": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SavingsAccountProduct"
}
}
}
},
"400": {
"$ref": "#/components/responses/400BadRequest"
},
"500": {
"$ref": "#/components/responses/500InternalServer"
}
}
}
}
},
"security": [
{
"BearerAuth": []
}
]
}
```