EquityCompensationAcceptance
objects/transactions/acceptance/EquityCompensationAcceptance.mapping.md
Notes / open questions
These notes are rendered from the mapping document and remain part of the review record.
Join-dependent (downstream), and acceptance is not a transaction. Carta has no acceptance *transaction*: its transaction set covers issuance / exercise / cancellation but not acceptance. Instead Carta folds "the stakeholder accepted" into the security object itself as stakeholderAcceptanceDate. One OCF EquityCompensationAcceptance therefore does not fan out to a Carta tx — it sets a date on the resolved family's security object. The record carries no discriminator, only security_id, so the family is fixed at issuance and an importer must resolve compensation_type from the joined EquityCompensationIssuance first (the two-pass requirement, §2.2 of docs/polymorphic-transaction-routing.md).
date is the only acceptance-specific field. It is the substantive payload — the date the holder accepted — and lands on the resolved family's security object via a per-variant target map: Option → OptionGrant.stakeholderAcceptanceDate, Rsu → RestrictedStockUnit.stakeholderAcceptanceDate. Both sides are calendar dates (OCF Date, Carta Iso8601CompleteCalendarDate), so there is no date-vs-datetime widening to flag.
Sar has no acceptance-date home (primary_targets: null). CSAR/SSAR have no Carta security object with a stakeholderAcceptanceDate (there is no SAR grant object to set the field on), so the acceptance date is unmappable here and date's Sar target is null; the SAR transaction-item identity is still retained through security_id.
security_id is the join key (route_by_property.lookup_by.key) and is also preserved on the resolved Carta aggregate: OptionTransactionItem.securityId plus OptionGrant.securityId for options, RsuTransactionItem.securityId plus RestrictedStockUnit.securityId for RSUs. The SAR path has no retained Carta target because the SAR transaction-item and security definitions were removed.
id, object_type, comments: OCF scaffolding. id is OCF's identifier for the acceptance transaction object; Carta has no acceptance object for it to become (ocf-internal). object_type is OCF's discriminator — neither enum member (TX_EQUITY_COMPENSATION_ACCEPTANCE nor the v2.0.0-deprecated alias TX_PLAN_SECURITY_ACCEPTANCE) corresponds to any Carta type (ocf-internal). comments is free-text OCF metadata with no slot on the Carta security (no-equivalent).
The when: sets partition CompensationType exactly: Option [OPTION, OPTION_NSO, OPTION_ISO], Rsu [RSU], Sar [CSAR, SSAR].
Where the OCF fields go
| Variant | OCF field | Carta destination | Mapping kind | |
|---|---|---|---|---|
| Option | comments | No Carta target | unmappable | Issue ↗ |
| Option | date | rename | Issue ↗ | |
| Option | id | No Carta target | unmappable | Issue ↗ |
| Option | object_type | No Carta target | unmappable | Issue ↗ |
| Option | security_id | rename | Issue ↗ | |
| Rsu | comments | No Carta target | unmappable | Issue ↗ |
| Rsu | date | rename | Issue ↗ | |
| Rsu | id | No Carta target | unmappable | Issue ↗ |
| Rsu | object_type | No Carta target | unmappable | Issue ↗ |
| Rsu | security_id | rename | Issue ↗ | |
| Sar | comments | No Carta target | unmappable | Issue ↗ |
| Sar | date | No Carta target | unmappable | Issue ↗ |
| Sar | id | No Carta target | unmappable | Issue ↗ |
| Sar | object_type | No Carta target | unmappable | Issue ↗ |
| Sar | security_id | No Carta target | unmappable | Issue ↗ |