Share-based Payments (IFRS 2)
Expense equity and cash-settled awards the way IFRS 2 requires: grant-date fair value with forfeiture true-up, graded tranches over their own periods, market versus non-market true-up rules, modifications, cancellation acceleration, option pricing, and the disclosure rollforward.
Why this module
The IFRS 2 rules that separate a plan from a spreadsheet.
Grant-date value, trued up right
Equity-settled awards accrue grant-date fair value times the instruments expected to vest times the vested fraction. The expected count is the granted number net of the current forfeiture estimate, and each period run trues it up through the current-period charge. A non-market failure reverses the expense in full, a market failure never does.
Each tranche on its own clock
Graded plans carry tranche lines that each vest on their own date and are expensed over their own period off their own fair value, per IFRS 2.IG11. Tranche portions must sum to 100 percent, checked on activation, so no instrument is expensed twice or dropped.
A liability that remeasures
Cash-settled awards carry a liability remeasured to the current fair value at each period end until settlement, and the settlement action trues the liability to the amount paid through expense before it pays out, per IFRS 2.30-33.
Day in the life
An option grant from valuation to vesting.
You set up a plan, choose equity or cash settlement and the condition kind, and add a grant with the instruments and an expected forfeiture estimate. The valuation helper prices the option with Black-Scholes or a binomial tree, and you pull the result onto the grant as the grant-date fair value. You activate the plan, which validates the accounts and, for a graded plan, the tranche portions. Each period you create a run at the period end, compute the cumulative measure and post the delta as a sealed entry. As estimates move you update the forfeiture percentage or mark a condition failed, and the change trues up through the next run. A beneficial modification spreads its incremental fair value over the remaining period, and a cancellation accelerates the balance at once.
Edge cases
The IFRS 2 subtleties, handled in code.
Each one is in the shipped code today.
A failed non-market condition drives the expected count to zero and reverses the cumulative expense; a failed market condition changes nothing once service is rendered, because the outcome was priced into the grant-date fair value. The two are separate flags with separate consequences.
Only a beneficial modification adds measurement: a negative incremental fair value is refused outright, because a modification that reduces value is ignored and the original grant-date expense continues unchanged, exactly as IFRS 2.27 requires.
Once a run posts, the measurement inputs freeze, but the forfeiture estimate, failed-condition flags and final vesting outcomes stay editable on the grants, because IFRS 2.20 trues those up through the next period rather than by restating the past.
A run recomputes the cumulative measure at post time, so a stale preview from an earlier Compute click can never reach the ledger, and runs are refused out of chronological order.
A posted run cannot be deleted or re-keyed, and a plan with posted entries or an active or settled state cannot be deleted; the move link uses restrict ondelete, so the sealed entries always stay tied to their plan.
What is inside
Built to do the job, end to end.
- Plans, grants and tranches. A plan carries the settlement mode, condition kind, vesting terms and accounts; grants under it hold the instruments, grant-date fair value, exercise price and an updatable forfeiture estimate; graded plans add tranche lines with a portion, vesting end date and fair value each.
- The period run engine. One run per plan per period end computes the cumulative measure (equity or liability) and posts the delta against what the plan has recognised, in chronological order, one sealed journal entry each.
- Modifications and cancellation. A beneficial modification spreads its incremental fair value over the remaining vesting period; a cancellation accelerates the unrecognised balance immediately (IFRS 2.28(a)).
- Option valuation helper. A Black-Scholes-Merton European call with a continuous dividend yield and a Cox-Ross-Rubinstein binomial tree, pure Python with no external libraries, with degenerate inputs priced deterministically. Its result pulls onto a grant's fair value.
- Disclosure rollforward. A per-plan IFRS 2.45 feed of granted, forfeited, exercised, expired and outstanding instruments with the weighted average exercise price of the priced outstanding instruments.
- Security and isolation. Access rows for the EH user, manager and read-only auditor groups, a company isolation record rule, and posting gated to the EH Accounting Manager group.
Honest about the edges
What this does not do, so nothing surprises you.
- It does not build the full IFRS 2 disclosure note; it feeds the granted, forfeited, exercised, expired and outstanding rollforward with the weighted average exercise price, not a formatted note or the fair-value assumption tables.
- It measures the vested fraction in whole calendar months from the grant date with no intra-month proration; daily accrual is out of scope by design.
- The valuation helper prices European-exercise options; American early-exercise lattices and Monte Carlo paths for path-dependent market conditions are not built in.
- It does not carry the equity exercise or share-issue mechanics; on settlement the reserve stays within equity, and moving it is entity-specific policy left to you.
- Grantees are partner records, so it works without the HR app; it does not itself read employee master data.
- It holds amounts in the company currency of the plan; multi-currency awards are out of scope.
Installing this module
A standard Odoo addon, installed the standard way.
This is a standard Odoo addon that ships Python models, not a data-only package. Install it by placing the module folder, together with its dependency modules, into a directory on your Odoo addons_path, then open Apps, update the apps list, and install it from there. Do not use the Apps to Import Module upload screen: that path does not load Python code, so a module with models will not run when installed that way. Once the folder is on the addons_path the usual Apps install and later upgrades work exactly as they do for any other addon.
odoo 19 share based payment, IFRS 2 accounting odoo, employee share options, equity settled awards, cash settled SARs, graded vesting, vesting conditions, market condition, non-market condition, forfeiture true-up, option valuation Black Scholes, binomial option pricing, Cox Ross Rubinstein, share option expense, IFRS 2 modification, cancellation acceleration, IFRS 2.45 disclosure rollforward, weighted average exercise price
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
The Malaysia country pack for the ERP Heritage Employment Hero integration
A dependency free asynchronous job queue that runs long running and fan out work out of band of the request that...
Post Irish payslips to the general ledger on the Irish chart of accounts
Interactive drag and drop Gantt planner for Odoo 19 Community project tasks with a deterministic server side sche...
Employment Hero Connector is the integration core of the ERP Heritage Employment Hero suite, providing per compan...
Please log in to comment on this module