Cookbook
MFN cascade
Replay favorable terms across all SAFEs that contain an MFN clause when a new instrument is more favorable.
Last updated
Replay favorable terms across all SAFEs that contain an MFN clause when a new instrument is more favorable.
Trigger
A new convertible was issued with terms more favorable than the prior stack.
Call sequence
1. List eligible MFN-bound convertibles
GET /v1/convertibles/mfn_eligibility?trigger={convertible}2. Trigger cascade
POST /v1/convertibles/mfn_cascade { trigger }Idempotency
Cascade idempotent on `trigger`. Replays return the same amendment set.
Webhooks
| Event | Description |
|---|---|
convertibles.amended | One event with the full amendment list. |
Errors
| Status | Code | Description |
|---|---|---|
422 | no_eligible_holders | No outstanding MFN-bound convertibles. |
Architecture
The cascade has two layers:
- Per-SAFE primitive —
POST /v1/entities/{id}/convertibles/{id}/amendamends one SAFE at a time. Single counter-signature, single audit record. Useful for any non-cascade amendment (mutual modification, error correction). - Orchestrator —
POST /v1/entities/{id}/mfn_cascadeiterates the primitive across every eligible SAFE at trigger time. Single call from the caller; per-SAFE results returned together for unified telemetry.
The primitive is the source of truth. The orchestrator's job is fan-out and fan-in.
Eligibility discovery
Before triggering anything, ask Matter which SAFEs would ratchet given the proposed round's terms. This is a dry-run discovery; nothing mutates.
GET /v1/entities/ent_Nq3KcAbc/convertibles/cascade_eligibility?hypothetical_round_id=rnd_seed_2026{
"object": "mfn_cascade_eligibility",
"eligible_convertibles": [
{
"convertible_entry_id": "led_8n9PpkR3",
"in_mfn_window": true,
"proposed_terms_diff": {
"valuation_cap_cents": { "before": 1500000000, "after": 1200000000, "more_favorable": true },
"discount_rate": { "before": 0.20, "after": 0.20, "more_favorable": false }
}
},
{
"convertible_entry_id": "led_2qV5jMxA",
"in_mfn_window": false,
"proposed_terms_diff": {}
}
]
}The in_mfn_window: false SAFE is past its mfn_window_months and is
silently skipped on cascade — the holder no longer has the right to
ratchet.
Cascade dispatch
The cascade is a corporate act. First, generate a Resolution authorising
it (typically kind: priced_round_authorisation at the round close). Then
fire the cascade:
POST /v1/entities/ent_Nq3KcAbc/mfn_cascade
Idempotency-Key: <uuid>
{
"trigger_round_id": "rnd_seed_2026",
"authorizing_resolution_id": "res_LqGcSdRb"
}Response:
{
"object": "mfn_cascade_dispatch",
"per_safe_results": [
{
"convertible_entry_id": "led_8n9PpkR3",
"status": "amendment_sent",
"amendment_document_id": "doc_mfnAmend_001",
"envelope_id": "env_88a1...",
"proposed_terms_diff": { "valuation_cap_cents": { "before": 1500000000, "after": 1200000000 } }
},
{
"convertible_entry_id": "led_2qV5jMxA",
"status": "skipped_outside_window"
}
]
}Each amendment_sent row has emitted an mfn_amendment Document and
opened a SigningEnvelope to the SAFE holder.
Holders sign or reject
Each SAFE holder receives the amendment via the SigningEnvelope. The
signing capacity is convertible_holder. The holder either signs (the
amendment binds, the SAFE's terms are updated) or rejects (the
SigningEnvelope's counterparty_consent_status flips to rejected).
The round still closes either way. MFN was the SAFE-holder's right to claim, not a company obligation to enforce. A rejected amendment leaves the SAFE on its original terms; the rejection is logged on the SAFE's ledger entry. Standard market practice.
This is the load-bearing semantic of the cascade: per-SAFE outcomes diverge without blocking the round close.
What Matter does NOT do
The MFN cascade is purely corporate-financing. Matter does not transfer funds, does not run KYC on the SAFE holder for the amendment (that was done at original SAFE issuance), and does not interact with the holder's bank. The cascade produces signed amendment Documents and updated cap-table state; everything downstream lives elsewhere.
Related
- Issue a SAFE — the per-SAFE issuance flow that establishes the MFN clause this cascade ratchets.
- Issue a priced round — the close package; MFN cascade is typically triggered at close.
- No-op confirmation — applies to SAFEs that are MFN-eligible but past their window.