Skip to content

SAFE Conversion Guide

How to issue SAFEs (Simple Agreements for Future Equity), manage them on the cap table, and convert them into equity when a priced round triggers conversion.


A SAFE is a contractual agreement where an investor provides capital in exchange for the right to receive equity at a future priced round. Unlike convertible notes, SAFEs have no maturity date, no interest rate, and no repayment obligation.

SAFEs convert into shares when a qualifying financing event occurs — typically a priced equity round.


Terminal window
corp cap-table issue-safe \
--cap-table-id $CAP_TABLE_ID \
--investor-contact-id $INVESTOR_CONTACT_ID \
--investor-name "Acme Ventures" \
--safe-type post_money \
--investment-amount-cents 50000000 \
--valuation-cap-cents 500000000 \
--discount-percent 20

All monetary values are in whole cents. The example above represents a $500,000 investment with a $5,000,000 valuation cap and a 20% discount.

Terminal window
curl -X POST http://localhost:8000/v1/entities/$ENTITY_ID/safes \
-H "Authorization: Bearer $CORP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cap_table_id": "'$CAP_TABLE_ID'",
"investor_contact_id": "'$INVESTOR_CONTACT_ID'",
"investor_name": "Acme Ventures",
"safe_type": "post_money",
"investment_amount_cents": 50000000,
"valuation_cap_cents": 500000000,
"discount_percent": 20
}'

Save the returned safe_id for later conversion.


TypeDescription
post_moneyValuation cap applies to the post-money valuation (includes the SAFE pool). The most common type for seed-stage investments. The investor’s ownership percentage is deterministic: investment / valuation_cap.
pre_moneyValuation cap applies to the pre-money valuation (excludes the SAFE pool). Investor ownership depends on total SAFE amounts and the round size.
mfnMost Favored Nation. No cap or discount of its own — automatically inherits the best terms from any subsequent SAFE issued before the priced round.

All three types support an optional discount_percent. When both a valuation cap and a discount are present, the investor converts at whichever produces more shares.


Conversion is triggered by a priced equity round — a financing event where the company issues shares at a fixed price per share. Typical triggers:

  • Series A or later preferred stock issuance
  • Any equity financing that meets the minimum amount threshold defined in the SAFE agreement

SAFEs do not convert on:

  • Additional SAFE issuances
  • Convertible note issuances
  • Revenue events or M&A (these have separate liquidation provisions)

When a priced round occurs, convert each outstanding SAFE into equity.

The system calculates the conversion price as the lesser of:

  • Cap price: valuation_cap_cents / fully_diluted_shares
  • Discount price: round_price_per_share * (1 - discount_percent / 100)

Conversion shares = investment_amount_cents / conversion_price_cents

Terminal window
corp cap-table convert-safe \
--safe-id $SAFE_ID \
--conversion-shares 500000 \
--instrument-id $PREFERRED_INSTRUMENT_ID
Terminal window
curl -X POST http://localhost:8000/v1/entities/$ENTITY_ID/safes/$SAFE_ID/convert \
-H "Authorization: Bearer $CORP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instrument_id": "'$PREFERRED_INSTRUMENT_ID'",
"conversion_shares": 500000,
"holder_id": "'$HOLDER_ID'"
}'

When a SAFE converts, the system performs three operations atomically:

  1. SafeNote status -> Converted: The SAFE record is marked as converted and becomes immutable.
  2. EquityGrant created: A new equity grant is created for the investor, referencing the preferred stock instrument from the priced round.
  3. Position created: The investor’s cap table position is updated to reflect their new shareholding.

After conversion, the investor appears on the cap table as a shareholder with a position in the preferred stock instrument.

Terminal window
corp cap-table show
corp cap-table grants --holder-id $HOLDER_ID

The system prevents conversions that would exceed the instrument’s authorized_units. Before creating the equity grant, the conversion checks:

existing_issued_units + conversion_shares <= authorized_units

If this check fails, the conversion is rejected. To resolve:

  1. Increase authorized units on the instrument (requires a governance action)
  2. Then retry the conversion
Terminal window
# Check current instrument capacity
corp cap-table instruments --cap-table-id $CAP_TABLE_ID
# After governance approval to increase authorized units:
corp cap-table update-instrument \
--instrument-id $PREFERRED_INSTRUMENT_ID \
--authorized-units 15000000

StepCLIAPI
Issue SAFEcorp cap-table issue-safePOST /v1/entities/{id}/safes
List SAFEscorp cap-table safesGET /v1/entities/{id}/safes
Convert SAFEcorp cap-table convert-safePOST /v1/entities/{id}/safes/{id}/convert
Check cap tablecorp cap-table showGET /v1/entities/{id}/cap-table