Penalty

Simulate penalty

Simulate the penalty applied to a specified withdrawal on a given date. The operation is read‑only and does not modify any data.

Use this endpoint to preview penalty fees before making an actual withdrawal.

The simulation evaluates all penalty rules configured in the product, including:

  • Early withdrawal penalties

  • Grace period penalties

  • Tiered interest forfeiture penalties

  • Withdrawal fees

  • Subsequent withdrawal penalties

Notes:

  • withdrawal_date must be the current date (UTC); past and future dates are rejected.
  • A withdrawal date inside the cool‑off period, or an inactive penalty record, returns penalty_amount: 0 and net_amount = gross_amount, with penalty_rule_applied, penalty_breakdown and currency omitted.
  • The account balance comes from Get transaction banking account balance: book_balance for DEPOSIT_BASIS products, or the balance_type balance for BALANCE_BASIS products. When withdrawal_amount is omitted, the account balance is used as the withdrawal amount. withdrawal_amount cannot exceed the account balance.
  • gross_amount reflects the account's resolved balance until a capitalization total record becomes available.
post/v1/deposits/accounts/{accountId}/penalty-simulation

Request

  • Base URL
    https://sandbox.pismolabs.io/savings-products
  • URL
    https://sandbox.pismolabs.io/savings-products/v1/deposits/accounts/{accountId}/penalty-simulation
  • Auth
    HTTP bearer

Path parameters

accountIdstring required

Account ID. Accepts either the Pismo account_id or your external_account_id. Send the same ID used to generate the access token.

Request body

withdrawal_datestring date-time required

The simulated withdrawal date in ISO 8601 format. The value must match the current UTC date. Requests that use a past date return error EIBACC0294, while requests that use a future date return error EIBACC0407.

withdrawal_amountnumber float

The amount to withdraw. When omitted, the account balance is used: book_balance for DEPOSIT_BASIS products, or the balance_type balance for BALANCE_BASIS products. The amount provided cannot exceed that balance.

Example request

{
  "withdrawal_date": "2026-06-19T00:00:00Z",
  "withdrawal_amount": 5000
}

Response

Simulation completed successfully

external_account_idstring

External account ID assigned by the client. Returned only when present on the account.

withdrawal_amountnumber

The withdrawal amount used in the simulation. (Equals the account balance when not passed in the request.)

withdrawal_datestring date-time

The withdrawal date used in the simulation in ISO 8601 format.

penalty_amountnumber

The total penalty applied to the withdrawal. Always equals the sum of the penalty_breakdown components (fixed_amount + percentage_amount). Returns 0 when no penalties are triggered or during the cool-off period.

currencystring

The 3-letter currency code in ISO 4217 alphabetic format, omitted if no penalty applies.

gross_amountnumber

Gross amount of the deposit account. When a capitalization total record exists, this value equals the principal balance plus the total accrued interest. Before the first capitalization event, when no capitalization total record is available, the amount derives from the balance specified by balance_type (VALUE_DATED_BALANCE or LEDGER_BALANCE), or from the book balance for deposit-based accruals.

Because it reflects the total value of the deposit account, it does not necessarily equal withdrawal_amount + interest_earned_amount.

interest_earned_amountnumber

Total interest earned through interest payments or capitalization. Returns 0 if no interest has been paid or capitalized. A positive gross_amount does not necessarily indicate earned interest, as it also reflects the account balance.

net_amountnumber

Amount remaining after penalties are deducted from the gross amount, calculated as net_amount = gross_amount - penalty_amount. This value is non-negative when withdrawal_amount does not exceed the resolved balance.

When the penalty amount is 0, net_amount equals gross_amount and penalty_rule_applied is omitted.

simulation_timestampstring date-time

The date and time of the simulation, formatted according to ISO 8601.

Example response

{
  "external_account_id": "a4070788-bbe3-4127-8abc-123456789012",
  "withdrawal_amount": 40667.17,
  "withdrawal_date": "2026-06-19T00:00:00Z",
  "penalty_rule_applied": [
    {
      "type": "PERCENTAGE",
      "value": 2.5,
      "description": "EARLY_WITHDRAWAL_AFTER_OPENING"
    }
  ],
  "penalty_amount": 1066.68,
  "penalty_breakdown": {
    "fixed_amount": 50,
    "percentage_amount": 1016.68
  },
  "currency": "BRL",
  "gross_amount": 41334.34,
  "interest_earned_amount": 667.17,
  "net_amount": 40267.66,
  "simulation_timestamp": "2026-06-19T19:22:55Z"
}

Changes

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