---
title: "Update deposit account attachment overrides"
method: PATCH
path: "/v1/deposits/accounts/{accountId}/attachment"
tags: ["Account attachment"]
---

# Update deposit account attachment overrides

`PATCH /v1/deposits/accounts/{accountId}/attachment`

Partially updates `deposit_configs.overrides` and `deposit_configs.interest_capitalization_mode` on an active deposit account attachment. Each field is processed using three‑state `PATCH` semantics, allowing values to be added, changed, or cleared as part of the update.
  * **Omitted**: Keeps the current value
  * `null`: Removes the override; falls back through the cascade (program → product)
  * **Value**: Replaces the current override with the supplied value

**NOTES**:

* At least one of `deposit_configs.overrides` or `deposit_configs.interest_capitalization_mode` must be provided.
* The `overrides` envelope, if provided, must contain at least one field. Sending an empty object returns `400 EIBACC0315`.
* `renewal_term` still requires `ROLLOVER` configured in `maturity_instructions` somewhere in the fallback sequence (`400 EIBACC0310` otherwise).

This endpoint generates an [Account attachment updated](https://developers.pismo.io/events/docs/deposit-product-account-attachment-updated-1) event.

## Path parameters

- `accountId` integer, required

## Headers

- `AuthorizationToken` string, required

## Request body

- UpdateAccountAttachmentRequest
  - `deposit_configs` object, required — At least one of `overrides` or `interest_capitalization_mode` must be provided.
    - `interest_capitalization_mode` 'PAYOUT' | 'REINVEST', nullable — Defines how capitalized interest is treated.<br> * `PAYOUT` (default): The capitalized amount is routed to `payout_account`. If no payout account is configured, the amount remains in the base account. * `REINVEST`: the capitalized amount is added to the principal through the interest engine. The updated principal becomes the basis for the next accrual cycle. This field applies only to the capitalization flow. The maturity instruction flow always uses `payout_account` regardless of this setting.<br> If the field is not provided, it is absent in the attachment and defaults to `PAYOUT` at runtime.
    - `overrides` AttachmentOverridesPatchRequest — PATCH envelope for account‑level `deposit_configs.overrides`. Fields support three‑state semantics, omission preserves the current value, `null` removes the override and restores the inherited configuration, and a provided value replaces it. The envelope must define at least one field, an empty overrides object returns a `400` error: `EIBACC0315`.
      - `maturity_instructions` MaturityInstructionsOverrideRequest — Overrides the deposit’s behavior at maturity. If a field is omitted, the Pismo platform uses the value defined at the higher‑level configuration that governs this deposit.
        - `principal` 'ROLLOVER' | 'PAY' — Specifies how the principal is handled once the deposit matures.
        - `interest` 'ROLLOVER' | 'PAY' — Specifies how the interest is handled once the deposit matures.
        - `reason` string — Optional audit-trail reason.
      - `renewal_term` RenewalTermOverrideRequest — Specifies the recurring rollover term, not to be confused with the initial `maturity_period`. You must provide either `unit` with `value` or `renewal_calendar_maturity_date`. A `ROLLOVER` configuration in principal or interest is required. When you pass `renewal_calendar_maturity_date`, the Pismo platform converts the interval from today into a day count and stores it at attach time in normalized form: `{unit: DAYS, value: <calculated>}`.
        - `unit` 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS' — Time unit of the renewal term. Required together with `value` when calendar form is not used.
        - `value` integer — Number of units. Required together with `unit` when calendar form is not used.
        - `renewal_calendar_maturity_date` string, date — Explicit calendar date (`YYYY-MM-DD`), the date must be a future date, and does not coincide with `unit`+`value`.
      - `penalties` PenaltiesPatchRequest — PATCH envelope for `deposit_configs.overrides.penalties`. Penalty types support three‑state semantics: omit to retain the existing value, use `null` to clear the override and restore the inherited configuration, or provide a value object to replace it. `reason` is optional metadata.
        - `reason` string
        - `grace_period` GracePeriodOverrideRequest — Grace period override. Type-specific fields are optional pointers, when omitted, the Pismo platform follows the normal fallback sequence, moving from the account level to the program and then to the product defaults.
          - `waived` boolean, required — `true` = fully exempt; `false` = penalty active (customize via the fields below).
          - `duration_days` integer
          - `penalty_interest_days` integer
          - `valid_until` string, date-time — Schedules the revert of this override via EventBridge. This value must be a future date and follows the ISO 8601 standard.
        - `early_withdrawal_after_opening` EarlyWithdrawalAfterOpeningOverrideRequest — Override for early withdrawal after account opening.
          - `waived` boolean, required
          - `applicable_within_days` integer
          - `penalty_interest_days` integer
          - `valid_until` string, date-time
        - `withdrawal_fee` WithdrawalFeeOverrideRequest — Withdrawal fee override.
          - `waived` boolean, required
          - `type` 'PERCENTAGE' | 'FIXED'
          - `value` number
          - `valid_until` string, date-time
        - `tiered_interest_forfeiture` TieredInterestForfeitureOverrideRequest — Tiered interest forfeiture override. Tiers replace the product's tiers when provided.
          - `waived` boolean, required
          - `tiers` TieredInterestForfeitureTierRequest[]
            - `min_days_held` integer, required
            - `max_days_held` integer — Optional. Open-ended tier when omitted.
            - `forfeited_interest_days` integer, required
          - `valid_until` string, date-time
        - `subsequent_withdrawals` SubsequentWithdrawalsOverrideRequest — Subsequent withdrawals (Regulation D) override.
          - `waived` boolean, required
          - `applicable_within_days` integer
          - `penalty_interest_days` integer
          - `window_behavior` 'ROLLING' | 'FIXED'
          - `valid_until` string, date-time

## Response `200`

OK

- AccountAttachment
  - `account_id` integer — Pismo account ID
  - `attach_datetime` string, date-time — Datetime when the product was attached to the account. Format: `YYYY-MM-DDThh:mm:ss.sss`.
  - `status` string — Status of the product attachment
  - `overdraft` Product
    - `product_id` string, uuid — Product ID generated for an overdraft product. Once this ID is created, you must link it to your account ID.
    - `name` string — Produt name
    - `interest_plan_id` string, uuid — Interest plan ID generated during the plan's creation. Created via the [Create interest plan](https://developers.pismo.io/pismo-docs/reference/post-v1-interest-plan-1) endpoint.
    - `grace_period` integer — Grace period during which you can restore the balance without incurring any interest charges. The unit is measured in days.
    - `processing_code` string — Processing code for the debit transaction. If `split_transaction` is `false` (the default), each installment payment is recorded as one debit transaction equal to the installment amount minus the discount, and `processing_code` is the processing code for that transaction. If `split_transaction` is `true`, each installment payment is recorded as two transactions: a debit transaction for the installment amount and a credit transaction for the discount. In this case, `processing_code` is the processsing code for the debit transaction, and `second_processing_code` is the processing code for the credit transaction.
    - `status` 'CREATED' | 'ACTIVE', enum — Overdraft product status.<br> * `CREATED`: When you successfully created an overdraft product. * `ACTIVE`: When you attach your overdraft product to an account or a program ID. Once it's attached, the product becomes `ACTIVE`.
    - `created_at_datetime` string, date-time — Product created datetime. Format: `YYYY-MM-DDThh:mm:ss.sss`.
  - `metadata` object — Additional details about the product attachment. The information must be in `key:value` pair format. For example, `name:<your_name>`.<br> `minLength` = `0` `maxLength` = `1024`<br> **Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis).

## Other responses

- `400` — Bad Request
- `404` — Not Found
- `409` — Conflict
- `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)
