Skip to main content

Payment schedule and GL posting

The model

For every IFRS 16-capitalised lease, Shillinq materialises one LeasePaymentSchedule row per payment period. The row is computed by the pure-logic LeaseAmortizationCalculator (cents-only arithmetic, no IEEE-754 drift) so the same numbers are reproducible from the lease contract alone.

Every row carries:

FieldMeaning
periodSequence1, 2, 3, …
periodStart / periodEndISO dates derived from commencementDate + frequency.
openingLeaseLiabilityThe liability at the start of the period.
paymentAppliedTotalThe contractual payment for the period.
interestAccruedopeningLiability × periodicRate (IBR / periodsPerYear).
paymentPrincipalPortionpaymentAppliedTotal − interestAccrued.
closingLeaseLiabilityopeningLeaseLiability + interestAccrued − paymentAppliedTotal.
depreciationChargeStraight-line over the term of the RoU asset.
postedToGlFK to the GL transaction (filled by period-close, immutable thereafter).

The closing liability of the final period is forced to exactly zero — the calculator absorbs any rounding into that row's principal so the schedule lands cleanly.

What hits the GL

For each period the period-close engine posts:

Dr. Interest expense <interestAccrued>
Cr. Lease liability <interestAccrued>

Dr. Lease liability <paymentPrincipalPortion>
Cr. Bank <paymentPrincipalPortion>
(payment leg goes through the bank reconciliation)

Dr. Depreciation <depreciationCharge>
Cr. Accumulated depreciation <depreciationCharge>

Every line carries sourceLease=<lease-id> so the audit trail can be walked end-to-end (ADR-022).

Preview

The Lease Detail page shows the next 12 months of the schedule inline; the full set is downloadable via the Audit pack action (see Disclosures).

Regeneration

If the lease's economics change (extension reassessment, indexation, modification), LeasePaymentScheduleService::generateSchedule(leaseId, administrationId, fromSequence) regenerates rows from fromSequence forward. Existing posted rows are protected by the immutability rule on LeasePaymentSchedule — only future periods are overwritten.

Notes

  • Schedule generation skips exempt and out-of-scope leases (no rows).
  • The schedule is administration-scoped via the lease contract; cross-administration reads are blocked at the service layer (ADR-005 IDOR safety).
  • The payment frequency choices map to fixed periods-per-year (monthly=12, quarterly=4, annual=1); irregular schedules fall back to monthly cadence and adjust per-period payments at activation.