# 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": [] } ] } ```