Lease Accounting, engineered for compliance
A specialized resource for ASC 842 / IFRS 16 compliance, right-of-use (ROU) and liability calculations, and Python-based lease automation. Built for corporate accountants, lease operations teams, FinTech developers, and automation engineers.
Translate regulatory mandates into auditable, version-controlled calculation engines — from lease document extraction and clause parsing through deterministic amortization schedules, modification tracking, compliance reporting, and batch synchronization.
What you'll find here
Four sections cover the full lease-accounting lifecycle — from raw contract ingestion through audit-ready amortization schedules to the financial-statement disclosures. Each section links through to focused, code-first guides.
-
Core Architecture & ROU
ASC 842 vs IFRS 16 measurement precedence, lease-term boundaries, discount-rate mapping, and ROU asset frameworks.
Explore -
Extraction & Clause Parsing
PDF/DOCX ingestion, OCR, NLP clause tagging, payment-schedule normalization, and async portfolio processing.
Explore -
Amortization Schedules
Present-value logic, effective-interest splitting, automated amortization tables, and materiality threshold tuning.
Explore -
Disclosure & Reporting
Maturity analysis, weighted-average rate and term, variable and short-term lease cost, and lease-liability rollforward disclosures for the ASC 842 and IFRS 16 notes.
Explore
Browse by topic
Focused topic areas within each section — start here to orient before diving into a guide.
-
Discount Rate Determination & Mapping
How to source, build, and map the discount rate for ASC 842 and IFRS 16 leases — implicit rate hierarchy, IBR interpolation, term alignment, and audit-ready Python automation.
Open -
Initial Direct Cost Allocation
How to test, capitalize, and amortize initial direct costs under ASC 842 and IFRS 16 — the incremental-cost eligibility test, ROU asset addition, dual-track amortization, and audit-ready Python automation.
Open -
ROU Asset Calculation Frameworks
How to measure the right-of-use asset under ASC 842 and IFRS 16 — initial additive build-up, subsequent measurement by classification, the input schema, KaTeX formulas, and audit-ready Python.
Open -
Payment Schedule Data Normalization
Turn irregular lease payment clauses into a deterministic, period-aligned cash-flow array for ASC 842 / IFRS 16 — the canonical date grid, the fixed-vs-variable split, a decimal-precise Python normalizer, and the day-count and zero-period gotchas that break amortization.
Open -
NLP Clause Extraction & Tagging
How to isolate, classify, and tag lease clauses into ASC 842 / IFRS 16 measurement inputs — hybrid transformer-plus-regex extraction, a typed clause schema, confidence gating, and audit-ready Python.
Open -
PDF/DOCX Lease Ingestion Workflows
The first-mile ingestion stage that turns raw lease PDFs and DOCX files into structured, hash-verified text for ASC 842 / IFRS 16 — deterministic format routing, a normalized page-map schema, decimal-safe extraction, and the encoding and scan-quality gotchas that corrupt downstream clause parsing.
Open -
Automated Amortization Table Generation
Engineer audit-ready ASC 842 and IFRS 16 amortization schedules: effective-interest allocation, decimal precision, final-period drift control, modification remeasurement, and runnable Python.
Open -
Present Value Calculation Logic
Engineer the ASC 842 / IFRS 16 present-value step that seeds the lease liability: cash-flow normalization, discount-rate locking, decimal-precision DCF, day-count conventions, and runnable Python.
Open -
Interest vs Principal Splitting Algorithms
Engineer the per-period effective-interest split for ASC 842 and IFRS 16 lease liabilities: the recursion, day-count conventions, decimal precision, drift control, and runnable Python.
Open -
Threshold Tuning for Materiality
Engineer the ASC 842 / IFRS 16 materiality gate that decides which leases capitalize: short-term and low-value exemptions, portfolio materiality tests, decimal-precision routing, policy versioning, and runnable Python.
Open -
Lease Term Boundary Definitions
How to resolve the accounting lease term for ASC 842 and IFRS 16 — non-cancellable period, reasonably-certain renewal and termination options, the economic-incentive test, and audit-ready Python automation.
Open -
Amortization Precision Troubleshooting: The Failure Modes That Break Lease Schedules
Diagnose and fix the five implementation failures that break ASC 842 / IFRS 16 lease amortization engines — float drift, day-count mismatch, stub periods, snapshot gaps, non-zero terminal balances.
Open -
Operating vs Finance Lease Classification Under ASC 842 and IFRS 16
Classify a lessee lease as finance or operating under ASC 842's five criteria, and why IFRS 16's single lessee model has no such split — with KaTeX tests and decimal-precision Python.
Open -
Weighted-Average Discount Rate and Lease Term Disclosures: ASC 842 and IFRS 16
Compute and disclose the weighted-average discount rate and weighted-average remaining lease term under ASC 842-20-50-4(g): balance-weighting logic, KaTeX formulas, and decimal-precise Python.
Open -
Lease Modification and Remeasurement Accounting Under ASC 842 and IFRS 16
How to account for lease modifications and remeasurements under ASC 842 and IFRS 16 — separate lease vs remeasurement, which discount rate applies, ROU vs P&L offsets, and runnable Python.
Open -
Multi-Currency Lease Portfolio Handling Under ASC 842, IFRS 16, and IAS 21
Tag lease currency at extraction, discount each currency with its own incremental borrowing rate, and retranslate the monetary lease liability at closing spot while holding the ROU asset at historical rate.
Open -
Variable, Short-Term, and Low-Value Lease Cost Disclosures: ASC 842 and IFRS 16
Classify and disclose variable lease cost, short-term lease cost, and low-value lease cost under ASC 842-20-50-4 and IFRS 16.53 — the P&L amounts that never entered the lease liability, with Python.
Open -
Lease Liability Rollforward and Reconciliation Under ASC 842 and IFRS 16
Build a period lease-liability rollforward — opening plus new leases plus interest less payments plus or minus remeasurements — and reconcile it to the amortization schedules and the cash-flow statement.
Open -
Maturity Analysis of Lease Liabilities: Building the Disclosure Table Under ASC 842 and IFRS 16
Build the lease maturity analysis: bucket undiscounted future payments into five years plus thereafter, reconcile to the discounted liability through imputed interest, with runnable Python.
Open -
Async Batch Processing for Lease Portfolios
Decouple lease document extraction from ASC 842 / IFRS 16 calculation with an async batch engine — queue schema, effective-interest formulas, a decimal-precise Python worker pool, idempotency and dead-letter handling, and the precision gotchas that break at scale.
Open
Featured guides
Hands-on, implementation-focused walkthroughs from across the site.
-
How to Calculate the Incremental Borrowing Rate for ASC 842
When the rate implicit in a lease is not readily determinable, ASC 842 forces the lessee to build an incremental borrowing rate (IBR) from first principle…
Read guide -
Mapping Discount Rates to Variable Lease Payments
How ASC 842 and IFRS 16 split variable lease payments into index-linked cash flows that carry the locked discount rate versus usage-based payments that stay off the liability — with KaTeX math and audit-ready Python.
Read guide -
Handling Async Lease Ingestion at Scale
How to keep an asynchronous lease-ingestion pipeline deterministic and audit-clean at portfolio scale — idempotent state transitions, commencement-date rate locking, and decimal-exact amortization that survives worker crashes and redelivery.
Read guide -
Extracting Renewal Options with spaCy and Regex for ASC 842 / IFRS 16 Lease Term
A hybrid spaCy dependency-parsing and regex pipeline that captures renewal-option duration and frequency, normalizes it to years, and feeds the reasonably-certain lease term straight into ASC 842 / IFRS 16 amortization logic.
Read guide -
Normalizing Irregular Payment Schedules into JSON
Serialize step-rent, rent-holiday, mid-period and CPI-indexed lease clauses into a deterministic, day-count-aware JSON cash-flow array for ASC 842 / IFRS 16 — the schema, the compound period-rate math, a decimal-precise Python normalizer with a terminal assertion, and the amortization-drift gotcha that uniform monthly discounting hides.
Read guide -
Python OCR Pipeline for Legacy Lease PDFs (ASC 842 / IFRS 16)
A deterministic OpenCV + Tesseract preprocessing pipeline that deskews, thresholds, and layout-segments scanned lease PDFs so payment schedules survive OCR as structured tables and feed clean inputs into ASC 842 / IFRS 16 measurement.
Read guide -
IFRS 16 vs ASC 842: ROU Asset Differences Explained
Both standards initialize the right-of-use asset at exactly the same number on day one, so a naive engine that copies the IFRS 16 rollforward into an ASC…
Read guide -
Handling Embedded Leases in Service Contracts
How to identify an embedded lease inside a service contract under ASC 842 and IFRS 16, run the identified-asset and control tests, split consideration by standalone selling price, and build the term-driven amortization schedule in Python.
Read guide -
Building a Lease Amortization Schedule in pandas
A lease liability rollforward is recursive — every period's opening balance is the prior period's closing balance — yet pandas is built for vectorized, or…
Read guide -
Calculating Lease Liability Interest Using the Effective Interest Method
This page answers one precise question that sits at the boundary of accounting policy and numerical engineering: given an opening lease liability and a fi…
Read guide -
Capitalizing Initial Direct Costs in the ROU Asset with Python
Add eligible initial direct costs to the right-of-use asset at commencement under ASC 842-20-30-5 / IFRS 16.24(c) and amortize them, with a decimal-precision Python snippet.
Read guide -
Mid-Month Convention Present Value Proration for Lease Commencement
Prorate the stub first period when a lease commences mid-month: compute the fractional first-period exponent under an actual-day convention so the opening present value and first interest accrual stay consistent.
Read guide -
Initial Direct Costs vs Lease Incentives: Opposite-Sign ROU Adjustments
Initial direct costs add to the right-of-use asset while lease incentives reduce it — and net against payments in the liability if receivable. Placement rules, a comparison table, and Python.
Read guide -
Generating a Lease Liability Rollforward in Python
A focused, runnable how-to that builds an ASC 842 / IFRS 16 lease-liability rollforward table from amortization schedule rows and modification events, with a terminal reconciliation assert.
Read guide -
Assessing Renewal Options: The Reasonably Certain Threshold in Python
Decide whether renewal or termination option periods enter the lease term under the reasonably-certain threshold (ASC 842-10-30-1..3 / IFRS 16.18-19) with an economic-incentive scoring model.
Read guide -
Fixing Floating-Point Drift in Lease Amortization Schedules
Why binary float breaks penny-exact ASC 842 / IFRS 16 amortization schedules, and how decimal Decimal with quantize and a terminal adjustment restores a zero-close, re-derivable liability.
Read guide -
Building a Lease Maturity Analysis Table in pandas
A focused pandas how-to: bucket a portfolio of lease payment schedules into the five-year-plus-thereafter maturity table and add the imputed-interest reconciliation row with Decimal-backed sums.
Read guide -
Computing the Weighted-Average Discount Rate and Lease Term Across a Portfolio
A focused, decimal-precise how-to for computing the ASC 842-20-50-4(g) weighted-average discount rate and remaining lease term over a portfolio, with a balance-weighted versus simple-average comparison.
Read guide -
Debugging Day-Count Mismatches in Lease Interest Calculations
Diagnose an ASC 842 / IFRS 16 schedule whose opening liability and first interest figure disagree because present value used Actual/365 while accrual used 30/360, and thread one basis through both.
Read guide -
Present Value of CPI-Linked Variable Lease Payments at Commencement
Include index or CPI-linked variable lease payments in the opening present value at the commencement-date index level — not a CPI forecast — and remeasure at the original rate when the index resets.
Read guide -
Discounting Multi-Currency Lease Portfolios in Python
A focused how-to that discounts each currency's lease payments at that currency's own IBR, keeps amounts as (currency, Decimal), and translates the monetary liability to the presentation currency at closing spot.
Read guide -
Applying the Five Finance Lease Classification Tests (ASC 842-10-25-2)
Implement each of ASC 842's five finance-lease criteria as a pure Python function and combine them by OR, with the near-end-of-life exclusion coded in and a terminal assert.
Read guide -
IBR Selection: ASC 842 vs IFRS 16 Incremental Borrowing Rate in Python
Compare incremental borrowing rate selection under ASC 842-20-30-3 and IFRS 16.26, including the ASC 842 non-PBE risk-free-rate expedient, with a decimal-precision Python selector.
Read guide -
Accounting for a Lease Modification in Python
Implement an ASC 842 / IFRS 16 lease modification in Python: recompute the liability at a revised discount rate, adjust the ROU asset by the delta, with Decimal precision and a terminal assert.
Read guide -
Operating vs Finance Classification: ASC 842 vs IFRS 16
Why ASC 842 keeps a lessee finance/operating split while IFRS 16 does not, and the downstream P&L, balance-sheet, and cash-flow effects — with a decimal-precision Python comparison.
Read guide -
Disclosing Variable Lease Costs Under ASC 842: Isolating the Excluded Payments
A focused how-to for isolating and disclosing variable lease cost under ASC 842-20-50-4(a)(4), with the IFRS 16.53(e) contrast, a decimal-precise Python classifier, and the index-linked double-count gotcha.
Read guide -
Partial Lease Termination Remeasurement Mechanics (ASC 842 / IFRS 16)
Account for a partial lease termination in Python: reduce the ROU asset proportionately to the decrease in the right of use, remeasure the liability at a revised rate, and book the gain or loss.
Read guide -
Impairment Testing for Right-of-Use Assets: IAS 36 vs ASC 360 in Python
Test right-of-use assets for impairment under IAS 36 (IFRS 16) and ASC 360 (ASC 842): recoverability, measuring the loss, and post-impairment amortization, with decimal-precision Python.
Read guide -
Setting Lease Capitalization Thresholds in Python
Implement ASC 842 and IFRS 16 capitalization thresholds in code: the short-term exemption, the IFRS 16 low-value election, and an entity materiality floor that keeps small leases off the amortization schedule.
Read guide