FeaturesCorporate ActionsSave Valuations and Terms

Save Valuations and Terms

Save pricing, vesting, legends, plans, and stock-class support data. Each create route writes a MongoDB record only — history rows come from the Transfer, Cancel, and Reissue Stock routes.

Records are immutable in TAP. When terms change, create a new record and reference it by ID from the next issuance.

Inputs

IDUsed by
issuerIdEvery create route.
stock_class_idValuations, plans, stock-class adjustments.
vesting_terms_idLater issuance workflows.

Valuation

POST /valuation/create

Show valuation request
{
    "issuerId": "<YOUR_ISSUER_ID>",
    "data": {
        "provider": "Example Valuation Firm",
        "board_approval_date": "2026-04-20",
        "stockholder_approval_date": "2026-04-20",
        "price_per_share": {
            "currency": "USD",
            "amount": "4.20"
        },
        "effective_date": "2026-04-20",
        "stock_class_id": "<YOUR_STOCK_CLASS_ID>",
        "valuation_type": "409A",
        "comments": []
    }
}

Returns: { "valuation": ... }.

valuation_type values

ValueUse for
409AIRS §409A common-stock fair-market valuations (US-only).
COMMON_STOCKGeneric common-stock valuation outside the 409A framework.
FUNDING_ROUNDPreferred-stock pricing for a specific financing round.

Vesting terms

POST /vesting-terms/create

Show vesting-terms request
{
    "issuerId": "<YOUR_ISSUER_ID>",
    "data": {
        "name": "Founder Vesting",
        "description": "Full vesting at the vesting commencement date.",
        "allocation_type": "CUMULATIVE_ROUNDING",
        "vesting_conditions": [
            {
                "id": "founder-start",
                "description": "Fully vested at start date.",
                "quantity": "100000",
                "trigger": {
                    "type": "VESTING_START_DATE"
                },
                "next_condition_ids": []
            }
        ]
    }
}

Returns: { "vestingTerms": ... }.

vesting_conditions[] fields

FieldRequiredDescription
idYesUnique within this set of conditions. Used by next_condition_ids to chain.
descriptionNoHuman-readable explanation.
quantityYesShares released when this condition fires.
trigger.typeYesOCF trigger type — e.g. VESTING_START_DATE, VESTING_SCHEDULE_RELATIVE, VESTING_SCHEDULE_ABSOLUTE, VESTING_EVENT.
next_condition_idsYesIDs of conditions that fire after this one. Empty array marks a leaf.

Legends and plans

RouteSavesReturns
POST /stock-legend/createTransfer restriction text.{ "stockLegend": ... }
POST /stock-plan/createPlan terms for future equity comp.{ "stockPlan": ... }

Stock plan body:

Show stock-plan request
{
    "issuerId": "<YOUR_ISSUER_ID>",
    "data": {
        "plan_name": "Transfer Agent Protocol 2026 Plan",
        "board_approval_date": "2026-01-15",
        "stockholder_approval_date": "2026-01-20",
        "initial_shares_reserved": "1000000",
        "default_cancellation_behavior": "RETURN_TO_POOL",
        "stock_class_id": "<YOUR_STOCK_CLASS_ID>",
        "comments": []
    }
}

Stock class

There is no general stock-class metadata update route. To change a stock class, use:

GoalRoute
ReadGET /stock-class/id/:id with issuerId body
CountGET /stock-class/total-number with issuerId body
Change authorized sharesSee Adjust authorized shares on the Transfer, Cancel, and Reissue Stock page — those are history-producing routes that live with the rest of the corporate-action flows.

Read back

RecordRoute
ValuationGET /valuation/id/:id
Vesting termsGET /vesting-terms/id/:id
Stock legendGET /stock-legend/id/:id
Stock planGET /stock-plan/id/:id

Next: Save Equity Compensation and Convertibles.