# Get deposit product Get deposit product by product ID. Note that product ID is Pismo-generated. # 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 }, "productId": { "description": "Product ID", "in": "path", "name": "productId", "required": true, "schema": { "type": "string" }, "example": "2c336e9d-d04f-4fd0-8f6e-25808f48d70c" } }, "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" } } }, "DepositMaturityInstructions": { "properties": { "principal": { "type": "string", "description": "Specifies the status of the principal amount at maturity.\n- `NO_ACTION`: No action is taken with the principal amount\n- `ROLLOVER`: The principal amount is rolled over to a new deposit term\n\nIf no value is selected, the principal defaults to `NO_ACTION`.\n", "example": "ROLLOVER", "enum": [ "NO_ACTION", "ROLLOVER" ], "default": "NO_ACTION" }, "interest": { "type": "string", "description": "Specifies the status of the accrued interest at maturity.\n- `PAY`: The accrued interest is paid to the account\n- `ROLLOVER`: The accrued interest is rolled over and added to the principal\n\nIf no value is selected, the interest defaults to `PAY`.\n", "example": "PAY", "enum": [ "PAY", "ROLLOVER" ], "default": "PAY" } }, "type": "object", "description": "- If the principal or interest are `ROLLOVER,` the respective amounts is rolled over to a new deposit term.\n- If the principal is `NO_ACTION`, no action is taken with the principal amount at maturity.\n- If the interest is `PAY` and the accrued interest is greater than zero, it's paid to the account's cash balance.\n" }, "DepositProduct": { "type": "object", "properties": { "cool_off_period": { "type": "integer", "description": "Period in days when a withdrawal can be made without penalty.", "example": 0 }, "created_at": { "type": "string", "format": "datetime", "description": "Date and time the product was created", "example": "2024-01-23T13:26:25.000Z" }, "funding_duration": { "type": "integer", "description": "Period during which money is allowed to deposit into the account before the account is blocked. The value of this field is calculated in days.", "example": 12 }, "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" }, "maturity_instructions": { "$ref": "#/components/schemas/DepositMaturityInstructions" }, "min_amount": { "type": "number", "description": "The minimum balance required to earn yield. If the balance is below this amount, yield is not calculated, and if no value is specified, any available amount is treated as accrued interest.", "example": 1000 }, "max_amount": { "type": "number", "description": "Maximum deposit amount.", "example": 5000 }, "min_term": { "type": "integer", "description": "Minimum term duration. The value of this field is calculated in days.", "example": 265 }, "max_term": { "type": "integer", "description": "Maximum term duration. The value of this field is calculated in days.", "example": 1025 }, "grace_period_duration_days": { "type": "integer", "description": "The number of days in the grace period. Withdrawals are allowed during this period. This field applies only if no grace period penalty is defined and penalties do not apply.", "example": 30 }, "name": { "type": "string", "description": "Product name", "example": "Tax 1 Default" }, "penalties": { "$ref": "#/components/schemas/DepositPenalties" }, "processing_codes": { "$ref": "#/components/schemas/DepositProcessingCodes" }, "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": { "type": "string", "description": "Indicates the current state of the product. For example, `CREATED`.", "enum": [ "CREATED", "ACTIVE", "INACTIVE" ], "example": "CREATED" }, "term_type": { "type": "string", "description": "Term type. For example, `FIXED` or `FLEXIBLE`.\n", "enum": [ "FIXED", "FLEXIBLE" ], "example": "FIXED" }, "start_date": { "type": "string", "format": "date", "description": "Defines 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" } } } }, "DepositProcessingCodes": { "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" } } }, "DepositPenalties": { "type": "object", "description": "Set of penalty configurations that can be applied to a deposit product. Each penalty type corresponds to a specific fee ID and transaction flow within the Pismo platform.\nFor details about penalty types, refer to the [Penalty types](https://developers.pismo.io/pismo-docs/docs/penalties-for-cd-accounts#penalty-types) section of Penalties for CD accounts.\n", "properties": { "early_withdrawal_after_opening": { "$ref": "#/components/schemas/EarlyWithdrawalAfterOpening" }, "grace_period": { "$ref": "#/components/schemas/GracePeriod" }, "tiered_interest_forfeiture": { "description": "This penalty corresponds to fee ID `tieredInterestForfeiturePenaltyID` and transaction flow `tieredInterestForfeiturePenalty`", "type": "array", "items": { "$ref": "#/components/schemas/TieredInterestForfeitureTier" } }, "withdrawal_fee": { "$ref": "#/components/schemas/WithdrawalFee" }, "subsequent_withdrawals": { "$ref": "#/components/schemas/SubsequentWithdrawals" } } }, "EarlyWithdrawalAfterOpening": { "description": "This penalty corresponds to fee ID `earlyWithdrawalAfterOpeningPenaltyID` and transaction flow `earlyWithdrawalAfterOpeningPenalty`", "type": "object", "required": [ "applicable_within_days", "penalty_interest_days" ], "properties": { "applicable_within_days": { "type": "integer", "minimum": 0, "description": "Number of days after opening that the penalty is applied", "example": 30 }, "penalty_interest_days": { "type": "integer", "minimum": 0, "description": "Number of days multiplied by the applicable interest or earnings rate to determine the penalty amount.", "example": 90 } } }, "GracePeriod": { "description": "This penalty corresponds to fee ID `gracePeriodPenaltyID` and trasaction flow `gracePeriodPenalty`", "type": "object", "required": [ "duration_days", "penalty_interest_days" ], "properties": { "duration_days": { "type": "integer", "minimum": 0, "description": "Duration of the grace period in days", "example": 7 }, "penalty_interest_days": { "type": "integer", "minimum": 0, "description": "Number of interest days to forfeit as penalty", "example": 30 } } }, "TieredInterestForfeitureTier": { "description": "This penalty corresponds to fee ID `tieredInterestForfeiturePenaltyID` and transaction flow `tieredInterestForfeiturePenalty`", "type": "object", "required": [ "min_days_held", "max_days_held", "forfeited_interest_days" ], "properties": { "min_days_held": { "type": "integer", "description": "Minimum number of days the deposit must be held", "example": 1 }, "max_days_held": { "type": "integer", "description": "Maximum number of days the deposit can be held", "example": 90 }, "forfeited_interest_days": { "type": "integer", "description": "Number of interest days to forfeit as penalty", "example": 30 } } }, "WithdrawalFee": { "description": "This penalty corresponds to fee ID `withdrawalFeePenaltyID` and transaction flow `withdrawalFeePenalty`", "type": "object", "required": [ "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "PERCENTAGE", "FIXED" ], "description": "Withdrawal fee type", "example": "PERCENTAGE" }, "value": { "type": "number", "description": "Value of the withdrawal fee", "example": 1.5 } } }, "SubsequentWithdrawals": { "type": "object", "description": "This penalty corresponds to fee ID `subsequentWithdrawalPenaltyID` and transaction flow `subsequentWithdrawalPenalty`.
\nSettings for the subsequent withdrawal penalty (Regulation D).\nA penalty fee is applied when a customer makes a withdrawal within the configured window.\nThe window either resets with each withdrawal (ROLLING) or remains fixed from the first withdrawal (FIXED).\n", "required": [ "applicable_within_days", "window_behavior" ], "properties": { "applicable_within_days": { "type": "integer", "minimum": 1, "description": "The number of days following a withdrawal during which a subsequent withdrawal triggers the penalty.\nMust be at least 1.\n", "example": 30 }, "window_behavior": { "type": "string", "enum": [ "ROLLING", "FIXED" ], "description": "Controls how the penalty window is managed after each withdrawal:\n- `ROLLING`: the window resets on every withdrawal (scheduler is replaced)\n- `FIXED`: the window is set once on the first withdrawal and does not reset\n", "example": "ROLLING" }, "penalty_interest_days": { "type": "integer", "minimum": 1, "description": "Number of interest days to forfeit as the penalty amount.\nMust be at least 1 when provided.\n", "example": 7 } } } }, "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)]" } } } } } }, "404NotFound": { "description": "Bad request", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ErrorResponse" } ] }, "examples": { "invalidRequestBody": { "summary": "Bad Request", "value": { "code": "EIBACC0064", "message": "Product not found" } } } } } }, "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/deposits/{productId}": { "get": { "tags": [ "Product" ], "summary": "Get deposit product", "description": "Get deposit product by product ID. Note that product ID is Pismo-generated.\n", "operationId": "interest-bearing-v1-get-deposit-products", "parameters": [ { "$ref": "#/components/parameters/productId" }, { "$ref": "#/components/parameters/authorizationTokenHeader" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DepositProduct" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServer" } } } } }, "security": [ { "BearerAuth": [] } ] } ```