Skip to content

Isolated Benefit Sale ACB 7(1.31)

Trevor Siemens edited this page Jun 22, 2026 · 1 revision

When you acquire securities through an employer plan (RSUs, ESOs/stock options, ESPPs, etc.), the value at vest/exercise is an employment benefit under section 7 of the Income Tax Act, and the fair market value at that time becomes the cost base of those shares.

If you sell some of those shares right away (for example a sell-to-cover of the tax-withholding portion, or a same-day sale), the default ACB rules (section 47) average the cost base of the shares you sold together with any other identical shares you already hold. If your existing shares have a lower (or higher) cost base, this averaging shifts the gain/loss you report on the immediate sale, and changes the ACB of the shares you keep.

Subsection 7(1.31) lets you instead treat the shares you just acquired under the plan as the specific shares you sold — sidestepping the averaging — provided you sell within 30 days. This page describes how acb supports this with an "isolated benefit sale" cost pool.

This is optional and you don't have to use it. Both methods are valid and should, in total, produce the same capital gains over the life of the holding — they just differ in when and how the gain is reported (see issue #112). Use it if you (or your tax advisor) want the immediate benefit sale to stand on its own cost base rather than being blended with your other lots.

What subsection 7(1.31) requires

Paraphrasing the statute, 7(1.31) deems the newly-acquired plan security to be the one disposed of, when:

  • you acquired the security under a section 7 agreement (the plan), and
  • you dispose of an identical security within 30 days after acquiring it, and
  • you do not acquire or dispose of any other identical securities in between, and
  • you identify the security as the one disposed of in your tax return for that year (and have not already used it to identify the disposition of some other security).

The "identify it in your return" condition is an opt-in designation — see Reporting / identifying the security below.

How acb models this: cost pool affiliates

acb isolates a benefit sale by routing the sold shares (and their immediate sell-to-cover) into a separate cost pool, modelled as a distinct affiliate. A cost pool affiliate is written like an ordinary affiliate name with a bracketed marker appended:

Default [7(1.31) - RSU 123456 2017-02-01]
  • The text outside the brackets is the ordinary affiliate it belongs to (e.g. Default, or My Spouse (R)) for display and filtering purposes. The (R) and the [...] marker may appear anywhere in the name, in any order.
  • The text inside the brackets is the cost pool tag — by convention 7(1.31) - <plan/grant note> <vest date>, one pool per grant.

Because it's a separate affiliate, the pool gets its own self-contained ACB (ACB is tracked per affiliate), so the benefit shares are not averaged into your main holdings. At the same time, it shares its base name with the parent affiliate, so filters and grouping in the output (and the web GUI) fold the pool back under its parent rather than listing it as a wholly separate person.

Enabling it for E*TRADE extraction

The E*TRADE plan PDF extractor can generate the cost pools for you. Pass:

--isolate-benefit-sale-acb

When enabled, each paired benefit sale is split:

  • the retained shares stay in the main affiliate, and
  • the sold shares — plus their immediate sell-to-cover — are routed into a per-grant [7(1.31) - ...] cost pool.

This only has an effect when sell-to-cover pairing is on (it has no effect alongside --no-sell-to-cover-pair, since the cost pool is built around the paired sale).

In the web app, this is the "Isolate Benefit Sale ACB" checkbox in the sidebar of the E*TRADE conversion tool.

Manually specifying a cost pool

You don't need the E*TRADE extractor — any transaction can join a cost pool by putting the tagged name in its affiliate column. To isolate a benefit sale manually, place the vest/acquisition buy and the matching sale into the same tagged affiliate:

security trade date settlement date action shares amount/share currency affiliate
FOO 2017-02-01 2017-02-03 Buy 2 2.00 CAD Default [7(1.31) - RSU 123456 2017-02-01]
FOO 2017-02-02 2017-02-04 Sell 2 1.00 CAD Default [7(1.31) - RSU 123456 2017-02-01]

Your long-standing/retained holdings stay under the plain Default (or whichever) affiliate and keep their own averaged ACB.

Interaction with superficial losses

Isolating the ACB does not take the benefit shares out of superficial loss consideration. Superficial-loss detection in acb spans all affiliates and cost pools of a security, so the program still treats every lot as one inventory when deciding whether a loss is superficial. This is intentional: 7(1.31) governs which shares' cost base you use, not whether the loss rule applies.

Two cases are worth understanding:

  1. Partial sale (retained portion exists). If you keep some of the vest in the main affiliate and the cost pool sells at a loss within the window, the loss is superficial and the denied amount is automatically rolled into the ACB of the main affiliate (the buyer still holding identical shares at the end of the period). The loss is preserved across affiliates even though the cost basis was isolated.

  2. Full sale / sell-out (no retained portion). If the entire vest is sold out of the cost pool (e.g. an ESO same-day sale) at a loss, and you still hold identical shares elsewhere, the loss is still denied (reported gain is 0) — but because the only buyer (the pool) sold out, there are no remaining shares in that buyer to receive the ACB adjustment. acb flags this delta as potentially over-applied and emits a warning, and does not auto-roll the denied loss into the "main" affiliate ACB. In this case the denied loss is not automatically preserved; you may need to add a manual SfLA ACB adjustment to your retained holdings. See Manually Specifying Superficial Losses.

Reporting / identifying the security

7(1.31) requires you to identify the security as the one disposed of in your return for the year. acb keeps the cost pool tag attached to the relevant transactions so it carries through to your reporting. The Tampermonkey / Wealthsimple capital-gains worksheet export folds the 7(1.31) tag into the transaction description (compacted, since that field is limited to 30 characters) so the designation is visible on the worksheet. Confirm with your own filing/advisor exactly where and how you make the designation, as this may or may not be sufficient.

Sources

Disclaimer: This is not tax advice. The 7(1.31) election and the timing/forfeiture of losses can be subtle; confirm the treatment with a qualified tax advisor.

Clone this wiki locally