v1

latestOpenAPI 3.1.0Copyright Pismo2026-07-247702,7523.1 MB
Interest engine

Create interest plan

Create an interest plan configuration that defines how the platform calculates interest accrual. After it's 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, when creating a savings account, or when depositing money into an account.

This endpoint generates an Interest plan creation succeeded event.

For more information, refer to the Interest-bearing accounts guide.

post/v1/interest/plan

Headers

Authorizationstring required

Account token - an access token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a "** 401 Unauthorized**" error.

content-typestring required

Content type

Request body

accrual_basis'BD/252' | 'ACTUAL/360' | 'ACTUAL/365' | 'ACTUAL/ACTUAL' required

Method used to calculate interest accrual.

  • BD/252: Calculates daily interest using a 252-day year and the actual number of business days in each time period.
  • ACTUAL/360: Calculates daily interest using a 360-day year and the actual number of days in each time period.
  • ACTUAL/365: Calculates daily interest using a 365-day year and the actual number of days in each time period.
  • 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.
accrual_frequency'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'HALF_YEARLY' | 'YEARLY' | 'MATURITY' required

Interest accrual frequency

capitalization_frequency'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'HALF_YEARLY' | 'YEARLY' | 'MATURITY' required

Interest payout frequency

currency_codestring required

ISO 4217 3-letter currency code, For example, 986 = Brazilian real and 840 = US dollar.

descriptionstring required

Challenge result

interest_type'SIMPLE' | 'COMPOUND' required

Interest calculation type

  • SIMPLE: Calculated on the original deposit or investment value.
  • COMPOUND: Calculated on the original value plus the last accumulated interest.
benchmark'BOE' | 'DI' | 'FED' | 'RBA' | 'RBI' | 'TO'

Market index used to measure interest value over time. For fixed interest, this field must be null.

  • BOE: Bank of England, UK
  • DI: Interbank Deposit Contract, Brazil
  • FED: Federal Reserve System, USA
  • RBA: Reserve Bank of Australia
  • RBI: Reserve Bank of India
  • TO: Overnight Interbank Target Rate (Tasa Objetivo), Mexico
fixed_interest_ratenumber float

Fixed annual interest rate for investments or deposits. If a benchmark value is provided, this field must be null.

marginnumber double

Also known as a spread, this is an incremental rate the clients receive on investments or deposits. If a benchmark value is provided, this field is optional. If benchmark is null, this field must be null also.

margin_ratenumber double

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.

start_datestring date

Date to start applying the interest plan. Format = YYYY-MM-DD.

division_idstring

Division ID attached to the interest plan for accrual by division

interest_base_model'CLOSING-BALANCE' | 'BALANCE-CHANGE'

Interest calculation model. CLOSING-BALANCE uses the end-of-day balance. BALANCE-CHANGE uses balance variation events. Defaults to CLOSING-BALANCE.

Example request

{
  "accrual_basis": "ACTUAL/365",
  "accrual_frequency": "DAILY",
  "capitalization_frequency": "DAILY",
  "currency_code": "986",
  "description": "BANKING PLAN",
  "interest_type": "COMPOUND",
  "benchmark": "FED",
  "tax_withholding": {
    "withholding_moment": "ACCRUAL",
    "fee_processing_code": "001100"
  },
  "margin": 0.05,
  "margin_rate": 1.2
}

Response

OK

interest_plan_idstring UUID

Interest plan ID generated during the plan's creation. Must be an alphanumeric UUID with the alphabetical characters in lowercase.

Example response

{
  "interest_plan_id": "07d84f79-3027-47bd-b628-65528ccc8fb2"
}