butterfly

Filemark T2 rollover and reorganization preview

Kind
rollover
Supported tax years
Strict profile
rollover_preview_exact_v1
Payload schema version
6.0.0

Example request

Send this body to POST /api/v1/computations/rollovers/butterfly. It satisfies the strict profile, so it works with or without the payloadContract selector.

{
  "inputs": {
    "share": {
      "classLabel": "Cedar Ridge Manufacturing common",
      "dividendAmount": 120000,
      "inherentGain": 200000,
      "inherentGainDetermined": true,
      "isStockDividend": false,
      "stockDividendPucIncrease": null,
      "stockDividendFmv": null,
      "subsection55_2_3Applies": null
    },
    "safe_income": {
      "postFilingRetainedEarningsAttributable": 0,
      "s55_5_b_adjustments": 0,
      "s55_5_c_adjustments": 0,
      "statutoryPeriods": [
        {
          "status": "private",
          "periodStart": "2019-01-01",
          "periodEnd": "2025-06-30",
          "incomeEarnedOrRealized": 110000,
          "taxFreeSurplusBalance": null,
          "sharesFairMarketValue": null
        }
      ],
      "safeIncomeOnHandGrinds": 5000,
      "safeIncomeDeterminationTime": "2025-06-30"
    },
    "butterfly_checklist": {
      "distributionType": "single-wing",
      "proRataEachPropertyType": true,
      "anyDisqualifyingEvent_55_3_1": false,
      "relatedPartyException_55_3_a": false,
      "distributingCorporationWoundUp": false,
      "allTransfereeSharesRedeemedOrCancelled": true,
      "redemptionWasExchange_51_85_86": false,
      "permittedRedemptionOrWindingUp": true
    },
    "dividend_recipient": {
      "residentCorporationInCanada": true,
      "deductibleUnder112Or138_6": true,
      "purposeOrResultTestMet": "not_determined",
      "s55PartIVTaxPayableForDividend": null,
      "s55PartIVTaxRefundedInSeries": null,
      "s55UnrefundedPartIVProtectedExcessPortion": null,
      "s55PartIVEvidenceReference": null
    }
  }
}

Input cells (34)

Paths are relative to the request’s inputs object; [] marks an array element.

Required says when a cell must be present. Always means every request needs it: the default boundary rejects the call when the cell is omitted or null. Strict means only a request that sends this target’s payloadContract selector needs it. See Run computations for the default boundary.

These cells are everything this target accepts. A member that is not published here, or is sent with the wrong JSON type, fails the call with a 400 naming each failing cell.

Input cells for butterfly
CellTypesRequired
butterfly_checklist.allTransfereeSharesRedeemedOrCancelledboolean | nullstrict
butterfly_checklist.anyDisqualifyingEvent_55_3_1Whether any s.55(3.1) disqualifying event occurred; s.55(3.1) overrides the s.55(3)(b) exception outright, and an unanswered question leaves the exception not established.boolean | nullstrict
butterfly_checklist.distributingCorporationWoundUpboolean | nullstrict
butterfly_checklist.distributionTypestringstrict
butterfly_checklist.permittedRedemptionOrWindingUpboolean | nullstrict
butterfly_checklist.proRataEachPropertyTypes.55(3)(b) pro-rata test: each of cash, business and investment property was distributed in proportion to each transferee's interest.booleanstrict
butterfly_checklist.redemptionWasExchange_51_85_86boolean | nullstrict
butterfly_checklist.relatedPartyException_55_3_aWhether the s.55(3)(a) related-party exception is relied on; absence does not establish the relieving exception.booleanstrict
dividend_recipient.deductibleUnder112Or138_6boolean | nullstrict
dividend_recipient.purposeOrResultTestMetnull | stringstrict
dividend_recipient.residentCorporationInCanadaboolean | nullstrict
dividend_recipient.s55PartIVEvidenceReferencePayer-return and series workpaper reference supporting the Part IV payable, refunded, and protected-excess amounts; required for a non-zero packet.null | stringstrict
dividend_recipient.s55PartIVTaxPayableForDividendPart IV tax payable on this dividend before any refund caused by a dividend paid as part of the series. Required with a positive protected excess portion; enter 0 only when reviewed nil.null | numberstrict
dividend_recipient.s55PartIVTaxRefundedInSeriesPart IV tax refunded as a consequence of a dividend paid as part of the subsection 55(2.1) series. It cannot exceed the Part IV tax payable above.null | numberstrict
dividend_recipient.s55UnrefundedPartIVProtectedExcessPortionThe protected portion of the paragraph 55(5)(f)(ii) excess dividend whose Part IV tax remains unrefunded. This is a DIVIDEND amount, not the tax liability, and cannot exceed the computed excess. Enter 0 when the reviewed protected portion is nil.null | numberstrict
safe_income.postFilingRetainedEarningsAttributableLegacy three-number fallback component; must be zero when statutoryPeriods supplies the paragraph 55(5)(b)/(c)/(d) income build.numberstrict
safe_income.s55_5_b_adjustmentsLegacy three-number fallback component; must be zero when statutoryPeriods supplies the paragraph 55(5)(b)/(c)/(d) income build.numberstrict
safe_income.s55_5_c_adjustmentsLegacy three-number fallback component; must be zero when statutoryPeriods supplies the paragraph 55(5)(b)/(c)/(d) income build.numberstrict
safe_income.safeIncomeDeterminationTimeRequired when statutoryPeriods is non-empty because s.55(2.1)(c) counts income only after 1971 and before the safe-income determination time.null | stringstrict
safe_income.safeIncomeOnHandGrindsRequired when statutoryPeriods is non-empty; enter an explicit 0 when the reviewed on-hand grind is nil.null | numberstrict
safe_income.statutoryPeriods[].incomeEarnedOrRealizednull | numberstrict
safe_income.statutoryPeriods[].periodEndRequired period end. A row that straddles the safe-income determination time must be split so the pre-time income is authenticated separately.stringstrict
safe_income.statutoryPeriods[].periodStartRequired period start, on or after 1972-01-01; split a period that crosses the after-1971 boundary.stringstrict
safe_income.statutoryPeriods[].sharesFairMarketValuenull | numberstrict
safe_income.statutoryPeriods[].statusGoverning paragraph 55(5) status: (b)/(c) tests status throughout the period, while (d) tests foreign-affiliate status at period end.stringstrict
safe_income.statutoryPeriods[].taxFreeSurplusBalancenull | numberstrict
share.classLabelstringstrict
share.dividendAmountnumberstrict
share.inherentGainnumberstrict
share.inherentGainDeterminedboolean | nullstrict
share.isStockDividendboolean | nullstrict
share.stockDividendFmvnull | numberstrict
share.stockDividendPucIncreasenull | numberstrict
share.subsection55_2_3AppliesComplete conclusion after applying subsections 55(2.3) and (2.4), including whether subsection 55(2) would apply if paragraph 55(2.1)(c) were omitted. Required when this is a stock dividend and issued-share FMV exceeds the dividend-related PUC increase; null holds the ordinary paragraph 55(5)(f) and Part-IV outputs.boolean | nullstrict
Strict profile accepted values (22 of 34 cells)

These values apply only when the request sends this target’s payloadContract selector. A cell marked pinned must equal the value shown to satisfy the strict profile. On the default boundary the same cell accepts any value of its published type.

Strict profile accepted values for butterfly
CellAccepted values
butterfly_checklist.distributionTypeone of "none", "single-wing", "split-up"
dividend_recipient.purposeOrResultTestMetone of "yes", "no", "not_determined", null
dividend_recipient.s55PartIVEvidenceReference1 to 2000 characters
dividend_recipient.s55PartIVTaxPayableForDividend0 to 600000000000
dividend_recipient.s55PartIVTaxRefundedInSeries0 to 600000000000
dividend_recipient.s55UnrefundedPartIVProtectedExcessPortion0 to 600000000000
safe_income.postFilingRetainedEarningsAttributable0 to 600000000000
safe_income.s55_5_b_adjustments0 to 600000000000
safe_income.s55_5_c_adjustments0 to 600000000000
safe_income.safeIncomeDeterminationTimedate (YYYY-MM-DD); at most 10 characters
safe_income.safeIncomeOnHandGrinds0 to 600000000000
safe_income.statutoryPeriods[].incomeEarnedOrRealized0 to 600000000000
safe_income.statutoryPeriods[].periodEnddate (YYYY-MM-DD); 1 to 2000 characters
safe_income.statutoryPeriods[].periodStartdate (YYYY-MM-DD); 1 to 2000 characters
safe_income.statutoryPeriods[].sharesFairMarketValue0 to 600000000000
safe_income.statutoryPeriods[].statusone of "resident_non_private", "private", "foreign_affiliate"
safe_income.statutoryPeriods[].taxFreeSurplusBalance0 to 600000000000
share.classLabel1 to 2000 characters
share.dividendAmount0 to 600000000000
share.inherentGain0 to 600000000000
share.stockDividendFmv0 to 600000000000
share.stockDividendPucIncrease0 to 600000000000

Output cells (60)

Paths are relative to this target’s result object in the response.

Output cells for butterfly
CellTypes
share.classLabelstring
share.dividendAmountnumber
share.inherentGainnumber
safeIncomeOnHandnumber
safeIncomeComponents.postFilingRetainedEarningsAttributablenumber
safeIncomeComponents.s55_5_b_adjustmentsnumber
safeIncomeComponents.s55_5_c_adjustmentsnumber
safeIncomeComponents.statutoryPeriodTotalnull | number
safeIncomeComponents.safeIncomeOnHandGrindsnull | number
safeIncomeBasisstring
safeIncomeDeterminationTimenull | string
dividendAmountnumber
amountTestedUnder55_2_1_cnull | number
shelteringSafeIncomenumber
shelterCeilingStatusstring
subsection55_2_3Statusstring
cushionnull | number
excessOverSafeIncomenull | number
partIVTaxPayableForDividendnull | number
partIVTaxRefundedInSeriesnull | number
nonRefundedPartIVProtectedExcessPortionnull | number
partIVEvidenceReferencenull | string
excessAfterNonRefundedPartIVParagraph 55(5)(f)(ii) excess remaining after the authenticated protected DIVIDEND portion is excluded under subsection 55(2); null when that portion is unanswered or when subsection 55(2.3) applies or is unresolved.null | number
dividendExceedsSafeIncomeboolean | null
s55_2_1Conditions.preambleResidentCorporationInCanadastring
s55_2_1Conditions.paragraphAstring
s55_2_1Conditions.paragraphBstring
s55_2_1Conditions.paragraphCstring
checklist.distributionTypestring
checklist.isButterflyboolean
checklist.proRataEachPropertyTypeboolean
checklist.anyDisqualifyingEvent_55_3_1boolean | null
checklist.relatedPartyException_55_3_aboolean
checklist.distributingCorporationWoundUpboolean | null
checklist.allTransfereeSharesRedeemedOrCancelledboolean | null
checklist.redemptionWasExchange_51_85_86boolean | null
checklist.permittedRedemptionOrWindingUpboolean | null
checklist.butterflyExceptionStatusstring
checklist.butterflyExceptionAvailableboolean
traps[].findingCodestring
traps[].filingDispositionstring
traps[].citationKeystring
traps[].severitystring
traps[].titlestring
traps[].bodystring
warnings[]string
warnings[].codestring
warnings[].findingCodestring
warnings[].filingDispositionstring
warnings[].messagestring
warnings[].severitystring
blockingboolean
readyboolean
provisionalboolean
citationsApplied[]string
citations[].keystring
citations[].sectionstring
citations[].descriptionstring
citations[].source_urlstring
citations[].verified_atstring
Filemark | butterfly cells