Skip to content

Interest in Suspense

Overview

Interest in Suspense (IIS) is an accounting treatment applied to non-performing loans (NPLs) where accrued interest income is no longer recognized in the income statement. Instead, interest is moved to a suspense account until the loan is either recovered or written off.

This is a regulatory requirement in most financial jurisdictions (e.g., IFRS 9, Basel III, Central Bank prudential guidelines) to ensure that income statements do not reflect interest income that is unlikely to be collected.

Key Concepts

When to Suspend Interest

Interest should be moved to suspense when:

  • Arrears threshold: A loan exceeds the institution's NPL classification threshold (typically 90+ days past due)
  • Regulatory classification: The loan is classified as substandard, doubtful, or loss
  • Account closure: The account is closed with outstanding interest
  • Manual decision: A credit officer or risk manager determines the interest is unlikely to be collected

Suspense Reasons

ReasonDescription
ARREARSLoan exceeded days-in-arrears threshold
NPL_CLASSIFICATIONLoan classified as non-performing
REGULATORYRegulatory or central bank requirement
ACCOUNT_CLOSEDAccount closed with outstanding interest
MANUALManual adjustment by authorized user

Suspense Statuses

StatusDescription
SUSPENDEDInterest is currently in suspense
PARTIALLY_RELEASEDPart of the suspended balance has been released
RELEASEDInterest has been released back to income (loan recovered)
WRITTEN_OFFInterest has been written off (loan loss)

Operations

Moving Interest to Suspense

  1. Navigate to Loan Accounts > Operations > Interest Suspense
  2. Click Move to Suspense
  3. Select the loan account
  4. Enter the amount to suspend
  5. Choose the suspension reason
  6. Add any notes
  7. Submit

For batch operations, use the batch mode to suspend interest on multiple accounts at once.

Releasing Interest from Suspense

When a previously non-performing loan recovers (e.g., borrower makes payments and the loan becomes current again):

  1. Find the suspended interest record in the table
  2. Click the Release action
  3. Confirm the release amount (defaults to full suspended amount)
  4. The interest is credited back to interest income

GL Accounting Entries

Moving to Suspense

EntryAccountAmount
DRInterest Income (reversal)Suspended amount
CRInterest SuspenseSuspended amount

Releasing from Suspense

EntryAccountAmount
DRInterest SuspenseReleased amount
CRInterest Income (recovery)Released amount

The GL posting uses the LOAN.INT.SUSPEND and LOAN.INT.SUSPEND.RELEASE rules, with the suspense leg resolved through the LOAN_INTEREST_SUSPENSE_COA tag.

Integration with Daily Processes

Arrears Engine

The update_arrears_status batch procedure updates loan arrears buckets. Loans that cross the NPL threshold (e.g., L4_90_PLUS) can be flagged for automatic interest suspension via the early warning flags system (HIGH_DPD flag).

Interest Accrual

The accrue_loan_interest procedure continues to accrue interest on loans in arrears by default (controlled by the accrue_late_interest product flag). When interest is suspended:

  • Accrual continues to track the economic interest owed
  • The suspense entry reverses the income recognition
  • This maintains the correct receivable balance while removing income inflation

Permissions

PermissionDescription
VIEW_INTEREST_SUSPENSEView suspense records and the suspense table
CREATE_INTEREST_SUSPENSEMove interest to suspense
RELEASE_INTEREST_SUSPENSERelease suspended interest back to income

API Endpoints

MethodPathDescription
GET/api/loans/interest-suspenseList suspense records (paginated)
POST/api/loans/interest-suspense/moveMove interest to suspense
PUT/api/loans/interest-suspense/releaseRelease interest from suspense

Query Parameters (List)

  • page_number (number): Page number. Defaults to 1.
  • page (number): Backward-compatible alias for page_number.
  • page_size (number): Page size. Defaults to 10.
  • loan_account_id (number): Filter by loan account.
  • status (string): Filter by SUSPENDED, PARTIALLY_RELEASED, RELEASED, or WRITTEN_OFF.

Request Payloads

POST /api/loans/interest-suspense/move

json
{
  "items": [
    {
      "loan_account_id": 423,
      "original_transaction_id": 1204,
      "suspense_amount": 15000,
      "suspense_reason": "ARREARS",
      "notes": "Moved after arrears review",
      "custom_field_values": {
        "review_batch": "APR-2026"
      }
    }
  ]
}
  • loan_account_id is required.
  • suspense_reason is required and stored as a free-form string up to 64 characters.
  • original_transaction_id, suspense_amount, notes, and custom_field_values are optional.
  • UI-only helper fields such as loan_account_display may be sent by the frontend and are ignored by the API.

PUT /api/loans/interest-suspense/release

json
{
  "items": [
    {
      "suspense_id": 18,
      "release_amount": 5000
    }
  ]
}
  • suspense_id is required.
  • release_amount is optional; when omitted, the full remaining suspended balance is released.

Database Tables

loan_interest_suspense

ColumnTypeDescription
suspense_idINT (PK)Unique record ID
loan_account_idINT (FK)Linked loan account
original_transaction_idINT (FK)Original interest accrual transaction
suspense_dateDATEDate interest was moved to suspense
suspense_amountDECIMAL(20,6)Amount in suspense
currency_codeCHAR(3)Currency (ISO 4217)
suspense_reasonVARCHAR(64)Reason for suspension
release_dateDATEDate released (if applicable)
released_amountDECIMAL(20,6)Amount released
release_transaction_idINT (FK)Transaction ID on release
statusENUMSUSPENDED, PARTIALLY_RELEASED, RELEASED, WRITTEN_OFF
notesTEXTAdditional notes

PinkApple ERP by Stat Solutions Network