Program attachment

Update deposit program attachment overrides

Partially updates deposit_configs.overrides and deposit_configs.interest_capitalization_mode on an active deposit program attachment. Each field follows three‑state PATCH rules, allowing values to be set, changed, or cleared. At the program level, the only supported override inside overrides is renewal_term.

  • Omitted: Keeps the current value
  • null: Removes the override; falls back through the cascade (product)
  • Value: Replaces the current value

NOTES:

  • At least one of deposit_configs.overrides or deposit_configs.interest_capitalization_mode must be provided.
  • Sending penalties inside overrides returns 400 EIBACC0317
  • Sending maturity_instructions inside overrides results in a 400 EIBACC0318 error. This field cannot be modified at the program level and must be configured on each account attachment instead.
  • An empty overrides envelope returns 400 EIBACC0315
  • renewal_term still requires ROLLOVER configured in maturity_instructions somewhere in the fallback sequence (400 EIBACC0310 otherwise)

This endpoint generates a Program attachment updated event.

patch/v1/deposits/programs/{programId}/attachment

Request

  • Base URL
    https://sandbox.pismolabs.io/savings-products
  • URL
    https://sandbox.pismolabs.io/savings-products/v1/deposits/programs/{programId}/attachment
  • Auth
    HTTP bearer

Path parameters

programIdinteger required

Program ID

Request body

Example request

{
  "deposit_configs": {
    "interest_capitalization_mode": "PAYOUT",
    "overrides": {
      "renewal_term": {
        "unit": "MONTHS",
        "value": 6,
        "renewal_calendar_maturity_date": "2027-05-22"
      }
    }
  }
}

Response

OK

product_type'deposit' | 'savings-account'

Product type.

product_idstring

Product identifier.

interest_plan_idstring

Interest rate plan ID. This corresponds to the ID you created using the Create interest plan version) endpoint.

attachment_datestring date-time

Timestamp that indicates when the attachment was created (when the attach API call was made). The datetime format follows the ISO 8601 standard yyyy-mm-ddThh:mm:ss.sssZ.

effective_datestring date

The effective date of the attachment in YYYY-MM-DD format This is the date when the attachment becomes valid. Maturity is calculated from this date. For attachments created in the past, the date defaults to the value of attachment_date.

fee_model_idstring

Fee model identifier, if applicable.

interest_capitalization_mode'PAYOUT' | 'REINVEST'

Present only when this program attachment explicitly defines interest_capitalization_mode. If the field is missing, the Pismo platform applies REINVEST as the default behavior. All accounts linked to the program inherit this value unless an account‑level configuration provides its own setting.

accrual_model'DEPOSIT_BASIS' | 'BALANCE_BASIS'

Accrual model inherited from the attached product. DEPOSIT_BASIS or BALANCE_BASIS.

balance_type'VALUE_DATED_BALANCE' | 'LEDGER_BALANCE'

Balance type inherited from the attached product. Only meaningful when accrual_model is BALANCE_BASIS.

Example response

{
  "product_id": "2c336e9d-d04f-4fd0-8f6e-25808f48d70c",
  "interest_plan_id": "263d509a-d5d0-4b3a-b909-ce1b9174beff",
  "maturity_period": {
    "unit": "MONTHS",
    "value": 6,
    "calendar_maturity_date": "2027-06-15"
  },
  "attachment_date": "2024-01-23T13:26:25.000Z",
  "effective_date": "2025-12-01",
  "fee_model_id": "fee-model-123",
  "payout_account": {
    "label": "My payout account",
    "type": "INTERNAL",
    "internal_account_id": 123456,
    "external_account": {
      "key": "value"
    }
  },
  "interest_capitalization_mode": "REINVEST",
  "overrides": {
    "maturity_instructions": {
      "principal": "ROLLOVER",
      "interest": "PAY",
      "reason": "Customer preference at onboarding"
    },
    "renewal_term": {
      "unit": "MONTHS",
      "value": 6,
      "renewal_calendar_maturity_date": "2027-05-22"
    },
    "penalties": {
      "reason": "Q4 2026 VIP retention package",
      "withdrawal_fee": {
        "value": 1.5
      }
    }
  },
  "accrual_model": "DEPOSIT_BASIS",
  "balance_type": "VALUE_DATED_BALANCE"
}

Changes

No recorded changes to this operation across all 1 revision of this API.