---
updatedAt: 2026-07-28T19:43:09.000Z
---

Fetch the complete documentation index at: https://developers.pismo.io/pismo-docs/llms.txt. Use this file to discover all available pages before exploring further.

# Create balance

Register a balance for an interest-bearing account using a previously configured interest plan to determine applicable interest rates.

This endpoint generates the Interest balance succeeded event when the balance is created successfully.

The event payload includes: `program_id`, `balance_id`, `account_id`, `interest_plan_id`, `balance`, `start_cycle_date`, `value_date`, and `maturity_date`. Optional fields `division_id` and `external_account_id` are included in the event only when present in the request.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Banking - Interest operations",
    "version": "1.0.0",
    "description": "API to handle interest bearing account operations",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismolabs.io/pismo-docs/docs/support"
    },
    "license": {
      "name": "Copyright Pismo"
    }
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/interest-engine",
      "description": "Sandbox API server for integration"
    }
  ],
  "tags": [
    {
      "name": "Interest engine",
      "description": "Endpoints for handling interest bearing account operations"
    }
  ],
  "components": {
    "parameters": {
      "Authorization": {
        "name": "authorization",
        "in": "header",
        "description": "Authorization",
        "required": true,
        "example": "Bearer <access-token>",
        "schema": {
          "type": "string"
        }
      },
      "ContentType": {
        "name": "content-type",
        "in": "header",
        "description": "Content type",
        "required": true,
        "example": "application/json",
        "schema": {
          "type": "string"
        }
      },
      "XProgramId": {
        "name": "x-program-id",
        "in": "header",
        "description": "Program ID",
        "required": true,
        "example": "1233",
        "schema": {
          "type": "string"
        }
      },
      "XTenant": {
        "name": "x-tenant",
        "in": "header",
        "description": "Tenant (organization) ID",
        "required": true,
        "example": "1",
        "schema": {
          "type": "string"
        }
      },
      "XCid": {
        "name": "x-cid",
        "in": "header",
        "description": "Correlation ID",
        "required": true,
        "example": "8f3a1...e5f60",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "AccountId": {
        "type": "string",
        "format": "number",
        "description": "Account ID",
        "example": "15001"
      },
      "BalanceAmount": {
        "type": "number",
        "format": "double",
        "minimum": 0,
        "description": "Balance amount. Must be equal to or greater than zero.",
        "example": 23.95
      },
      "BalanceId": {
        "type": "string",
        "maxLength": 64,
        "description": "Unique identifier for the balance, generated by the client. The value must be a valid UUID.",
        "example": "uuid-generated-client-id"
      },
      "DivisionId": {
        "type": "string",
        "maxLength": 64,
        "description": "Division ID. When not provided, defaults to `DEFAULT_DIVISION` internally.",
        "example": "123"
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error payload generated by the global exception handler.\n`message` is a single string for most errors and an array of strings when multiple bean-validation or request-binding errors occur in the same request.\n",
        "additionalProperties": false,
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          }
        },
        "example": {
          "message": "interest account not found"
        }
      },
      "ExternalAccountId": {
        "type": "string",
        "maxLength": 64,
        "description": "External account ID managed by the requester.",
        "example": "4141"
      },
      "InterestBalanceRequest": {
        "title": "InterestBalanceRequest",
        "type": "object",
        "required": [
          "balance_id",
          "account_id",
          "interest_plan_id",
          "balance",
          "start_cycle_date",
          "value_date",
          "maturity_date"
        ],
        "properties": {
          "balance_id": {
            "$ref": "#/components/schemas/BalanceId"
          },
          "division_id": {
            "$ref": "#/components/schemas/DivisionId"
          },
          "account_id": {
            "$ref": "#/components/schemas/AccountId"
          },
          "external_account_id": {
            "$ref": "#/components/schemas/ExternalAccountId"
          },
          "interest_plan_id": {
            "$ref": "#/components/schemas/InterestPlanId"
          },
          "balance": {
            "$ref": "#/components/schemas/BalanceAmount"
          },
          "start_cycle_date": {
            "$ref": "#/components/schemas/StartCycleDate"
          },
          "value_date": {
            "$ref": "#/components/schemas/ValueDate"
          },
          "maturity_date": {
            "$ref": "#/components/schemas/MaturityDate"
          }
        },
        "example": {
          "balance_id": "uuid-generated-client-id",
          "division_id": "123",
          "account_id": "4040",
          "external_account_id": "4141",
          "interest_plan_id": "df3f3e3e-62d3-4323-902e-6ae6cc210f49",
          "balance": 23.95,
          "start_cycle_date": "2025-07-17",
          "value_date": "2025-07-17",
          "maturity_date": "2026-05-27"
        }
      },
      "InterestBalanceResponse": {
        "title": "InterestBalanceResponse",
        "type": "object",
        "properties": {
          "program_id": {
            "$ref": "#/components/schemas/ProgramId"
          },
          "balance_id": {
            "$ref": "#/components/schemas/BalanceId"
          }
        },
        "required": [
          "program_id",
          "balance_id"
        ],
        "example": {
          "program_id": "0105",
          "balance_id": "uuid-generated-client-id"
        }
      },
      "InterestPlanId": {
        "type": "string",
        "format": "UUID",
        "minLength": 36,
        "maxLength": 36,
        "description": "Interest plan ID generated during the plan's creation. Must be an alphanumeric UUID with the alphabetical characters in lowercase.\n",
        "example": "07d84f79-3027-47bd-b628-65528ccc8fb2"
      },
      "MaturityDate": {
        "type": "string",
        "format": "date",
        "description": "Deposit maturity date. Format = YYYY-MM-DD.",
        "example": "2024-04-20"
      },
      "ProgramId": {
        "type": "string",
        "description": "Program ID",
        "example": "0105"
      },
      "StartCycleDate": {
        "type": "string",
        "format": "date",
        "description": "Start of the interest cycle. Format = YYYY-MM-DD.",
        "example": "2025-07-17"
      },
      "ValueDate": {
        "type": "string",
        "format": "date",
        "description": "Deposit date. Format = YYYY-MM-DD.",
        "example": "2024-04-15"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "responses": {
      "400BadRequest": {
        "description": "Bad request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "validation": {
                "summary": "Bean validation or binding errors",
                "value": {
                  "message": [
                    "fixed_interest_rate must be informed",
                    "margin_rate must be positive"
                  ]
                }
              },
              "requestBody": {
                "summary": "invalid or missing request value",
                "value": {
                  "message": "Failed to process your request. Validate the fields in your request."
                }
              },
              "tenantHeader": {
                "summary": "Tenant header missing or malformed",
                "value": {
                  "message": "x-tenant header is missing or malformed"
                }
              }
            }
          }
        }
      },
      "401Unauthorized": {
        "description": "Unauthorized access",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "message": {
                  "type": "string",
                  "example": "You cannot access this resource"
                }
              }
            }
          }
        }
      },
      "404NotFound": {
        "description": "Not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "interestAccountNotFound": {
                "summary": "Interest account not found",
                "value": {
                  "message": "interest account not found"
                }
              },
              "interestPlanNotFound": {
                "summary": "Interest plan not found",
                "value": {
                  "message": "Interest plan not found"
                }
              },
              "benchmarkNotFound": {
                "summary": "Benchmark not found",
                "value": {
                  "message": "benchmark not found"
                }
              }
            }
          }
        }
      },
      "500InternalServerError": {
        "description": "Internal server error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "message": "Failed to process your request"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/v1/interest/balance": {
      "post": {
        "summary": "Create balance",
        "description": "Register a balance for an interest-bearing account using a previously configured interest plan to determine applicable interest rates.\n\nThis endpoint generates the Interest balance succeeded event when the balance is created successfully.\n\nThe event payload includes: `program_id`, `balance_id`, `account_id`, `interest_plan_id`, `balance`, `start_cycle_date`, `value_date`, and `maturity_date`. Optional fields `division_id` and `external_account_id` are included in the event only when present in the request.\n",
        "tags": [
          "Interest engine"
        ],
        "operationId": "post-v1-interest-balance",
        "parameters": [
          {
            "$ref": "#/components/parameters/XProgramId"
          },
          {
            "$ref": "#/components/parameters/XTenant"
          },
          {
            "$ref": "#/components/parameters/XCid"
          },
          {
            "$ref": "#/components/parameters/ContentType"
          },
          {
            "$ref": "#/components/parameters/Authorization"
          }
        ],
        "requestBody": {
          "description": "Requested body of authorization",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterestBalanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterestBalanceResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/401Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/404NotFound"
          },
          "500": {
            "$ref": "#/components/responses/500InternalServerError"
          }
        }
      }
    }
  }
}
```