---
title: "Create installment advancement"
method: POST
path: "/v2/accounts/{accountId}/installment-advance"
tags: ["Installment advancements"]
---

# Create installment advancement

`POST /v2/accounts/{accountId}/installment-advance`

## Request

- Base URL: `https://sandbox.pismolabs.io/installment-management`
- URL: `https://sandbox.pismolabs.io/installment-management/v2/accounts/{accountId}/installment-advance`
- Auth: HTTP bearer

Creates an installment advancement for an account. An installment advancement moves one or more future installments to the current cycle.

This version supports two advancement modes:

**ALL_CONTRACTS mode**: Advances all future installments for all installment agreements in the account. When using this mode:
- Set `condition` to `ALL_CONTRACTS`.
- The `calculator`, `reschedule`, and `remove_interest_from_current` fields are required at the root level.
- The `contracts` array should <i>not</i> be passed.

**MULTIPLE_CONTRACTS mode**: Advances installments for specific contracts with individual configurations. When using this mode:
- Set `condition` to `MULTIPLE_CONTRACTS`.
- Provide a `contracts` array with individual contract configurations.
- Root-level `calculator`, `reschedule`, and `remove_interest_from_current` fields must not be passed.

When you advance installments, you must specify what to do with the interest. You have three options:
1. To remove 100% of the interest on the advanced installment(s), set the `remove_interest_from_current` field to `true` and the `calculator` field to `REMOVE_ALL_INTEREST`.
2. To advance 100% of the interest on the advanced installment(s), set `remove_interest_from_current` to `false` and set `calculator` to `NONE`.
3. To recalculate the interest applied to the advanced installment(s), set `calculator` to `PRESENT_VALUE`. You can set the `remove_interest_from_current` field  to either `true` or `false`. If `true`, the system recalculates interest on installments that were already in the current cycle (and did not need to be advanced). Otherwise, interest on those installments remains unchanged.
For more information, refer to [Installment advancements](doc:installment-management#installment-advancements) and [Creating an installment advancment](doc:installment-management#creating-an-installment-advancement).

This endpoint triggers an async process in which the transactions are advanced as requested.

## Path parameters

- `accountId` integer, required

## Headers

- `x-cid` string

## Request body

- CreateInstallmentAdvancedV2RequestDto: Parameters for requesting an advancement (V2)
  - `condition` 'MULTIPLE_CONTRACTS' | 'ALL_CONTRACTS', required: Installments should be advanced for all the contracts for an account (`ALL_CONTRACTS`) or for multiple specific contracts (`MULTIPLE_CONTRACTS`).
  - `tracking_id` string, required: Tracking ID. A client-supplied tracking ID that can be used to keep track of an advancement. Must consist of the characters [a-z,A-Z,0-9,-,:] with a range from 1 to 128. **Note:** For a given account ID, the tracking ID must be unique. You cannot reuse the same tracking ID in another call to this endpoint, even if the earlier call returned an error, unless you use a different account ID.
  - `calculator` 'PRESENT_VALUE' | 'REMOVE_ALL_INTEREST' | 'NONE': Type of calculation to apply. Default is `NONE`.
  - `reschedule` 'ADVANCEMENT': Reschedule mode to apply. Must be `ADVANCEMENT`.
  - `remove_interest_from_current` boolean: Whether interest should be removed when an installment is advanced.
  - `interest_removal_end_date` string, date: Cutoff date used for interest recalculation when `calculator` is `PRESENT_VALUE`. Reflects the value passed in the request. `null` if not passed. Format = yyyy-mm-dd.
  - `contracts` ContractAdvancementDto[]: Array of contract advancement configurations (required for `MULTIPLE_CONTRACTS` condition)
    - `authorization_id` integer, required: Authorization ID for the contract
    - `calculator` 'PRESENT_VALUE' | 'REMOVE_ALL_INTEREST' | 'NONE', required: Type of calculation to apply. Default is `NONE`.
    - `remove_interest_from_current` boolean, required: Whether interest should be removed when an installment is advanced.
    - `reschedule` 'ADVANCEMENT', required: Reschedule mode to apply. Must be `ADVANCEMENT`.
    - `contract_condition` 'ALL_INSTALLMENTS' | 'SPECIFIC_NUMBER_OF_INSTALLMENTS': Should all the remaining installments for the contract be advanced (`ALL_INSTALLMENTS`) or just a specific number of them (`SPECIFIC_NUMBER_OF_INSTALLMENTS`)? If this field is set to `SPECIFIC_NUMBER_OF_INSTALLMENTS`, the `number_of_installments` field must be set. If this field is set to `ALL_INSTALLMENTS`, the `number_of_installments` field is ignored.
    - `number_of_installments` integer: Number of installments to advance This field is **REQUIRED** if `contract_condition` is set to `SPECIFIC_NUMBER_OF_INSTALLMENTS`. If `contract_condition` is set to `ALL_CONTRACTS`, this field is ignored.

## Response `202`

Accepted

- CreateInstallmentAdvancedV2ResponseDto: Response returned by advancement creation request (V2)
  - `id` integer: Advancement ID
  - `condition` 'MULTIPLE_CONTRACTS' | 'ALL_CONTRACTS': Installments should be advanced for all the contracts for an account (`ALL_CONTRACTS`) or for multiple specific contracts (`MULTIPLE_CONTRACTS`).
  - `tracking_id` string: Tracking ID. A client-supplied tracking ID that can be used to keep track of an advancement. Must consist of the characters [a-z,A-Z,0-9,-,:] with a range from 1 to 128.
  - `calculator` 'PRESENT_VALUE' | 'REMOVE_ALL_INTEREST' | 'NONE': Type of calculation to apply. Default is `NONE`.
  - `reschedule` 'ADVANCEMENT': Reschedule mode to apply. Must be `ADVANCEMENT`.
  - `remove_interest_from_current` boolean: Whether interest should be removed when an installment is advanced.
  - `number_of_installments` integer: Number of installments to advance This field is **REQUIRED** if `contract_condition` is set to `SPECIFIC_NUMBER_OF_INSTALLMENTS`. If `contract_condition` is set to `ALL_CONTRACTS`, this field is ignored.
  - `created_at` string, date-time: Date/time advancement was created. Format = yyyy-mm-dd:hr:mm:ss.
  - `updated_at` string, date-time: Date/time advancement was last updated. Format = yyyy-mm-dd:hr:mm:ss.
  - `cancelled_at` string, date-time: Date/time advancement was canceled. Format = yyyy-mm-dd:hr:mm:ss.
  - `contracts` ContractAdvancementResponseDto[]: Array of contract advancement configurations (present for `MULTIPLE_CONTRACTS` condition)
    - `remove_interest_from_current` boolean: Whether interest should be removed when an installment is advanced.
    - `authorization_id` integer: Authorization ID for the contract
    - `number_of_installments` integer: Number of installments to advance This field is **REQUIRED** if `contract_condition` is set to `SPECIFIC_NUMBER_OF_INSTALLMENTS`. If `contract_condition` is set to `ALL_CONTRACTS`, this field is ignored.
    - `calculator` 'PRESENT_VALUE' | 'REMOVE_ALL_INTEREST' | 'NONE': Type of calculation to apply. Default is `NONE`.
    - `reschedule` 'ADVANCEMENT': Reschedule mode to apply. Must be `ADVANCEMENT`.
  - `installments` InstallmentResponseDto[]: Array of installment details
    - `id` integer: Transaction ID of the installment
    - `new_amount` number, double: Full installment amount after applying any discount, including principal and interest charges
    - `old_amount` number, double: Full installment amount before applying any discount, including principal and interest charges
    - `new_interest_amount` number, double: Full interest amount of installment after applying any discount
    - `old_interest_amount` number, double: The full interest amount of an installment before applying any discount.
    - `new_statement_id` number: ID of the current statement
    - `old_statement_id` number: ID of the old statement. This is the ID of the statement on which the installment was scheduled to appear before it was advanced. For installments that are not advanced, `old_statement_id` and `new_statement_id` should contain the same values.
  - `error_message` string: Error message if advancement failed
  - `status` 'CREATED' | 'PROCESSED' | 'CANCELLED' | 'ERROR' | 'CANCELLATION_ERROR': Current status of the advancement

## Other responses

- `400`: Bad request
- `409`: Conflict
- `500`: Internal server error

---

[API](https://skmtc.dev/pismo/apis/revolving-credit-installment-management.md) - [All operations](https://skmtc.dev/pismo/apis/revolving-credit-installment-management/llms.txt) - [OpenAPI document](https://skmtc.dev/pismo/apis/revolving-credit-installment-management/revisions/214db4655f4a?raw)
