---
title: "Update account interest"
method: PUT
path: "/v1/interest/account/{accountId}"
tags: ["Account interest"]
---

# Update account interest

`PUT /v1/interest/account/{accountId}`

Apply specific interest accrual options to an account by replacing its full interest
configuration.

This operation has full-replacement semantics: every request must redeclare the complete
configuration. Partial updates (sending only the fields you want to change) are not
supported and cause the validation to fail.

Although every property in the request body is independently optional, the body as a
whole must satisfy several conditional rules. See the request body schema description
for the full set of `benchmark`/`fixed_interest_rate`,
`tax_withholding`, and `taxes_exemption` rules.

## Path parameters

- `accountId` string, required

## Headers

- `content-type` string, required
- `Authorization` string, required

## Request body

- InterestAccountRequest — Request body for `PUT /v1/interest/account/{accountId}`. The endpoint replaces the full interest configuration of the account, partial updates are not supported. Every request must redeclare a complete configuration that satisfies the rules below. Interest type. Exactly one of the two paths must be chosen: - **Benchmark-indexed rate:** If you pass `benchmark` and `margin_rate`., then `margin` is optional. `fixed_interest_rate` must be omitted. - **Fixed rate:** If you pass `fixed_interest_rate`, then `benchmark`, `margin_rate`, and `margin` must all be omitted. Passing neither `benchmark` nor `fixed_interest_rate` returns `400 Bad Request` with `fixed_interest_rate must be provided`. Passing both returns `400 Bad Request` with `fixed_interest_rate is not allowed when benchmark is passed`. **Tax-withholding rule**: Driven by `tax_withholding.withholding_moment`: - When `withholding_moment` is `ACCRUAL`, `fee_processing_code` is required and `tax_rules` must be omitted. - When `withholding_moment` is `CAPITALIZATION`, `tax_rules` is required and `fee_processing_code` must be omitted. - When `tax_withholding` is omitted, no withholding is configured. **Tax-exemption rule**: When `taxes_exemption` is `true`, `tax_withholding` must be null. When `taxes_exemption` is `false` or omitted, `tax_withholding` follows the rule above. Numeric fields (`fixed_interest_rate`, `margin_rate`) must have a positive value. `tax_withholding.fee_processing_code` is limited to 128 characters.
  - `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_rate` number, float — Fixed annual interest rate for investments or deposits. If a `benchmark` value is provided, this field must be null.
  - `margin_rate` number, 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.
  - `margin` number, 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.
  - `taxes_exemption` boolean — When true, the account is exempt from tax withholding and `tax_withholding` must be null.
  - `tax_withholding` TaxWithholding — Tax withholding configuration. Replaces the standalone `fee_processing_code` field. Conditional rules enforced at creation/update time: - `ACCRUAL`: `fee_processing_code` is required; `tax_rules` must be omitted. - `CAPITALIZATION`: `tax_rules` is required; `fee_processing_code` must be omitted. - Omitted `withholding_moment`: both `fee_processing_code` and `tax_rules` must be omitted. In GET responses, legacy plans that predate this field may return `fee_processing_code` with a null `withholding_moment`.
    - `withholding_moment` 'ACCRUAL' | 'CAPITALIZATION', required — Moment at which tax is withheld. When omitted, no withholding applies.
    - `fee_processing_code` string, number — Processing code configured in the [fee model](https://developers.pismo.io/pismo-docs/docs/fee-model) for charging a tax, penalty, or fee.
    - `tax_rules` TaxRule[]
      - `description` string, required — Description of the tax rule.
      - `fixed_percentage` number, required — Fixed percentage applied by the tax rule.
      - `threshold_amount` number — Amount threshold above which the tax rule applies.
  - `interest_by_tiers` InterestByTiers — Interest by tiers configuration
    - `type` 'TERM' | 'AMOUNT', required — Interest type - `TERM`: Interest rate varies according to the period of time since the deposit was made. - `AMOUNT`: Interest rate varies according to the current balance.
    - `tier_calculation` 'RETROACTIVE' | 'NON-RETROACTIVE', required — Tier calculation method - `RETROACTIVE`: Interest is recalculated from the beginning based on the new applicable rate. - `NON-RETROACTIVE`: Interest is calculated progressively based on each layer rate.
    - `tiers` InterestByTiersArrayObject[], required
      - `days` integer — Number of days in `interest_by_tier`
      - `amount` number, double — Fee amount.
      - `margin_rate` number, 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.
      - `fixed_interest_rate` number, float — Fixed annual interest rate for investments or deposits. If a `benchmark` value is provided, this field must be null.
  - `capitalization_frequency` 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'HALF_YEARLY' | 'YEARLY' | 'MATURITY' — Interest payout frequency

## Response `200`

OK

- InterestAccountResponse
  - `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_rate` number, float — Fixed annual interest rate for investments or deposits. If a `benchmark` value is provided, this field must be null.
  - `margin_rate` number, 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.
  - `margin` number, 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.
  - `tax_withholding` TaxWithholding — Tax withholding configuration. Replaces the standalone `fee_processing_code` field. Conditional rules enforced at creation/update time: - `ACCRUAL`: `fee_processing_code` is required; `tax_rules` must be omitted. - `CAPITALIZATION`: `tax_rules` is required; `fee_processing_code` must be omitted. - Omitted `withholding_moment`: both `fee_processing_code` and `tax_rules` must be omitted. In GET responses, legacy plans that predate this field may return `fee_processing_code` with a null `withholding_moment`.
    - `withholding_moment` 'ACCRUAL' | 'CAPITALIZATION', required — Moment at which tax is withheld. When omitted, no withholding applies.
    - `fee_processing_code` string, number — Processing code configured in the [fee model](https://developers.pismo.io/pismo-docs/docs/fee-model) for charging a tax, penalty, or fee.
    - `tax_rules` TaxRule[]
      - `description` string, required — Description of the tax rule.
      - `fixed_percentage` number, required — Fixed percentage applied by the tax rule.
      - `threshold_amount` number — Amount threshold above which the tax rule applies.
  - `taxes_exemption` boolean — Is the account exempt from taxes?
  - `interest_by_tiers` InterestByTiers — Interest by tiers configuration
    - `type` 'TERM' | 'AMOUNT', required — Interest type - `TERM`: Interest rate varies according to the period of time since the deposit was made. - `AMOUNT`: Interest rate varies according to the current balance.
    - `tier_calculation` 'RETROACTIVE' | 'NON-RETROACTIVE', required — Tier calculation method - `RETROACTIVE`: Interest is recalculated from the beginning based on the new applicable rate. - `NON-RETROACTIVE`: Interest is calculated progressively based on each layer rate.
    - `tiers` InterestByTiersArrayObject[], required
      - `days` integer — Number of days in `interest_by_tier`
      - `amount` number, double — Fee amount.
      - `margin_rate` number, 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.
      - `fixed_interest_rate` number, float — Fixed annual interest rate for investments or deposits. If a `benchmark` value is provided, this field must be null.

## Other responses

- `400` — Bad request
- `401` — Access token is missing or invalid
- `404` — Not Found
- `500` — Internal server error

---

[API](https://skmtc.net/pismo/apis/platform-authentication.md) · [All operations](https://skmtc.net/pismo/apis/platform-authentication/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pismo/platform-authentication/revisions/935b62e16de4/schema)
