Loan products

Update loan product

Update an existing loan product with only the fields that are passed in the request body.

This endpoint generates a Loan product updated event.

patch/v2/loan-products/{productId}

Request

  • Base URL
    https://sandbox.pismolabs.io/lending
  • URL
    https://sandbox.pismolabs.io/lending/v2/loan-products/{productId}
  • Auth
    HTTP bearer

Path parameters

productIdstring required

Loan product ID

Headers

Idempotency-Keystring uuid

Optional UUID that makes the request idempotent, enabling you to retry it multiple times while the system processes it only once.

Request body

interest_plan_idsstring[]

List of interest plan IDs

loan_activation_method'ON_BOOKING' | 'ON_DISBURSEMENT' | 'ON_DISBURSEMENT_OR_REPAYMENT' | 'ON_REPAYMENT'

Indicate when the system changes a loan to active status. Default is ON_DISBURSEMENT_OR_REPAYMENT. If disbursement method type is NONE, you cannot set to ON_DISBURSEMENT, and if set to ON_DISBURSEMENT_OR_REPAYMENT the system changes the loan status on repayment.

minimum_total_paymentnumber double

Minimum total payment for the loan product. Must be positive.

product_namestring

Open text that describes the product

Example request

{
  "disbursement_method": {
    "type": "SINGLE"
  },
  "interest_plan_ids": [
    "5a1b2c3d-4e5f-6789-abcd-1234567890ef"
  ],
  "loan_activation_method": "ON_BOOKING",
  "minimum_total_payment": 50,
  "parameters": {
    "overdue_threshold_days": 30,
    "stop_accrual_number_of_days": 60,
    "delinquency_closure_days": 90,
    "backdating_enabled": true,
    "max_backdating_window_days": 60
  },
  "processing_codes": {
    "booking": [
      "000011"
    ],
    "disbursement": {
      "external": [
        "000011"
      ],
      "internal": [
        "000011"
      ]
    },
    "early_final_settlement": {
      "fee": [
        "000011"
      ]
    },
    "insurance": {
      "booking": [
        "000011"
      ],
      "repayment": [
        "000011"
      ]
    },
    "penalty_accruals": [
      "000011"
    ],
    "penalty_waiver": [
      "000011"
    ],
    "prepayment": {
      "fee": [
        "000011"
      ]
    },
    "present_value_discount": [
      "000011"
    ],
    "repayment": [
      "000011"
    ],
    "restructuring": [
      "000011"
    ]
  },
  "product_name": "Acme business loan"
}

Response

Loan product updated successfully.

collateral'NONE' | 'SINGLE' | 'COLLATERAL_MULTIPLE' required

Collateral

currencyinteger required

ISO 4217 currency code

product_idstring required

Loan product ID. Accepts either a lowercase UUID (e.g., "2717a296-124a-47cc-b2a1-91e80dc723eb") or an uppercase alphanumeric string with underscores (e.g., "MY_LOAN_PRODUCT_001"). If not provided during creation, a UUID is auto-generated.

product_namestring required

Open text that describes the product

status'ACTIVE' | 'INACTIVE' required

Product status

created_atstring date-time

Loan created date in UTC. Format = YYYY-MM-DDThh:mm:ss.SSSZ

grace_period_daysinteger

Number of calendar days after the installment due date during which late fees and delinquency are not applied. A value of 0 or omitted indicates no grace period.

interest_plan_idsstring[]

List of interest plan IDs

loan_activation_method'ON_BOOKING' | 'ON_DISBURSEMENT' | 'ON_DISBURSEMENT_OR_REPAYMENT' | 'ON_REPAYMENT'

Indicate when the system changes a loan to active status. Default is ON_DISBURSEMENT_OR_REPAYMENT. If disbursement method type is NONE, you cannot set to ON_DISBURSEMENT, and if set to ON_DISBURSEMENT_OR_REPAYMENT the system changes the loan status on repayment.

minimum_total_paymentnumber double

Minimum total payment for the loan product. Must be positive.

penalty_plan_codesstring[]

List of charge plan codes in order

product_type'BNPL' | 'PERSONAL'

Loan product type

repayment_calculation_method'RATES'

Method used to calculate the repayment amount

repayment_hierarchy_codestring

Repayment hierarchy code. Must be normalized (Unicode NFC), and may contain a UUID, or uppercase letters, numbers, and underscore.

updated_atstring date-time

Loan last updated date in UTC. Format = YYYY-MM-DDThh:mm:ss.SSSZ.

versioninteger

Product version

Example response

{
  "collateral": "SINGLE",
  "currency": 999,
  "disbursement_method": {
    "type": "SINGLE"
  },
  "processing_codes": {
    "booking": [
      "000011"
    ],
    "disbursement": {
      "external": [
        "000011"
      ],
      "internal": [
        "000011"
      ]
    },
    "early_final_settlement": {
      "fee": [
        "000011"
      ]
    },
    "insurance": {
      "booking": [
        "000011"
      ],
      "repayment": [
        "000011"
      ]
    },
    "penalty_accruals": [
      "000011"
    ],
    "penalty_waiver": [
      "000011"
    ],
    "prepayment": {
      "fee": [
        "000011"
      ]
    },
    "present_value_discount": [
      "000011"
    ],
    "repayment": [
      "000011"
    ],
    "restructuring": [
      "000011"
    ]
  },
  "product_id": "2717a296-124a-47cc-b2a1-91e80dc723eb",
  "product_name": "Acme business loan",
  "status": "ACTIVE",
  "created_at": "2026-09-03T17:58:35.520Z",
  "early_final_settlement": {
    "penalty": {
      "type": "PERCENTAGE",
      "value": 0.05
    },
    "lock_in_period": 9
  },
  "grace_period_days": 7,
  "interest_plan_ids": [
    "5a1b2c3d-4e5f-6789-abcd-1234567890ef"
  ],
  "loan_activation_method": "ON_BOOKING",
  "minimum_total_payment": 50,
  "parameters": {
    "overdue_threshold_days": 30,
    "stop_accrual_number_of_days": 60,
    "delinquency_closure_days": 90,
    "backdating_enabled": true,
    "max_backdating_window_days": 60
  },
  "penalty_plan_codes": [
    "penalty-001",
    "penalty-002"
  ],
  "prepayment": {
    "penalty": {
      "type": "PERCENTAGE",
      "value": 0.05
    },
    "reduce_option": [
      "INSTALLMENT",
      "TERM"
    ],
    "lock_in_period": 9
  },
  "product_type": "BNPL",
  "repayment_calculation_method": "RATES",
  "repayment_hierarchy_code": "RH001",
  "updated_at": "2024-03-15T13:00:00.000+00:00",
  "version": 1762434786787
}

Changes

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