# Create interest plan Create an interest plan configuration that defines how the platform calculates interest accrual. Once created, you can apply the interest plan to a specific product or account. For example, you can provide the `interest_plan_id` when creating a [deposit product](ref:interest-bearing-v1-create-deposit-product), when creating a [savings account](ref:interest-bearing-v1-create-savings-account-product), or when [depositing money](ref:post-v1-interest-deposit) into an account. This endpoint generates an [Interest plan creation succeeded](https://developers.pismo.io/events/docs/interest-management-interest-plan-creation-success-1) event. For more information, refer to the [Interest-bearing accounts](doc:interest-bearing-accounts) guide. # OpenAPI definition ```json { "openapi": "3.1.0", "info": { "title": "Banking - Interest management", "version": "1.0.0", "description": "API to handle interest-bearing account operations", "contact": { "name": "API Support", "url": "https://developers.pismo.io/support/" }, "license": { "name": "Copyright Pismo" } }, "servers": [ { "url": "https://sandbox-integration.pismolabs.io/interest-management", "description": "Sandbox API server for testing" }, { "url": "https://sandbox.pismolabs.io/passport/v2/s2s/access-token", "description": "Sandbox API for oauth2" } ], "tags": [ { "name": "Interest plan", "description": "Manage interest plans" } ], "components": { "parameters": { "Authorization": { "name": "authorization", "in": "header", "description": "Authorization", "required": true, "example": "Bearer ac194ce4-ecbe-4007-91bd-94babf388e7278f243bc-4ad8-4ead-a2c3-f42a548fe760", "schema": { "type": "string" } }, "ContentType": { "name": "content-type", "in": "header", "description": "Content type", "required": true, "example": "application/json", "schema": { "type": "string" } } }, "schemas": { "AccrualBasis": { "type": "string", "description": "Method used to calculate interest accrual.\n * `BD/252`: Calculates daily interest using a 252-day year and the actual number of business days in each time period.\n * `ACTUAL/360`: Calculates daily interest using a 360-day year and the actual number of days in each time period.\n * `ACTUAL/365`: Calculates daily interest using a 365-day year and the actual number of days in each time period.\n * `ACTUAL/ACTUAL`: Calculates daily interest using the actual number of days in the year (which in the leap year is 366) and the actual number of days in each time period.\n", "enum": [ "BD/252", "ACTUAL/360", "ACTUAL/365", "ACTUAL/ACTUAL" ], "example": "ACTUAL/365" }, "AccrualFrequency": { "type": "string", "description": "Interest accrual frequency", "enum": [ "DAILY", "MONTHLY", "QUARTERLY", "HALF-YEARLY", "YEARLY" ], "example": "DAILY" }, "Benchmark": { "type": "string", "description": "Market index used to measure interest value over time. For fixed interest, this field must be null.\n - BOE: Bank of England, UK\n - DI: Interbank Deposit Contract, Brazil\n - FED: Federal Reserve System, USA\n - RBA: Reserve Bank of Australia\n - RBI: Reserve Bank of India \n", "enum": [ "BOE", "DI", "FED", "RBA", "RBI" ], "example": "FED" }, "CapitalisationFrequency": { "type": "string", "description": "Interest payout frequency", "enum": [ "DAILY", "MONTHLY", "QUARTERLY", "HALF-YEARLY", "YEARLY" ], "example": "DAILY" }, "CurrencyCode": { "type": "string", "format": "number", "description": "Numeric currency code in ISO 4217 standard", "example": "986" }, "Description": { "type": "string", "description": "Interest plan name", "example": "Banking plan" }, "FeeProcessingCode": { "type": "string", "format": "number", "description": "Processing code configured in the [fee model](https://developers.pismo.io/pismo-docs/docs/fee-model) for charging a tax, penalty, or fee.", "example": "001100" }, "FixedInterestRate": { "type": "string", "format": "number", "description": "Fixed annual interest rate for investments or deposits. If a `benchmark` value is provided, this field must be null.", "example": "0.10" }, "InterestPlanId": { "type": "string", "format": "UUID", "description": "Interest plan ID generated during the plan's creation. Must be an alphanumeric UUID with the alphabetical characters in lowercase.", "example": "07d84f79-3027-47bd-b628-65528ccc8fb2" }, "InterestPlanRequest": { "title": "Interest plan request", "type": "object", "properties": { "accrual_basis": { "$ref": "#/components/schemas/AccrualBasis" }, "accrual_frequency": { "$ref": "#/components/schemas/AccrualFrequency" }, "capitalisation_frequency": { "$ref": "#/components/schemas/CapitalisationFrequency" }, "currency_code": { "$ref": "#/components/schemas/CurrencyCode" }, "description": { "$ref": "#/components/schemas/Description" }, "interest_type": { "$ref": "#/components/schemas/InterestType" }, "benchmark": { "$ref": "#/components/schemas/Benchmark" }, "fee_processing_code": { "$ref": "#/components/schemas/FeeProcessingCode" }, "fixed_interest_rate": { "$ref": "#/components/schemas/FixedInterestRate" }, "margin": { "$ref": "#/components/schemas/Margin" }, "margin_rate": { "$ref": "#/components/schemas/MarginRate" } }, "required": [ "accrual_basis", "accrual_frequency", "capitalisation_frequency", "currency_code", "description", "interest_type" ], "example": { "accrual_basis": "ACTUAL/365", "accrual_frequency": "DAILY", "capitalisation_frequency": "DAILY", "currency_code": "986", "description": "BANKING PLAN", "interest_type": "COMPOUND", "benchmark": "FED", "fee_processing_code": "001100", "margin": 0.05, "margin_rate": 1.2 } }, "InterestPlanResponse": { "title": "Org parameters response", "type": "object", "properties": { "interest_plan_id": { "$ref": "#/components/schemas/InterestPlanId" } } }, "InterestType": { "type": "string", "description": "Interest calculation type.\n- SIMPLE: Calculated on the original deposit or investment value.\n- COMPOUND: Calculated on the original value plus the last accumulated interest.\n", "enum": [ "SIMPLE", "COMPOUND" ], "example": "SIMPLE" }, "Margin": { "type": "number", "format": "double", "description": "Also known as a spread, this is an incremental rate the clients receive over the investments or deposits. \nIf a `benchmark` value is provided, this field is optional.\nIf `benchmark` is null, this field must be null also.\n", "example": 0.02 }, "MarginRate": { "type": "number", "format": "double", "description": "Rate linked to the benchmark rate. For example, for 110% FED, margin rate is 110%. If a `benchmark` value is not provided, this field must be null.", "example": 1.1 } }, "responses": { "400BadRequest": { "description": "Bad request" }, "401Unauthorized": { "description": "Unauthorized" }, "500InternalServerError": { "description": "Internal server error" }, "404NotFound": { "description": "Not found" } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } }, "security": [ { "BearerAuth": [] } ], "paths": { "/v1/interest/plan": { "post": { "summary": "Create interest plan", "description": "Create an interest plan configuration that defines how the platform calculates interest accrual. Once created, you can apply the interest plan to a specific product or account. For example, you can provide the `interest_plan_id` when creating a [deposit product](https://developers.pismo.io/pismo-docs/reference/interest-bearing-v1-create-deposit-product), when creating a [savings account](https://developers.pismo.io/pismo-docs/reference/interest-bearing-v1-create-savings-account-product), or when [depositing money](https://developers.pismo.io/pismo-docs/reference/post-v1-interest-deposit) into an account.\n\nThis endpoint generates an [Interest plan creation succeeded](https://developers.pismo.io/events/docs/interest-management-interest-plan-creation-success-1) event.\n\nFor more information, refer to the [Interest-bearing accounts](https://developers.pismo.io/pismo-docs/docs/interest-bearing-accounts) guide.\n", "tags": [ "Interest plan" ], "operationId": "post-v1-interest-plan", "parameters": [ { "$ref": "#/components/parameters/Authorization" }, { "$ref": "#/components/parameters/ContentType" } ], "requestBody": { "description": "Request body", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InterestPlanRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InterestPlanResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" } } } } } } ```