← Manual home

V7 · The Deal Room

From a counterparty found in market search to an active contract — proposals, negotiation, terms, signing and the contracts register.

You are here
1Setup
→
2Strategy
→
3Deal
→
4Nominate
→
5Market day
→
6Settle
→
7Statement

1. Deal types and topologies

Before the screens, the cast. Every deal on this platform is a promise between two sides about energy (and sometimes about money that follows the energy price). Three kinds of company show up:

Plain name Platform term What they do
A power plant owner IPP (independent power producer) Owns a generator site — wind, solar, and so on — and sells its output
A factory / consumer Off-taker (see off-taker site) Uses electricity at a site and wants a deal that covers some of that use
A middle player Trader (see trader pool) Buys and sells power (or power hedges) as a book — not the plant, not the factory

A deal is the commercial handshake that becomes a contract once everyone agrees and signs. Until then you are usually looking at a proposal — an offer that can still be accepted, declined, or answered with a different shape.

Every deal also sits in one cell of a small matrix:

  1. Who sells to whom — the deal type
  2. Physical or virtual — the instrument (which product you are using) (V0 §3.2 · V0 §5)

Knowing your cell up front tells you which wizard steps you’ll meet, which terms exist, and how settlement will treat you.

1.0a Physical vs virtual — in plain words

Neither word is a quality judgment. They are two different products.

Figure 1.0 — Four “who sells to whom” cells (deal types)
Direct plant → consumer
IPPthe plant
→sells to
Off-takerthe factory
=OFFTAKER_IPP
Plant sells into a book
IPPthe plant
→sells to
Traderthe book
=TRADER_IPP
Book supplies a consumer
Traderthe book
→sells to
Off-takerthe factory
=OFFTAKER_TRADER
Book to book
Trader Aseller book
→sells to
Trader Bbuyer book
=TRADER_TRADER
Deal type Physical (plain English) Virtual (plain English)
IPP → Off-taker (OFFTAKER_IPP) The classic wheeling deal — plant output allocated toward a factory A direct price hedge against the buyer’s Eskom bill (CfD = contract for difference)
IPP → Trader (TRADER_IPP) The trader buys the plant’s output into its portfolio A wholesale CfD; the trader carries the price risk
Trader → Off-taker (OFFTAKER_TRADER) The trader supplies a consumer from its portfolio A retail CfD, often using the WER (wheeled energy refund) in the price reference
Trader → Trader (TRADER_TRADER) A mid-chain portfolio deal between books A mid-chain financial hedge between books

1.0b Topology — the path on the network

Topology is simply where each site plugs into the grid and whether the deal crosses boundaries. It decides losses and network charges (V0 §1, V2 §8.3). On the proposals list you see a seller→buyer chip chain; an “Eskom” hop appears when the deal crosses municipal boundaries. Virtual deals need both parties Eskom-connected.

You do not pick topology as a fashion choice — it falls out of the two sites you are pairing.

1.0c Contract type — the shape of the energy promise

For physical deals, contract type is the answer to: when the wind dies or the sun dips, who promised what?

Think of a day as a timeline of megawatts. Generation (what the plant actually made) is the shaded band. The promise is the bold line — what the contract said the buyer would get, or pay for.

The buyer picks a contract type from the shapes the seller supports (a wind site cannot credibly offer a flat 24-hour block). That choice also prunes the terms: an AS_GENERATED deal has no shortfall terms to argue about; a TOP deal has no spill argument in the same way.

Figure 1.1 — Six contract types as day-shapes (illustrative)
What the plant produced What the contract promised / billed

AS_GENERATED

promise = production 00h24h

In plain words: whatever the plant makes, the buyer takes (subject to the path). There is no guaranteed shape. Example: a wind farm on a gusty day — the buyer rides the weather with the plant.

FIRM

guaranteed profile 00h24h

In plain words: the seller promises a profile. If the plant under-delivers, the seller covers the shortfall (how is a later term). Example: “you will get this daytime shape every weekday” — even if the panels underperform, the promise still stands commercially.

CAPPED

as-generated up to a cap 00h24h

In plain words: like as-generated, but once production hits an agreed ceiling, extra output is not part of this deal (it may spill or go elsewhere). Example: “take my solar up to 2 MW — anything above that is not yours under this contract.”

BASELOAD

flat block, day and night 00h24h

In plain words: a steady slab of power around the clock — same height at 03:00 and 15:00. Example: a buyer who needs a constant 1 MW backbone, not a solar “hump.” Wind and solar sellers rarely offer this unless they can back it somehow.

TOP (take-or-pay)

pay for at least this much 00h24h

In plain words: the buyer pays for an agreed minimum volume whether they use it or not — “take it or pay for it anyway.” Example: a cold-store commits to 500 MWh/month; a quiet production week does not shrink the bill below that floor.

SHAPED

TOU steps (peak / standard / off-peak) 00h24h

In plain words: the allocation follows a time-of-use (TOU) shape — different amounts in peak, standard, and off-peak windows. Example: more MWh in expensive peak hours, less overnight, matching how the buyer’s tariff or load actually works.

Contract type The promise, one sentence Everyday analogy
AS_GENERATED Buyer takes whatever the plant produces — no shape guarantee “Share of the catch” — you get what the nets bring in
FIRM Seller guarantees a profile and covers shortfalls A booked delivery slot — if the truck is light, the seller still owes the load
CAPPED As-generated up to a volume / MW ceiling An all-you-can-eat buffet with a plate limit
BASELOAD A flat block every hour of the day A standing order for the same loaf every morning and evening
TOP Buyer pays for a minimum whether consumed or not A gym membership — you pay the month even if you skip weeks
SHAPED A TOU-shaped allocation profile A meal plan with bigger portions at dinner than at midnight

Note. Contract type is about the energy shape promise on physical deals. Price structures (fixed c/kWh, market-linked, and so on) are separate terms — taught later in this volume and in settlement.

Same-instrument disagreement at proposal stage is still a structured decline and a re-propose (V7 §3.5d) — not a price counter-offer loop. When the other instrument suits you better and it is available for the pair, you can answer in that instrument instead of refusing.

1.1 When each instrument is available to you

The search map and proposal detail do not guess which instrument is “better.” They only answer whether each instrument is usable at all for the pair:

Instrument Available when Button / note
Physical There is a resolvable wheeling path between the two connection points (network classification + applicable wheeling charges) Offered when the path exists
Virtual Both sides are Eskom-connected and VWA-ready (registration and related readiness checks) Offered when eligibility passes

Where the platform cannot confirm that an instrument is usable, it will not put a green light on that button. In plain terms: we only switch a Physical or Virtual option on when we have already checked the facts and can stand behind the answer. If we have not finished those checks — or we know we cannot finish them for this kind of pair — the button stays off, and you will see a short “we can’t confirm this” reason.

Two common cases work that way today:

Important distinction: “we can’t confirm” is not the same as “this deal is impossible.” It only means this system will not offer an instrument it cannot vouch for. The commercial idea might still exist offline; what you will not get here is a button that claims the path or the registration is ready when we have not proved it.

On an open proposal, a related courtesy can appear when the other instrument is confirmed for the same pair. You might see one plain line — for example that the pair is also VWA-eligible — with a pointer to where you can look next. That line is only a fact about availability. It does not quote Rand, percentages, or a recommendation about which instrument you ought to choose. Price and “which deal is better for you” belong later, on the Instrument step (§3.4c), not here.

One story. Availability is here (§1.1). Side-by-side money and the choice live on compose Instrument (§3.4c). The same comparison line on review Gaps, and the Decide cross-instrument counter, are §3.5b and §3.5e.

Where this is taught. How each contract type and topology cell settles — losses, charges, adjustments per shape — is V8 · Settlement. This volume gets you to a signed contract.

2. Finding a counterparty

Counterparties are not discovered from the IPP Sites or Off-taker Sites directory rows any more. You find them on the Strategy workbenches — after you already know which book you are shopping for (this plant, this factory, or this trader pool).

Sites and pools themselves are still set up under Entities (V2 §3 · V2 §4 · V2 §5). The search for a deal partner happens one level deeper: open that entity → Strategy → the sell or buy workbench that matches your seat.

Your seat Where you look What you are shopping for Taught in
IPP (generator site) Strategy → Sales (Workbench) Off-takers and traders who can absorb unsold generation V4 §6 · Sales
Off-taker (consumer site) Strategy → Procurement (the Procurement Desk) Generators and traders who can displace grid purchase V3 §13.2 · Procurement
Trader (pool) Strategy → Simulations → Sell or Buy tab Sell: offtakers / traders for surplus · Buy: IPPs / traders for shortfall V3 §8 · Simulations

In every case the pattern is the same: rank candidates by shape fit → simulate terms safely → Build Proposal when the deltas look right. Nothing is sent to the other party until you deliberately promote a draft and later send it (§3).

2.1 Three doors into the market

IPP — Strategy → Sales

Open the generator site → Strategy → Sales. The Sales desk ranks off-taker sites and trader pools under Who could absorb the gap, by shape fit against this plant’s unsold profile — the hours that still earn R 0. You pick a card, check the seeded terms, Simulate Sale, read the seller deltas and the verdict against holding for the market, then Build Proposal when you want a private draft.

Where this is taught. Layout, fit scores, simulate versions, and promote: V4 §6. Dashboard panels that point you here when Unsold is high: V4 §12.

Off-taker — Strategy → Procurement

Open the off-taker site → Strategy → Procurement. The Workbench ranks eligible generators (and traders, where applicable) against the site’s remaining grid band — fit first, bill impact after you Simulate purchase. Build Proposal opens the buyer proposal studio with suggestions filled from that simulation.

Where this is taught. Full buy walk-through: V3 §13.2. How the off-taker Overview feeds the same supply-mix picture: V3 §13.

Trader pool — Strategy → Simulations (Buy / Sell)

Open the trader pool → Strategy → Simulations. This is the portfolio what-if desk for one book:

Pick a candidate, enter terms (the same commercial forms as Sales / Procurement), Simulate Sale or Simulate Purchase, compare baseline vs variant KPIs, then Build Proposal to promote evidence into a draft (V3 §8.6).

Careful. This Simulations tab is not the org-wide Scenario Lab (V3 §16). Here you only ask: what if this pool signed this one contract?

2.2 Who you can see, and who can deal

Visibility rules are the same whichever door you use:

2.3 From candidate to draft proposal

On Sales, Procurement, and Simulations alike, Build Proposal (after a successful simulation you can stand behind) creates a draft proposal with you as initiator. You land in the matching proposal studio — seller studio from Sales / Sell, buyer studio from Procurement / Buy — with the simulation’s evidence one click from every section (§3.4 · §3.4a).

Nothing has been sent yet. The draft is yours to complete; your counterparty cannot see it until you send.

Follow along (IPP). Seat: IPP 2 (ipp_2@webill.net). Path: IPP Sites → IPP2 Atlantis Wind → Strategy → Sales → Workbench. You should see Who could absorb the gap ranked by shape fit against the unsold profile. Simulate a buyer, then Build Proposal only if the seller deltas tell one story.

Follow along (Off-taker). Seat: Off-taker C. Path: OffTaker Sites → your site → Strategy → Procurement → Workbench. Wait for the spinner; confirm eligible generators on the left; Simulate purchase, then Build Proposal from the version you prefer (V3 §13.2).

Follow along (Trader). Seat: trader_1@webill.net. Path: Trader Pools → T1 Renewables Pool → Strategy → Simulations. Use Sell for surplus buyers or Buy for gap fillers (V3 §8).

Data. full_demo · seed 42 · stage S03/S04 · sealed 2026-07-15.

3. Proposals — the handshake

A proposal is one organization’s offered terms to another: non-binding, expiring, and deliberately asymmetric — each party fills in only its own side of the sheet. Accepting one creates the draft contract.

3.1 The lifecycle

A proposal has exactly seven statuses. They are enum-exact on the record (DRAFT, PENDING, ACCEPTED, DECLINED, EXPIRED, WITHDRAWN, SUPERSEDED) and appear the same way on both parties’ Proposals lists — with two visibility rules called out below.

Happy path

Happy path — compose, send, accept
DRAFT
→send
PENDING
→accept
ACCEPTED
→creates NEGOTIATING PPA

Accepting leaves Proposals and opens Negotiations for both parties (§4). The status on the proposal row stays ACCEPTED; the live work moves to the linked PPA.

Branches from PENDING

Ways a sent offer can leave PENDING without a deal
PENDING
Counterparty: DECLINED Clock: EXPIRED Initiator: WITHDRAWN Replace: SUPERSEDED

DECLINED — receiver rejects (optional reason / findings). EXPIRED — hourly job flips overdue PENDING past expires_at (§3.2). WITHDRAWN — sender pulls the offer. SUPERSEDED — a newer proposal (re-propose or other-instrument counter) replaces this one — see §3.5d and §3.5e.

Return paths

How closed or paused offers can come back
EXPIRED
→renew
PENDING
Also: WITHDRAWN
→reactivate
PENDING DECLINED or EXPIRED
→re-propose
DRAFT (source → SUPERSEDED )

Renew and reactivate keep the same proposal row and pick a fresh validity window. Re-propose clones into a new DRAFT and marks the old row SUPERSEDED so the lineage stays linked.

What each status means

Status Plain meaning Who typically causes it What you see
DRAFT You are still composing. Not a sent offer. Initiator (Build Proposal / studio / re-propose) Initiator only — counterparty cannot see the row
PENDING Offer is live; clock is running. Initiator Send (or renew / reactivate) Both parties — Sent vs Received
ACCEPTED Receiver accepted; draft PPA created and linked. Counterparty Accept Both parties; row leaves the open Proposals focus for Negotiations
DECLINED Receiver rejected the offer. Counterparty Decline Both parties (originator list updates live)
EXPIRED Validity window ended with no accept/decline/withdraw. System (hourly) or explicit expire Both parties
WITHDRAWN Initiator cancelled before accept. Initiator Withdraw (from DRAFT or PENDING) Initiator always. Counterparty only if it had been sent (see visibility)
SUPERSEDED Replaced by a newer proposal in the same conversation thread. Re-propose or other-instrument counter Both parties; lineage banner links prior ↔︎ successor

The distinction readers get wrong. A DRAFT is invisible to the other side. Build Proposal opens a compose studio with suggestions filled in as suggestions, not as a sent offer — off-taker Procurement → buyer studio, IPP Sales → seller studio, or trader-pool Simulations → Buy studio / Sell studio. Nothing reaches the counterparty until you deliberately Send (to seller or to buyer, depending on seat). Until then they cannot see the row, the terms, or your negotiating brief.

Visibility rules

Situation Initiator sees Counterparty sees
Unsent DRAFT Yes No
DRAFT withdrawn before send Yes (WITHDRAWN) No — they never knew it existed
PENDING (sent) Yes Yes
Sent offer then WITHDRAWN Yes (WITHDRAWN) Yes (WITHDRAWN) — same status both sides
DECLINED / EXPIRED / SUPERSEDED / ACCEPTED Yes Yes

Sending stamps the start of the validity window. That stamp is what lets a later WITHDRAWN stay on the counterparty list — so a pull-back after send reads as withdrawn on their side, not as a silent disappearance.

Action gates — who may change status

Each action is refused unless the proposal is in an allowed status and the acting organisation is on the right seat (initiator vs counterparty). The UI hides or disables the button when the gate fails; the server enforces the same rules.

Action From status(es) To status Who What it does
Create / Build Proposal — DRAFT Initiator Opens compose (studio or list). Suggestions are not a sent offer.
Send DRAFT PENDING Initiator Makes the offer visible; starts the validity window; readiness checklist must pass.
Accept PENDING ACCEPTED Counterparty Creates/links a negotiating PPA from agreed terms; both sides move toward Negotiations.
Decline PENDING DECLINED Counterparty Rejects the offer; optional reason / structured findings. Originator sees DECLINED too.
Withdraw DRAFT or PENDING WITHDRAWN Initiator Cancels without accept. Unsent drafts stay private; sent offers show WITHDRAWN to both.
Reactivate WITHDRAWN PENDING Initiator Re-sends the same proposal with a fresh expiry window.
Renew PENDING or EXPIRED PENDING Initiator Extends / restarts the clock. Limited (default 3 renewals) — see §3.2.
Expire PENDING (past expires_at) EXPIRED System (hourly) Auto-flip. Receiver working notes (review drafts) are discarded on expire.
Re-propose DECLINED or EXPIRED new DRAFT (source → SUPERSEDED) Either party Clones terms into a fresh draft; keeps lineage via superseded_proposal_id.
Supersede (counter / replace) PENDING (and some closed states, per path) SUPERSEDED Party running re-propose or other-instrument counter Marks the prior row replaced; successor is the live offer (§3.5e).

Not status actions (same record, same status). Editing terms on a DRAFT or PENDING, accepting suggestions in a studio, and staging a private review draft while you are the receiver do not change status — they change terms or private notes only. Switching Physical ↔︎ Virtual on a DRAFT withdraws the old draft and creates a new DRAFT (instrument switch), rather than editing proposal_type in place.

Terminal vs recoverable. ACCEPTED is the commercial hand-off (work continues on the PPA). SUPERSEDED stays as history. DECLINED, EXPIRED, and WITHDRAWN are closed for that row but recoverable via re-propose, renew, or reactivate as gated above.

3.2 How long a proposal stands

The sender chooses how long their offer stands when they send (and again when they renew or reactivate). The dispatch footer shows a resolved summary — “Valid until 12 Aug 2026 — 14 days” — not a bare date picker. The prefilled default is 14 days; the allowed window is 3–90 days. Once expires_at passes, the hourly background trigger (V1 §6) flips overdue PENDING proposals to EXPIRED. The initiator may renew an expired (or still-pending) proposal up to 3 times — the modal shows “Renewals: N of 3 used” — and reactivate a withdrawn one, each time picking a fresh window.

The deadline is promoted into the modal header pill row so the receiver sees how long they have before they dig into the terms. Inside the last 20% of that window you get a near-expiry warning — on a 14-day offer that is roughly the final three days — so you can ask the sender to renew before your working notes are discarded (§3.5a).

Careful. If the other side edits their terms after you have reviewed them, acceptance is blocked until you re-read the updated fields — you can’t be signed up to a price you never saw. The modal names what changed and both values; acknowledge, re-read, then accept.

3.3 The list

Proposals (/org/deals/proposals — the first Deals tab, in lifecycle order) shows every open conversation — accepted proposals move on to Negotiations. There are no stat cards: one line above the table says what the tab is for, and a New proposal button opens the studio for your seat (the Desk for a trader, Procurement for an off-taker, Sales for an IPP). The badge on the tab counts received offers waiting for your decision — a sent offer waits on the counterparty, so it is not on your badge. Columns:

Column What it shows
Proposal the reference (PROP-…), the Physical (green) or Virtual (blue) pill, Sent or Received, and your message
Parties the deal-type role pair (e.g. Offtaker → IPP) with your side highlighted, and the counterparty’s name
Status Draft · Pending · Declined · Expired · Withdrawn · Superseded (a Draft says only you can see it)
Expires date; for Pending a colour-coded countdown (expires in 3 days → amber, minutes → red), plus renewed Nx
Open the one way in — the row and its Open button both open the proposal; accept, decline, withdraw and renew live inside it

As the initiator you always see your own Drafts and Withdrawns. Your counterparty never sees an unsent Draft, and never sees a Withdrawal of an offer that was never sent — but a sent offer that you withdraw stays on their list as Withdrawn (§3.1 visibility). Declines and expiries show on both sides. The list is live — when the other side accepts, declines, or you withdraw a sent offer, both parties’ lists refresh without a manual reload.

3.4 Compose in the buyer proposal studio

When you Build Proposal from a physical Procurement simulation, you open a full-page proposal studio — not the list modal: a checklist of sections on the left and one section at a time on the right. Evidence swaps the section for the simulation behind the draft, and Explanations opens field notes and suggestions in a drawer. This is the home for physical buyer composition on an off-taker site. A virtual simulation opens the four-stage virtual studio instead (§3.4b).

Buying for a trader pool is the same kind of studio — evidence one click from each section, public asks vs private limits, readiness-gated Send to seller — but the seat, deal type, and a few stages differ. That path is §3.4e · Trader Buy Proposal Studio; do not use this offtaker chapter as the walkthrough when you promoted from Simulations.

Stages (reading order).

# Stage What you decide
0 Instrument Physical or virtual — and why (§3.4c)
1 Evidence Supply mix, fit chart, impact, candidate — same charts as the workbench
2 Shape Contract type + TOU split (when SHAPED)
3 Price protection Cap, ceiling, break-even ladder
4 Risk Curtailment, spill, shortfall (fields prune by contract type)
5 Green Scope 2 method
6 Public asks Capacity, term, escalation — sent with the proposal
7 Private limits Walk-aways on your brief — never sent
8 Review & send What the seller receives, readiness checklist, expiry, Send to seller

Suggestions. Many fields arrive with a suggested value, a one-line rationale, and Accept / Adjust / Why?. Accepting records that you took the suggestion (source: derived); Adjusting records your override while keeping the original suggestion for the audit trail. Either way it is a decision you are recorded as making — not a silent autofill.

Asks vs limits. Stage 6’s public asks become part of what the seller sees. Stage 7’s walk-aways stay on your private brief; stage 8’s What the seller receives lists only public terms — search it for a walk-away and you will not find one.

Where decisions land. Stages 2–5 write into the draft’s physical_terms (autosave on every change). Stage 6 writes requested_joint_terms (public asks). Stage 7 writes only your negotiating brief. Stage 0 sets proposal_type (Physical vs Virtual). Nothing reaches the counterparty until stage 8’s Send to seller.

Quick questions. If the simulation could not decide a site preference or a low-confidence term, a sky panel (A few quick questions) appears above the stages. Those buttons are decisions — e.g. spill treatment is saved on the off-taker site once; shortfall / curtailment answers write into physical_terms (and stamp the brief). They are not decorative.

The rest of this section walks each stage field by field. Term meanings in settlement language stay in §4.7; here the focus is what you set in the studio and what the draft carries.

Stage 0 — Instrument

Job. Choose Physical PPA or Eskom Virtual PPA before you fill shape and price. Deep comparison rules and materiality live in §3.4c.

Control / panel What it means In the draft
Own verdict (Physical / Virtual) What this deal is worth to you each way, on a stated volume basis Informs your choice; numbers stay on the brief’s instrument-comparison evidence
Counterparty estimate What we think it is worth to them from disclosed terms only Same evidence fragment — never treated as their private walk-away
Differences Matching risk, delivery risk, time-to-first-flow — not folded into Rand Listed for you; not separate proposal fields
Choose Physical / Virtual Sets the instrument for this draft proposal_type — switching creates a new draft and withdraws the old one

Example. Both instruments available; physical saves you more Rand/yr on the stated MWh, but virtual is faster to first flow. You stay on Physical because the factory needs wheeled displacement this year — stage 0 records Physical; stages 2–5 then show physical fields only.

If only one instrument is possible for the pair, the stage collapses to one line (same wording as the search modal) and you continue.

Stage 1 — Evidence

Job. Confirm you are pricing the deal you simulated — no editable commercial fields here.

Panel (left / shared) What it shows In the draft
Supply mix Your book’s Grid / Wheeled / Virtual stack (24h) — the band sellers were ranked against Snapshot from the promoting simulation / book; not re-typed into terms
Fit chart How the candidate’s shape overlays your residual grid need Fit score and charts stay as composition evidence
Impact Simulated deltas (saving, green coverage, over-contract, …) Same simulation results that justified Build Proposal
Candidate card Generator (or trader) identity, connection, capacity, prefs Parties already on the proposal (seller_generator / trader)

Example. Impact shows +R 1.2m/yr saving and green coverage up 8 pp with little over-contract → you proceed to Shape. If impact looks wrong, go back to Procurement and re-simulate; do not invent terms on a bad sim.

Stage 2 — Shape

Job. Pick the delivery profile. That choice gates which Risk fields appear later.

Field What it represents Example In the draft
Contract type (Buyer) Delivery shape the seller must support: as-generated, capped, take-or-pay, firm, baseload, shaped, … Cold store that can follow solar → prefer AS_GENERATED or CAPPED; 24/7 process needing a block → FIRM / BASELOAD physical_terms.contract_type — seller later collapses their price card to this row
TOU allocation (Buyer; only if SHAPED) Peak / standard / off-peak % of contracted energy — must sum to 100% 40% peak / 35% standard / 25% off-peak for a day-shift factory physical_terms.tou_allocation — settlement allocates shaped energy by these shares

Visibility. TOU controls appear only for SHAPED. Other types hide them.

How this shows later. Stage 8’s seller-eye preview lists the contract type. On accept, the negotiating PPA inherits the shape; wrong shape vs plant support surfaces as infeasibility when the seller confirms.

Stage 3 — Price protection

Job. Set how high you will pay — public protection on the offer, not your private walk-away (that is stage 7).

Field What it represents Example In the draft
Cap price (c/kWh, Buyer) Maximum energy price you will pay under capped / floor-cap style structures Grid all-in ~140 c/kWh after wheeling → cap 128 c/kWh (leave headroom) physical_terms.cap_price_ckwh — sent; seller sees it
Price ceiling (c/kWh, Buyer) Absolute upper bound on the energy charge in a two-part tariff (energy + capacity charge) Two-part quote: energy 90 c/kWh + capacity charge; ceiling 110 c/kWh so the blend cannot runaway physical_terms.price_ceiling_ckwh — sent

Suggestions. Cap often arrives from break-even vs your site’s grid rate less wheeling, with a cushion (V3 §13.2.1). Accept stamps the brief source: derived; Adjust keeps the suggestion for audit and writes your number.

Draft vs brief. The numbers on this stage are asks on the proposal. Your walk-away (e.g. “I leave above 135”) belongs on stage 7. If you set the public cap equal to the walk-away, a disclosure warning fires — you are about to show your floor.

Stage 4 — Risk

Job. Who absorbs curtailment, spill / under-consumption, and delivery shortfall. Embeds prune by contract type:

Contract type Spill & excess Shortfall & delivery
AS_GENERATED Hidden Hidden
CAPPED Shown Hidden
TOP Hidden Shown
Firm / baseload / shaped (etc.) Shown when applicable Shown when applicable

Buyer-owned controls (sky Buyer chip) are the ones you must decide; joint fields may also be editable in compose. Seller-owned subfields stay visible for context but are not your pencil.

Curtailment (physical_terms.curtailment_terms)

Field (buyer focus) What it represents Example In the draft
Buyer-caused remedy When you curtail take-off, how the seller is made whole Rare shutdowns → DEEMED (you still pay); frequent planned outages → MAKEUP curtailment_terms.buyer_caused — sent
Grid-operator / seller-caused (context) Who bears grid or seller curtailment Often left as suggested joint defaults until negotiation Written if you edit a joint-editable control; otherwise seller’s sheet

Spill & excess (physical_terms.spill_excess_terms — when visible)

Field (buyer focus) What it represents Example In the draft
Under-consumption treatment What you owe when you use less wheeled energy than committed Flexible load → NO_PENALTY; must defend ToP → TOP_APPLIES spill_excess_terms.under_consumption_treatment — sent
Spill treatment / banking / excess disposal (context) How surplus energy is handled Often aligned with your site spill preference (Q&A or wizard) Site preference may already be on the off-taker; proposal embed carries deal-level spill rules you edit

Shortfall & delivery (physical_terms.shortfall_terms — when visible)

Field (buyer focus) What it represents Example In the draft
Compensation method How you are made whole if the seller under-delivers Prefer cash → LIQUIDATED_DAMAGES; need electrons → REPLACEMENT_ENERGY; shrink the deal → CAPACITY_REDUCTION shortfall_terms.compensation_method — sent
Reporting How often / on what basis the seller reports performance Monthly self-report vs metered attestation shortfall_terms.reporting
Excuse buyer curtailment Whether your curtailment is excused from shortfall maths Usually yes if buyer-caused has its own remedy shortfall_terms.excuse_buyer_curtailment
Warranty / deadband / penalty caps (context) Seller performance envelope Seller fills many of these; you read them in review Seller-coded subfields

Example. You chose CAPPED on stage 2 → shortfall block hidden, spill block shown. You set under-consumption to NO_PENALTY and buyer-caused curtailment to DEEMED. Draft carries those two; firmness warranties stay out of scope for this shape.

Stage 5 — Green

Job. How you account for renewable attributes.

Field What it represents Example In the draft
Scope 2 method (Buyer) GHG accounting for purchased electricity — market-based (contractual instruments / RECs) vs location-based (grid average) Corporate RE100 programme → MARKET; no certificates path → LOCATION physical_terms.rec_terms.scope2_method — sent
Registry / bundling (context) Which REC registry and whether certificates travel with energy Seller usually owns registry; you confirm Scope 2 fits your audit rec_terms.* as edited

Green coverage on the evidence column is the strategy KPI; this stage is the contractual accounting choice that settlement and reporting will use.

Stage 6 — Public asks

Job. Size and commercial envelope the seller will see. These are joint asks on requested_joint_terms, not private limits.

Field What it represents Example In the draft
Capacity (MW) Indicative contracted capacity you want Simulate used 5 MW → ask 5 (or 3 if you are sizing down) requested_joint_terms.capacity_mw
Allocated energy (MWh/yr) Annual energy shape target (baseload / shaped deals) 12 000 MWh/yr for the Midrand DC allocated_energy_mwh_yr
Term (years) How long you want the PPA to run 10 years to match board approval term_years
Start date When delivery / settlement should begin First day of next FY start_date
Escalation mechanism How price grows (CPI, fixed %, none, …) CPI with a board-approved band escalation_mechanism
Escalation rate (%) Numeric rate when the mechanism needs one 1.5 for CPI-minus style deals escalation_rate_pct
Settlement frequency How often a settlement period closes Monthly vs daily settlement_frequency
Take-or-pay minimum (MWh/yr) The least energy a year you would pay for whether or not you take it Only if you intend take-or-pay discipline top_min_volume_mwh_yr
Capped volume limit (MWh/yr) Annual ceiling for capped shapes Align with a capped contract type capped_volume_limit_mwh_yr

Example. Ask 5 MW · 10 years · CPI · start 2027-01-01. Stage 8 preview shows capacity and term; the seller responds against those public numbers. Your walk-away capacity (e.g. leave below 3 MW) stays on stage 7.

Stage 7 — Private limits

Job. Record what you will not cross. Never sent. Banner on the stage says so; stage 8’s seller-eye preview omits every row here.

Control What it represents Example In the draft
Walk-away Hard line — you walk if the deal crosses it Cap walk-away 135 c/kWh; capacity walk-away 3 MW Brief position walk_away for that field key
Min / max acceptable Soft band around your target for your own coaching Target cap 128; min 120; max 132 Brief min_acceptable / max_acceptable
Target (read-out) Preferred outcome from advice / Accept 128 c/kWh Brief target / accepted suggestion

Typical keys: cap_price_ckwh, price_ceiling_ckwh, contracted_capacity_mw. Setting a public stage-3 cap equal to the walk-away triggers the disclosure warning (COUNTER / OFFTAKER §5).

Stage 8 — Review & send

Job. See every term the seller will receive, clear readiness, choose how long the offer stands, then Send to seller.

Panel / control What it represents In the draft / on send
What the seller receives Every term you set, in the checklist’s order — Delivery profile, Price protection, Risk, Green, then Volume, term and settlement (the shared asks) — each group with Edit back to its section Built from the same fields the sections edit, so it cannot drift from stages 2–6; walk-aways absent by design
Readiness — missing / incoherent Hard blockers (required buyer fields for this contract type, TOU sum, …) Send stays disabled until clear
Readiness — ack required Warnings you may own (knowingly thin patterns, etc.) — see §3.4.1 Checkbox unlocks Send
Expiry How long the PENDING offer stands (default 14 days; 3–90) expires_at on send; shown as “Valid until … — N days”
Send to seller Dispatch Status DRAFT → PENDING; seller can open review

How the list reads. Only the terms you set appear — the buyer-set and jointly negotiated ones. Terms the seller sets (their availability guarantee, spill disposal, seller-caused curtailment) are theirs to fill when they respond, so they are not listed as yours. A term you have not set reads Not set; a section you left wholly blank, such as untouched termination terms, reads as one Not set line; and an optional device you have not switched on (Upside sharing device, Volume strike device) shows only that it is off.

Example. What the seller receives shows As generated · cap 128 c/kWh · 5 MW · 10 years · CPI. Readiness green → expiry 14 days → Send. Your 135 c/kWh walk-away never appears.

Follow along (fields). Seat: Off-taker C. Path: Procurement → simulate → Build Proposal. Walk stages 2–8: set contract type, accept or adjust cap, answer any quick questions, enter public asks, set one walk-away on Limits, confirm it is absent from What the seller receives on stage 8, then leave the draft unsent (or send in a sandbox).

3.4a Compose in the seller proposal studio

When you Build Proposal from a physical Sales simulation, you open the Sales proposal studio: a checklist of ten sections on the left and one section at a time on the right, organised around the price card. Evidence swaps the section for the simulation behind the draft, and Explanations opens field notes and suggestions in a drawer. This is the home for physical seller composition on a generator site. A virtual Sales simulation opens the four-stage seller virtual studio instead (§3.4d) — same stage spine as the buyer virtual compose (§3.4b), but organised around the strike ladder, not a per-contract-type price card. On the physical path the buyer has not chosen a shape yet, so you quote one price per supported contract type. Every priced row is visible to the buyer; your floors stay on the private brief.

Selling from a trader pool is the same kind of studio — price card, warranty / spill / green, public asks vs private floors, readiness-gated Send to buyer — but the seat, deal type, and a few stages differ. That path is §3.4f · Trader Sell Proposal Studio; do not use this IPP chapter as the walkthrough when you promoted from Simulations.

The header. The studio’s one title is Sales proposal, with the parties under it (IPP 1 (Seller) → SIM Canal Walk Load · from IPP1 Sandton Solar) and the draft reference once, on the line below. That line also says how drafts behave: edits save as you make them, nothing reaches the counterparty until you send, and you can resume from Commercial → Open proposals. Keep draft & exit takes you back to Commercial with the draft kept; it refuses while an edit has a save error. Discard draft sits beside it and asks before it deletes the draft.

Stages (reading order).

# Stage What you decide
0 Instrument Physical or virtual — and why (§3.4c)
1 Evidence Unsold profile, fit, impact, buyer candidate (incl. their declared prefs) — and whether it still describes this draft
2 Price card Tariff structure (type + TOU multipliers when linked), then one price per shape; floors private
3 Warranty Availability, deadband, degradation, penalty caps (worst-case Rand vs margin); a blank warranty is confirmed at send
4 Spill Plant-level spill & curtailment — spot-market disposal only with a BRP
5 Green Forecast, nomination, renewable certificates and carbon
6 Shared terms Capacity, volumes, term, escalation — sent with the proposal and checked against the deal
7 Private limits Floors and caps on your brief — never sent
8 Q&A Site preferences the proposal still needs, only if the site record lacks them
9 Review & send What the buyer receives, readiness, expiry (quote window), Send to buyer

Suggestions. Warranty and related fields arrive with a suggested value, rationale, and Accept / Adjust / Why? — same affordance as the buyer studio. Accepting stamps the brief (source: derived) and writes the value into the draft; Adjusting records your override while keeping the original suggestion for audit. Suggested values read as the field’s own options (Two-part, Banked, Spot market), and Why? explains in words, not formula codes.

Explanations beside the section. On a screen 1280 px or wider the page makes room for the drawer, so you keep editing while it is open; the checklist becomes an icon rail with the same section statuses (a dot marks a section with something to resolve), and on 1536 px or wider the full checklist stays. Opening it moves keyboard focus into the drawer, and closing it (the X, or Escape) puts focus back on Explanations. Below 1280 px the drawer opens over a backdrop instead.

What the buyer sees of your card. All priced rows. Not your floors. Stage 9’s What the buyer receives never includes walk-aways.

Where decisions land. Stage 2 writes physical_terms.tariff_type (and TOU multipliers when the tariff is TOU-linked) plus the public seller_price_card (prices only — floors stay on the brief). Stages 3–5 write the remaining seller-owned slices of physical_terms (autosave). Stage 6 writes requested_joint_terms. Stage 7 writes only your negotiating brief. Stage 0 sets proposal_type. Nothing reaches the buyer until stage 9’s Send to buyer.

Changes save as you go — and Undo

Every field saves the moment you change it; there is no Save button. After each change a notice holds at the bottom of the section while it scrolls, naming what changed — Saved. Tariff type set to Fixed. — with Undo. Undo puts back that one change: a term, a card price, a shared term, a private limit (back to blank if it was blank), or a suggestion you accepted or adjusted (its value and the brief’s accepted mark). The notice then reads Undone: … until your next change. Answers to site questions (stage 8) are saved to the site and are not undone here.

Second pass. After you send, when the buyer picks a contract_type on the PENDING proposal, the studio re-opens collapsed to that row: its price is written to energy_price_ckwh, and you confirm the now-unambiguous shape-gated fields. If they chose a shape the plant does not support, the studio surfaces the infeasibility and lets you decline with a reason.

Price-card mechanics (LCOE floor, premiums, firmness) stay taught in V4 §6; the proposal flow and each field live here. Term meanings in settlement language stay in §4.7.

Stage 0 — Instrument

Job. Choose Physical PPA or Eskom Virtual PPA before you fill the price card. Same comparison surface as the buyer studio — deep rules in §3.4c.

Control / panel What it means In the draft
Own verdict (Physical / Virtual) What this sale is worth to you each way, on a stated volume basis Instrument-comparison evidence on your brief
Counterparty estimate What we think it is worth to the buyer from disclosed terms only Same evidence — not their private walk-away
Differences Matching risk, delivery risk, time-to-first-flow Listed; not separate proposal fields
Choose Physical / Virtual Sets the instrument for this draft proposal_type — switching creates a new draft and withdraws the old one

Example. Physical earns more margin on the stated MWh, but the buyer’s site cannot take wheeled energy this year. You choose Virtual — stage 0 records it; the rest of the studio becomes the four-stage seller virtual compose (§3.4d).

Stage 1 — Evidence

Job. Confirm you are quoting the deal you simulated — no editable commercial fields here.

Panel What it shows In the draft
Unsold profile (24h) Your remaining sellable shape after existing book commitments Composition evidence from the promoting simulation
Fit chart How the buyer’s residual need overlays your unsold band Fit score / charts stay as evidence
Impact Simulated deltas (margin, unsold %, revenue concentration, …) Same results that justified Build Proposal
Buyer candidate Off-taker identity plus declared prefs — tariff preference, spill treatment, curtail acceptance, REC flag, term, requested MWh, shortfall remedy Parties already on the proposal; prefs inform your quote, not silent autofill

Example. Impact shows solid margin and a small unsold increase; the buyer card shows a Fixed tariff preference and Banking spill — you carry that into the price card and spill stage rather than inventing preferences.

Both charts use one colour per meaning: your unsold generation is sky blue in the unsold profile and in the fit chart, contracted energy is green, and the buyer’s load is slate. Realised is in c/kWh, like the card.

When the evidence describes another deal

The evidence comes from the simulation you built the draft from. Once the draft’s capacity, its as-generated price or its term moves away from that run, an amber panel says so, with both deals side by side: It comes from the 28 September 2026 simulation of 50 MW · 60 c/kWh · 10 years. This proposal asks 12.5 MW · 67–75.1 c/kWh · 10 years. Revenue, unsold energy and the warranty margin then describe the simulated deal, not yours.

Re-run for these terms simulates the deal again with the draft’s own capacity, as-generated price and term, for the same buyer and period, and points the draft’s evidence at the new run. The panel clears when it finishes. Your brief — suggestions, accepted values and private limits — is not rebuilt. The new run is linked to the draft like the first one, so the Sales desk shows both as drafted, and discarding the draft frees both.

Stage 2 — Price card

Job. First set Tariff structure (how the energy charge is built), then publish one energy price per supported contract type. This is the commercial heart of a seller-originated draft: the buyer has not picked a shape yet, so a single energy_price_ckwh would be premature.

Tariff structure (panel above the rows)

The studio shows a Tariff structure block above the price card. Tariff type is required for Review readiness — Accept the brief suggestion or pick your own. When the type is TOU-linked, TOU multipliers appear in the same block. The buyer’s stated preference sits under the heading (The buyer asked for a fixed tariff.).

Control What it represents Example In the draft
Tariff type Pricing structure for the energy charge (fixed, escalated, two-part, floor and cap, TOU-linked, …) — with Accept / Adjust / Why? Suggested Fixed; Accept stamps the brief physical_terms.tariff_type — sent
TOU multipliers (when the tariff is TOU-linked) Peak / standard / off-peak multipliers on the base price Peak 1.4×, standard 1.0×, off-peak 0.7× physical_terms.tou_multipliers — sent
Offer {the buyer’s ask} (when the suggestion differs from it) Sets the tariff type to what the buyer asked for, in one click Offer Fixed physical_terms.tariff_type — undoable

When the suggestion differs from the buyer’s ask. The advisor suggests the structure that suits the plant; a solar plant under a 35 % capacity factor, for example, gets Two-part (a monthly capacity charge plus a lower energy price). When the buyer asked for something else, an amber note says so and why — The suggestion (Two-part) differs from the buyer’s ask (Fixed). At a 27% capacity factor the plant’s fixed costs are spread over relatively few MWh … offering a two-part tariff means negotiating against their stated preference. — with Offer Fixed beside it. In Explanations the same suggestion shows Low confidence and Alternatives: Fixed (the buyer’s ask). Either choice is yours; the note clears once the draft carries the buyer’s ask.

Price rows
Control What it represents Example In the draft
Row — contract type A shape your plant supports (As generated, Capped, Take-or-pay, Firm, …) Solar plant: As generated / Capped / Take-or-pay Row identity on seller_price_card
Row — price (c/kWh) Public offer for that shape — sent to the buyer AS_GENERATED 88 c; CAPPED 94 c (premium for the cap) seller_price_card[].energy_price_ckwh
Row — floor (read-out) Your private cost floor for that shape (LCOE + margin) Floor 76 c — shown to you only Brief price_card.<TYPE> walk-away / floor — not on the public card
LCOE line Plant cost context under the rows ~70 c/kWh LCOE band Evidence / validation — not a proposal term
Per-row spill fields (when the shape needs them) Shape-gated spill treatment / excess disposal for that row CAPPED row: spill FORFEITED, disposal BUYBACK Staged with the card; confirmed on second pass into physical_terms
Per-row shortfall fields (when the shape needs them) Shape-gated availability / penalty for that row TOP row: availability 92%, annual penalty cap 15% Same — shape-gated until the buyer chooses

Visibility by shape (same gates as physical risk terms).

Contract type Spill on the row Shortfall on the row
AS_GENERATED Hidden Hidden
CAPPED Shown Hidden
TOP Hidden Shown
Firm / baseload / shaped When applicable When applicable

Rules. A price below that row’s floor is rejected. The amber banner reminds you: Visible to the buyer — every priced row is sent; floors stay private. Prices show as numbers without storage zeros (67, not 67.0000), and each row’s Price basis in Explanations says how it was built — the floor under it, its premium over the cheapest row, and the shortfall chance the premiums are scaled from.

Example. You choose Fixed under Tariff structure, then price As generated at 88 c (above a 76 c floor) and Capped at 94 c. The buyer later picks Capped → second pass writes 94 into energy_price_ckwh and unlocks the capped row’s spill fields for confirmation.

Stage 3 — Warranty

Job. Set the seller performance envelope — how much availability you guarantee and what you pay if you miss. Many rows arrive with Accept / Adjust / Why? from the brief.

Field What it represents Example In the draft
Guaranteed availability (%) Minimum plant availability you warrant 92% for a well-maintained solar plant physical_terms.shortfall_terms.guaranteed_availability_pct — sent
Deadband (%) Tolerance below the guarantee before penalties apply 5% deadband → penalties start below 87% if guarantee is 92% shortfall_terms.deadband_pct
Annual degradation (%) Expected year-on-year yield loss 0.5%/yr for crystalline PV shortfall_terms.annual_degradation_pct
Excuse scheduled maintenance Whether planned outages are excused from shortfall Usually yes if you also set a maintenance allowance shortfall_terms.excuse_scheduled_maintenance
Excuse extreme weather Whether extreme resource events are excused Often yes for wind/solar resource risk shortfall_terms.excuse_extreme_weather
Maintenance allowance (days) Planned outage days excluded from shortfall 15 days/yr shortfall_terms.maintenance_allowance_days
Annual penalty cap (%) Ceiling on shortfall penalties in a year, as a share of contract value 12.5% — studio shows worst-case Rand vs modelled margin shortfall_terms.annual_penalty_cap_pct — sent
Lifetime penalty cap (%) Ceiling across the whole term 50% lifetime shortfall_terms.lifetime_penalty_cap_pct
Cure period (months) Grace to remedy persistent shortfall before harder remedies 6 months shortfall_terms.cure_period_months

Worst-case exposure. A line above the fields prices your annual cap against the modelled margin: At 1.5%/yr your worst case is R 2,971,283 a year against a modelled margin of R 3,573,548. The contract value behind it is this proposal’s own — its allocated energy, term and as-generated price (67 c/kWh × 29,565 MWh × 10 years = R 198,085,500; 1.5 % of that is R 2,971,283). The line turns amber when half or more of the margin is at risk, as here (83 %), and a rose alert replaces it when the worst case passes the margin — you can still save, but you are quoting a guarantee you may not economically honour. While the cap is blank the line asks you to set one. When the evidence describes another deal (§3.4a), the line names that run and offers Re-run for these terms.

A blank warranty is confirmed, not defaulted. With no guaranteed availability, an amber note says the buyer has no remedy if the plant under-delivers. You can still send, but Review & send lists No availability warranty as a warning to acknowledge, and the send itself refuses without that acknowledgement. A guarantee with no annual penalty cap is the same: Shortfall penalties are uncapped.

The availability guarantee device. Below the shortfall fields, the optional Availability guarantee device shows only Include this device until you switch it on; off, the shortfall terms above are your warranty. On, it adds its own availability level, measurement and liquidated damages (a pre-agreed payment per point of availability below the guarantee): basis, rate and cap.

Example. Accept availability 92% and adjust annual penalty cap to 10% after the warning. Draft carries both; stage 9 shows them to the buyer.

Stage 4 — Spill

Job. What happens to energy the plant produces that the buyer does not take, and how seller-caused curtailment is remedied. Plant-level (not per-shape) once you are past the price card.

Field (seller focus) What it represents Example In the draft
Spill treatment How unpaid / unused generation is valued Forfeited (zero), Discounted credit, or Banked physical_terms.spill_excess_terms.spill_treatment — sent
Excess disposal method Where surplus energy goes Retained, Curtailed, Counted toward take-or-pay; Spot market only if the book has a BRP registration spill_excess_terms.excess_disposal_method
Eskom buy-back status (context) Whether buy-back is actually available at the POC Shown from the site / network record Informs which disposal options are honest
Seller-caused curtailment How the buyer is made whole when you curtail Credit, Replacement, or Capacity reduction curtailment_terms.seller_caused — sent
Deemed energy method How curtailed volumes are quantified when deemed Resource power curve default; Independent engineer on large deals curtailment_terms.deemed_energy_method

BRP gate. Without a BRP on the strategy book, Spot market is removed from the disposal select and rejected server-side (Spot-market disposal needs a BRP registration on this book).

Example. No BRP → you choose buy-back disposal and Credit for seller-caused curtailment. Draft carries those; the buyer never sees a spot option you cannot deliver.

Stage 5 — Green

Job. Forecasting posture and renewable / carbon attributes you will support.

Field What it represents Example In the draft
Forecast status Where the three-year wheeled-energy forecast stands Submitted, Pending or Not required physical_terms.forecast_status — sent
Nomination type How delivery is nominated (single vs multi-buyer) Single for one off-taker physical_terms.nomination_type — sent
REC registry (seller) Where certificates are issued / tracked ZA-RECS or I-REC physical_terms.rec_terms.registry
Scope 2 method (buyer-owned on the sheet) How the buyer accounts for green attributes Often left for the buyer; visible for context rec_terms.scope2_method — buyer pencil
Carbon methodology (seller) How carbon claims are evidenced Grid average, Build margin or Combined physical_terms.carbon_terms.methodology

Example. You set forecast Submitted, nomination Single, and registry ZA-RECS. The buyer’s Scope 2 choice (Market vs Location) remains their field — you do not silently overwrite it.

Stage 6 — Shared terms

Job. Size and commercial envelope the buyer will see. Joint asks on requested_joint_terms, not private floors. The checklist calls this section Shared terms.

Field What it represents Example In the draft
Capacity (MW) Indicative contracted capacity you are offering 5 MW matching the saleable sweep requested_joint_terms.capacity_mw
Allocated energy (MWh/yr) Annual energy target for shaped / baseload deals 12 000 MWh/yr allocated_energy_mwh_yr
Term (years) How long you want the PPA to run 15 years to match plant life / finance term_years
Start date When delivery / settlement should begin COD + 3 months start_date
Escalation mechanism How price grows CPI escalation_mechanism
Escalation rate (%) Numeric rate when the mechanism needs one 1.5 for CPI-minus style escalation_rate_pct
Settlement frequency How often a settlement period closes Monthly settlement_frequency
Take-or-pay minimum (MWh/yr) The least energy a year the buyer pays for, taken or not At or below the allocated energy top_min_volume_mwh_yr
Capped volume limit (MWh/yr) Annual ceiling for capped shapes A little above the allocated energy capped_volume_limit_mwh_yr

Volumes are checked against the deal. The suggestions size the take-or-pay minimum and the capped limit on this deal’s share of the plant — a 12.5 MW slice of a 50 MW plant on a quarter of its yield — so take-or-pay never exceeds the energy the deal allocates or the deal’s own poor-year (P90) yield, and the cap sits about 10 % above the allocation. Whatever you type, the section checks it under the field:

Check Under the field At send
Take-or-pay minimum above the allocated energy Rose: … is above the 29,565 MWh/yr this deal allocates. The buyer would pay for energy the contract never delivers. Blocks — also listed under Required in this section
Capped limit below the take-or-pay minimum Rose: the buyer could not take all it must pay for Blocks
Capped limit more than 1.5 times the allocated energy Amber: A cap that high never binds Warning only
Take-or-pay above the buyer’s stated annual need, or the allocation more than 1.2 times it Amber: names the buyer’s ask Warning only
Allocated energy per month above the plant’s safe contractable capacity for next month Amber: names both figures Warning only

Example. Ask 12.5 MW · 29,565 MWh/yr · 10 years · CPI, with a take-or-pay minimum of 27,791 MWh/yr and a cap of 32,522 MWh/yr. Stage 9 shows every figure; your floor prices stay on stage 7.

Stage 7 — Private limits

Job. Record floors and walk-aways the buyer must never see. Banner on the stage says so; stage 9’s buyer-eye preview omits every row here.

Control What it represents Example In the draft
Floor / walk-away (c/kWh) Hard line under a price-card shape or global floor AS_GENERATED floor 76 c/kWh; leave below that Brief price_card.<TYPE> / floor_price_ckwh walk-away
Penalty-cap walk-away Soft/hard band on annual penalty cap Will not accept above 20% Brief penalty_cap_pct
Capacity / term walk-aways Size and tenor you will not cross Leave below 3 MW or under 10 years Brief position walk-aways
Min / max acceptable Soft band around your target for coaching Target 88 c; min 80; max 95 Brief min_acceptable / max_acceptable

Setting a public price-card price equal to the private floor triggers the disclosure warning (you are about to show your floor). Each row names the limit in words (Price floor · As generated, Annual penalty cap) with its target beside it (Target 10 years).

Stage 8 — Q&A

Job. Answer the site preferences this proposal needs when the generator site’s record lacks them (sites set up before the current wizard) — not a routine stage for complete sites. Each answer is saved to the site, so it is asked once.

When it appears What you answer Where it lands
Site missing shipped prefs Generator-side preferences the advisor could not read Usually the generator site (asked once) and/or thin brief positions
Site complete Stage is empty / skipped No write

These buttons are real saves when shown — not decorative. Complete sites from the current wizard never see this panel.

Stage 9 — Review & send

Job. Clear readiness, see exactly what the buyer receives, set how long the quote stands, then Send to buyer.

Panel / control What it represents In the draft / on send
Before you can send — blockers Missing and incoherent terms (tariff type, a take-or-pay above the allocation, a price below LCOE, …) Send stays disabled until clear. Each blocker names its section (Price card →, Shared terms →); clicking it opens that section and puts the cursor in the field
Warnings Amber notes that do not block (a cap that never binds, asks above the buyer’s need) Informational
Warnings to acknowledge Risks you may own: a firm-decline verdict, a penalty cap above margin, No availability warranty The checkbox unlocks Send; the send refuses without it
What the buyer receives Every public term, in five groups — Prices, Volume/term/settlement, Warranty, Spill and curtailment, Green and forecasting — each with Edit Built from the same fields the sections edit; blanks read Not set, and a section left wholly blank reads as one line; volume problems show in rose or amber; floors and walk-aways absent
Expiry How long the PENDING quote stands (quote window; default 14 days; 3–90). The note under it says when the prices were first suggested (… on 28 September 2026) expires_at on send
Send to buyer Dispatch. The line under it says why it is disabled (Resolve the 2 blockers above to send., Acknowledge the warnings above to send.) and screen readers hear the same Status DRAFT → PENDING; buyer can open review

Example. The buyer receives three priced rows, availability 92%, a 10% penalty cap, buy-back spill, and 12.5 MW · 29,565 MWh/yr · 10 years · CPI. Readiness is clear → expiry 14 days → Send. Your 76 c floors never appear.

After send — second pass. When the buyer selects e.g. CAPPED, reopen the studio: the CAPPED row price lands on energy_price_ckwh, spill fields for CAPPED become unambiguous, and you confirm or decline if the shape is unsupported.

Follow along (fields). Seat: IPP / Sales. Path: simulate a sale → Build Proposal. Walk stages 2–9: price two shapes above floor, accept warranty suggestions (or adjust the penalty cap), set spill without spot-market disposal if you have no BRP, check the take-or-pay minimum against the allocated energy on Shared terms, set one private floor on Limits, confirm it is absent from What the buyer receives, then leave the draft unsent (or send in a sandbox). Undo any change you did not mean from the notice at the bottom of the section.

3.4b Compose a virtual proposal (studio)

When you Build Proposal from a virtual Procurement simulation, you open the four-stage buyer virtual studio — not the physical eight. The seller virtual path (Sales) uses the same stage numbers and evidence column but different Strike / Obligations controls; that walkthrough is §3.4d. Shared spine and matched-shapes reading live here; seller-only detail (ladder, LCOE, insurance Q&A) lives in §3.4d.

There is no contract-type picker, no TOU allocation %, no spill/wheeling charge sheet: energy is never delivered, so those physical controls stay off the screen.

The header party line names both sides — e.g. OffTaker A (Buyer) → IPP 2 · Tshwane Solar Park (Seller) — so you always know who you are quoting against.

Stages (reading order).

# Stage What you decide
0 Instrument Physical or virtual — and why (§3.4c)
1 Evidence Matched shapes, matched fraction, TOU composition, counterparty eligibility
2 Strike Settlement volume basis; buyer cap & tariff or seller strike ladder
3 Obligations Buyer: RECs / Scope 2 + conditions precedent. Seller: performance, insurance + CP
4 Dispatch Public joint asks, private limits, counterparty preview, expiry, Send

Suggestions. Strike and obligation fields that the brief can decide arrive with a suggested value, a one-line rationale, and Accept / Adjust / Why? — same pattern as physical. Accepting records source: derived on the brief; Adjusting keeps the original suggestion for audit. Buyer suggestions write into virtual_terms paths (e.g. cap → strike_price.cap_price_ckwh), never into physical cap_price_ckwh.

Asks vs limits. Stage 4’s public joint asks become part of what the counterparty sees. Private walk-aways stay on your negotiating brief; the dispatch preview shows only the public sheet.

Where decisions land. Stages 2–3 write virtual_terms (and the seller’s public virtual_strike_ladder on stage 2). Stage 4 writes requested_joint_terms (asks) and brief positions (limits). Stage 0 sets proposal_type. Nothing reaches the counterparty until stage 4’s Send.

Autosave still writes as you move. Term meanings in settlement language stay in §4.7 and §9; here the focus is what you set in the studio and what the draft carries.

Stage 0 — Instrument

Job. Confirm Eskom Virtual PPA (or switch back to Physical) before you fill strike and obligations. Deep comparison rules live in §3.4c.

Control / panel What it means In the draft
Availability badges Both available / Physical only / Virtual only, plus per-instrument available / unavailable / unconfirmed Informs choice; if Virtual is available, Physical is treated as available too (the reverse does not hold)
Own verdict (Physical / Virtual) What this deal is worth to you each way, on a stated volume basis Brief instrument-comparison evidence
Counterparty estimate What we think it is worth to them from disclosed terms only Same evidence — never their private walk-away
Differences Matching risk, delivery risk, time-to-first-flow Listed for you; not separate proposal fields
Choose / switch instrument Sets Physical vs Virtual for this draft proposal_type — switching creates a new draft and withdraws the old one; price cap is never carried

Example. Off-taker and IPP are both Eskom-connected and VWA-ready → badges show Both available. Virtual matched fraction is high and first flow is faster → you stay on Virtual; stages 1–4 then show virtual fields only.

Stage 1 — Evidence

Job. Confirm the hedge you simulated — matched shapes and eligibility — before you set money. No editable commercial fields here.

Panel (left) What it shows In the draft
Matched shapes (24h) Generation · consumption · matched overlap for a typical day Snapshot from the promoting simulation / brief evidence
Matched fraction Share of generation that overlaps your load in time Brief matched_fraction (composition evidence)
TOU composition Credit rates (c/kWh) by peak / standard / off-peak Brief TOU / credit evidence
Counterparty eligibility Whether both parties clear Eskom Virtual / VWA gates Blockers listed when either side fails
How to read Matched shapes (24h)

This is the virtual deal’s risk picture before you set strike. Energy is never delivered; what matters is when the plant produces relative to when the buyer consumes. The panel is evidence only — you do not edit shapes here. (Buyer seat: your load. Seller seat: their load against your generation.)

Axes and wash. The chart is a typical 24-hour day (SAST hours 0h … 23h on the x-axis). Relative intensity sits on the y-axis (a normalised profile for comparison, not a contract MWh total). An amber daylight wash marks roughly 06:30–17:30; slate marks night — use that to see whether solar humps sit under daytime load or waste into evening peaks.

Source label (top-right of the fraction strip): Metered history when enough real samples back the shapes; otherwise Synthetic profile (modelled from site technology / book assumptions). The fraction number is the same definition either way; metered is usually the stronger commercial claim.

The big number — matched fraction. Above the chart: matched fraction = Σ_hours min(generation, consumption) ÷ Σ_hours generation (glossary). Only that overlapping energy earns an Eskom WER credit on a virtual PPA (§9). Unmatched generation earns no credit — and may still attract CfD strike depending on the settlement volume basis you choose on Strike.

The three series (legend under the plot — same names in the studio):

Series What it is How to read it
Generation The seller plant’s output shape across the day (from the generator site / promoting sim) Where the plant is “on” — e.g. a solar site rises mid-morning, peaks midday, falls by dusk; night is near zero
Consumption The buyer site’s load shape across the same hours Where the offtaker draws power — often morning / evening peaks with a daytime plateau
Matched Hour-by-hour overlap: min(Generation, Consumption) at each hour The energy that can count for WER credit that hour. It can never exceed the lower of the two curves

How to read the chart (step by step).

  1. Pick an hour (tooltip on hover, or eye-ball a band). Compare Generation vs Consumption at that hour.
  2. Matched at that hour is the smaller of the two — the overlap.
  3. Where Generation sits above Consumption, the excess is unmatched generation (plant made kWh you were not using then).
  4. Where Consumption sits above Generation, the buyer still buys the shortfall from Eskom as usual — that hour simply contributes less matched hedge.
  5. Sum those hourly matched slices, divide by total generation → the matched fraction badge. Do not compare daily totals with a single min(Σgen, Σcons) — that overstates match when gen and load trade dominance inside the day (the same trap settlement avoids).
Figure 3.4b — Matched shapes (24h), how to read (illustrative)
Generation Consumption Matched (overlap) Daylight wash (≈06:30–17:30)

Solar plant vs daytime-heavy factory (~72% match)

daylight 00h12h24h gen above load → unmatched evening load > gen

Read it: Midday, Generation peaks above Consumption — the strip between the two is unmatched solar (no WER credit). Matched is only up to the load line. Early evening, Consumption rises while Generation falls — little or no match; you still pay Eskom retail for that load. Night: both low; almost nothing to match. The studio’s ~72% badge is the day summed that way, not “72% of hours look green.”

What good / bad looks like.

Picture What it usually means What to do next
High overlap under the solar / wind hump Most generation can earn WER credit Proceed; Strike cap / ladder sized on matched volume
Tall generation midday, flat or low daytime load Large unmatched band Prefer MATCHED settlement basis, or rethink the pair / capacity
Strong evening consumption, weak evening generation Night load never hedges Do not treat retail “bill saving” as the virtual case
Fraction strip very low Weak hedge economics Fix sites / shapes in simulation — do not invent a strike on bad match

Example. Matched fraction 72%, eligibility green (both Eskom + registration ready) → proceed to Strike. Chart shows solar under daytime factory load with a visible unmatched midday tip and thin evening match — that is the matching-risk story you carry into settlement-volume basis. If eligibility is red (e.g. offtaker not Eskom-connected), fix sites or switch instrument — do not invent a strike on a blocked pair.

The compact Matched shapes panel also reappears on Strike and Dispatch so you keep the overlap in view while setting money and sending.

Stage 2 — Strike

Job. Who carries matching risk, and what strike / protection numbers sit on the public offer. This is the largest economic stage on a virtual deal.

Settlement volume basis — no silent default. You must choose:

Basis Who carries unmatched volume Plain English
GENERATED Buyer CfD settles on all plant output; you pay strike on unmatched kWh but only get Eskom WER credit on matched
MATCHED Seller CfD settles only on overlapping kWh; seller produced energy with no CfD on the unmatched remainder
GENERATED_WITH_FLOOR Shared Generated volume settles down to an agreed floor

The stage shows a short explanation beside the control; §9 walks the cash flows.

Buyer controls (stage 2)
Field What it represents Example In the draft
Settlement volume basis Matching-risk choice above Daytime factory under a solar plant → prefer MATCHED so you do not pay strike on night spill virtual_terms.settlement_volume_basis — sent
Cap price (c/kWh) Maximum strike you will pay — buyer protection on the CfD Net energy target ≈ strike − Eskom credit; cap 95 c/kWh leaves headroom vs credit ~40 c/kWh virtual_terms.strike_price.cap_price_ckwh — sent; Dispatch readiness requires this
Buyer Eskom tariff category Which Eskom tariff your site sits on (feeds credit / WER context) Megaflex / Miniflex / … as on your Eskom account virtual_terms.buyer_eskom_tariff_category — sent

Suggestions. Cap and settlement basis often arrive from the virtual brief (credit rate, matched fraction, break-even vs grid). Accept / Adjust / Why? stamp the brief the same way as physical. Setting the public cap equal to your private walk-away fires a disclosure warning — you are about to show your reservation price.

Draft vs brief. Cap on this stage is the ask on the proposal. Your walk-away (“I leave above 105”) belongs on stage 4 private limits.

Seller controls (stage 2)
Field What it represents Example In the draft
Settlement volume basis Matching-risk choice (joint commercial) Prefer GENERATED if you will not absorb unmatched virtual_terms.settlement_volume_basis — sent
Strike ladder — FLAT Public all-in rate (c/kWh) for a flat structure Quote 88 c/kWh FLAT virtual_strike_ladder FLAT row — sent; floors stay on brief price_card.*
Strike ladder — TOU Public peak / standard / off-peak rates Peak 110 · standard 90 · off-peak 70 virtual_strike_ladder TOU row — sent

Strike ladder (seller). Quoted rates are public; private floors never appear on the ladder or in the buyer-eye preview. The expiry window on stage 4 is also how long the quote stands (ladder computed today).

Example (buyer). You choose MATCHED, accept suggested cap 95 c/kWh, set tariff category to your Megaflex class. Draft carries those three; seller later answers with a ladder you review on Dispatch.

Stage 3 — Obligations

Job. Soft obligations and gates before the VWA can go live — role splits what you edit.

Buyer controls (stage 3)
Field What it represents Example In the draft
Scope 2 method GHG accounting for the hedge — market-based (RECs / contractual) vs location-based RE100 programme → MARKET virtual_terms.rec_terms.scope2_method — sent
Conditions precedent (checklist) Flags that must clear before the virtual PPA / VWA activates Tick what you can assert now; leave the rest for signing virtual_terms.conditions_precedent.* (grid connection, VWA registration, NERSA licence, smart metering, insurance certificates, environmental authorisation)
Seller controls (stage 3)
Field What it represents Example In the draft
Availability warranty (%) Minimum plant availability you guarantee 97% virtual_terms.performance_terms.availability_warranty_pct — sent
Yield / degradation / remedy (performance embed) Guaranteed annual yield, PoE benchmark, underperformance remedy, LD rate, min offtake P50 yield · LD 25 c/kWh shortfall virtual_terms.performance_terms.*
Insurance Policies you maintain (all-risk, BI, public liability, …) + minimum cover (R m) All-risk + BI + PL; R 50m aggregate virtual_terms.insurance_terms.*
Conditions precedent Same six gates as buyer — seller often owns plant-side ticks VWA + NERSA + metering ready virtual_terms.conditions_precedent.*

Suggestions. Availability warranty and Scope 2 often arrive from the brief with Accept / Adjust / Why?.

Example (seller). Accept 97% availability, confirm insurance defaults, tick VWA registration and smart metering on CP. Buyer sees performance and insurance on review; your private LD floor (if any) stays off the public sheet.

Stage 4 — Dispatch

Job. Size the public envelope, set private walk-aways, clear readiness, choose expiry, then Send.

Public joint asks
Field What it represents Example In the draft
Capacity (MW) Indicative contracted capacity Simulate used 5 MW → ask 5 requested_joint_terms.capacity_mw
Term (years) How long the hedge runs 10 term_years
Start date When settlement should begin First day of next FY start_date
VWP vendor Virtual wheeling platform vendor (when required) As registered with Eskom vwp_vendor
Settlement frequency How often a settlement period closes MONTHLY settlement_frequency
Escalation mechanism / rate (%) How the strike grows CPI · or fixed 1.5% escalation_mechanism / escalation_rate_pct
Private limits (never sent)
Role Typical keys Example
Buyer cap_price_ckwh, contracted_capacity_mw Cap walk-away 105 c/kWh; capacity walk-away 3 MW
Seller floor_price_ckwh, contracted_capacity_mw, term_years, plus price_card.* floors Floor walk-away 80 c/kWh on FLAT

Walk-aways, min/max acceptable, and targets live on the brief only. The counterparty preview must not contain them.

Preview, readiness, send
Panel / control What it represents In the draft / on send
Counterparty-eye preview Settlement basis, public strike/cap or ladder, joint asks, obligations the other side will see Walk-aways absent by design
Readiness — missing / incoherent Hard blockers — for buyers this includes Cap price (c/kWh) on virtual_terms.strike_price Send stays disabled until clear
Readiness — ack required Ownable warnings (see §3.4.1) Checkbox unlocks Send
Band inverted Buyer cannot pay what the plant costs (brief flag) Stage offers Withdraw draft instead of Send
Expiry How long the PENDING offer / quote stands (default 14 days; 3–90) expires_at on send; seller ladder quote aged from today
Send Dispatch to counterparty Status DRAFT → PENDING

Example (buyer). Preview shows MATCHED · cap 95 c/kWh · 5 MW · 10y · CPI. Readiness was blocking on missing cap until you accepted the stage-2 suggestion → expiry 14 days → Send to seller. Seller sees that sheet only; your 105 c/kWh walk-away never appears.

Example (seller). Preview shows GENERATED · FLAT 88 c/kWh ladder · 5 MW · 10y. Floors absent. Send to buyer; expiry is also the quote window.

Follow along (buyer virtual). Seat: Off-taker A (Organization). Path: Procurement → run / open a virtual simulation → Build Proposal. Confirm the party line names your site and the IPP. Walk stages 0–4: keep Virtual on Instrument, check matched fraction on Evidence, set settlement basis and Accept (or Adjust) cap on Strike, tick Scope 2 / any CP on Obligations, set one private walk-away on Dispatch, confirm it is absent from the seller-eye preview, then leave unsent (or send in a sandbox). Seller virtual walkthrough → §3.4d.

3.4c Choosing between a physical and a virtual deal

Stage 0 — Instrument sits ahead of Evidence in every compose studio. It is where you see both instruments side by side before you fill terms.

What the studio shows. What this deal is worth to you each way, on a stated volume of energy (the volume basis is in the line — not a tooltip). What we think it is worth to them, labelled plainly as an estimate from what they told you (disclosed terms only). It never picks for you. Below the materiality threshold review stays silent; compose still states both positions.

What cannot be folded into Rand. Matching risk, delivery risk, and how long each instrument takes to start first flow are listed as differences, not buried inside the money figure. If only one instrument is available for the pair, the stage collapses to one line that says which and why not — the same wording as the search modal.

When it opens first. The studio still opens on Evidence (or the seller’s price-card stage) unless both instruments are available and the difference is material for you. Switching instrument on a draft creates a new draft of the other type and withdraws the old one; shared asks carry as suggestions, and the price cap is never carried (its meaning changes). Countering later tells the other side what your analysis found — the disclosure warning lives here because this is where you see both sides.

3.4.1 Before you can send

Sending is gated at the action, not only in the UI. The system checks the sending party’s slice before a draft can become PENDING. Physical stage 8 / 9 (and virtual stage 4) list failures and keep Send disabled until they clear; some warnings require an acknowledgement checkbox first.

What must be filled in. Your side of the sheet: every field that applies under the chosen contract type, plus a private negotiating brief with a walk-away on price and on capacity (buyer). Sellers need at least one priced row on the price card, tariff / forecast / nomination fields, and coherent floors.

What the system will stop you doing (hard limits). These are physical impossibilities — they block, and you cannot acknowledge past them:

Warnings you can accept responsibility for. These look similar to hard limits but are not: the send is allowed only if you acknowledge them.

Eskom / VWA readiness gaps on the buyer site stay advisory (shown for compose, not a send block). Virtual proposals use a separate readiness checklist (joint asks, settlement volume basis, strike / ladder, insurance, eligibility) — not this physical one. A low matched fraction on a virtual deal is a warning you can acknowledge, not a hard block.

The sender also chooses how long the offer stands (§3.2) via the expiry control on physical stage 8 / 9 or virtual stage 4 (“Valid until … — N days”).

3.4.2 The detail modal — review and counterparty

Once a proposal is on the list (or you open a received PENDING), the detail modal is the review surface. Its header pill tells you which hat you wear: You are the Buyer / Seller. The body walks: parties → deal structure → indicative terms → billing responsibility → estimated PPA cost → the contract terms form → message, expiry, timeline.

The form is governed by party assignment: every field carries a chip — Seller (emerald), Buyer (sky), Joint (slate), Auto (amber, derived) — and you can edit only your own side. What you see is always the merged sheet; what you can write is your slice.

For physical proposals, contract type prunes spill / shortfall / TOU fields the same way as the studio. For virtual proposals the indicative price is labelled Strike Price, and the billing panel becomes the CfD settlement triangle — strike settlement, the buyer’s full Eskom bill, and the WER credit back.

3.4.3 Suggestions in the modal (a draft with no simulation)

A draft raised straight from market search — no simulation behind it — used to open with your entire half of the term sheet blank. The indicative terms and the estimated PPA cost were the only numbers on the page.

Your fields now arrive suggested. Each one you own carries the same Accept / Adjust / Why? row as the studios, tagged Based on both parties’ records, and a banner above the form counts what is still outstanding and offers Apply all.

Nothing is written until you act. Accepting writes that one value into the proposal terms; Apply all writes every outstanding one; adjusting records your number instead. Until you send, none of it reaches the counterparty. And you only ever see your side: the seller’s suggestions are invisible to the buyer and vice versa.

Selling — what the seller’s rows come from. These are the IPP §3 rules the seller studio uses, run against your plant’s own record, the buyer’s stated preferences, and this proposal’s indicative terms:

Field Grounded in
Tariff Type the shape the buyer picked, the TOU edge over a flat rate, your capacity factor, how much of the plant stays unsold after this deal, and the buyer site’s tariff preference, index type and term
Energy Price your published price-card row for that shape, else the proposal’s indicative price
Capacity Charge a two-part split of that quote — the fixed leg and the reduced energy rate together earn what the flat quote earns at P50
Floor Price the worst leg your own quote implies under the suggested multipliers; where those are flat, a ratchet floor at the opening quote
TOU multipliers the best-scoring set for your technology’s generation shape — re-ranked against the buyer’s TOU split once they declare one
Curtailment the unsold band, whether you have storage to source replacement energy, and the deal’s annual value
Spill & excess the unsold band and your site’s Eskom buy-back status
Shortfall the plant’s availability envelope (maintenance allowance, or the evening firm block for FIRM / BASELOAD), technology degradation and the opening penalty caps

Buying — what the buyer’s rows come from. The mirror image, from the OFFTAKER §3 rules the buyer studio uses:

Field Grounded in
Contract Type every shape the seller supports, scored on your load and preferences — with the runners-up and their trade-offs listed as alternatives
Security Deposit your site record; a fact about your Eskom account, not a position
TOU split the seller’s own generation shape — the ask they can meet without buying replacement energy (SHAPED only)
Cap Price your blended grid rate less the wheeling you now carry, then the standard 10% cushion — the price above which this deal stops beating the grid
Price Ceiling that same break-even, netted down by the capacity charge the seller has quoted (two-part deals only)
Curtailment your site’s curtailment acceptance and seasonal shutdowns
Under-consumption your site’s spill preference
Shortfall your remedy preference, whether the seller is an IPP or a trader, and the deal’s size for the reporting cadence
Scope 2 method your site’s REC flag

The contract type sits in its own block above the form because it decides which other terms even exist. Apply all never writes it — it is the one field the counterparty is waiting on, so you choose it deliberately.

Trading. A trader pool is not a plant and not a load, so it gets what it can actually stand behind and nothing else:

Fields that stay blank on purpose. A capacity charge only belongs to a TWO_PART / BLENDED structure and a floor price only to a floating one; under FIXED neither is suggested, and the tariff row says so. Anything the chosen contract type prunes from the form is dropped from the suggestions too, so the banner never counts a row you cannot see.

What none of it knows. A search-created draft carries no cost model on either side, so:

If you want those numbers costed, build the deal in the buyer or seller studio from a simulation instead: the simulation supplies the LCOE, the sweep and the modelled margin, and the suggestions come off your private brief.

3.4d Compose in the seller virtual proposal studio

When you Build Proposal from a virtual Sales simulation, you open the four-stage Seller Virtual Proposal Studio — not the physical nine-stage price-card studio (§3.4a). You share the stage spine with the buyer virtual compose (§3.4b), but the commercial heart is the strike ladder (FLAT + TOU public rates) instead of a buyer cap, and Obligations are performance + insurance, not Scope 2.

There is still no contract-type picker, no per-shape price card, no spill / wheeling / shortfall sheet, and no second pass after send: the ladder is the quote. Floors stay on your private brief (price_card.FLAT / price_card.TOU); the buyer-eye preview never shows them.

The header party line names both sides — e.g. OffTaker A (Buyer) → IPP 2 · Tshwane Solar Park (Seller).

How this differs from physical seller (§3.4a) and buyer virtual (§3.4b)

Topic Physical seller (§3.4a) Seller virtual (this section) Buyer virtual (§3.4b)
Stage count 0–9 (price card, warranty, spill, green, …) 0–4 only 0–4 only
Money stage Price card — one rate per contract type Strike ladder — FLAT + TOU rows Cap + Eskom tariff category
Shape / CT Buyer picks CT later → second pass No CT; ladder stands alone No CT
Matching risk Delivery / spill language Settlement volume basis (GENERATED / MATCHED / …) Same control (joint)
Soft obligations Warranty · spill · green Performance · insurance · CP Scope 2 · CP
Private floors Brief floors under price-card rows Brief price_card.* + floor_price_ckwh on Dispatch Cap / capacity walk-aways
Hard blocks at send Unpriced rows, invalid spill, … Missing ladder rates, below LCOE (ack never clears), floor > rate Missing cap, joint asks, …
Q&A Dedicated stage 8 when site prefs missing Inline when insurance cover missing on the plant Usually none
After send Second pass when buyer picks CT No second pass — quote is the ladder Buyer awaits seller ladder / counter

Suggestions. Availability warranty (and related brief fields) arrive with Accept / Adjust / Why? — same affordance as physical. Accepting stamps the brief and writes into virtual_terms; Adjusting keeps the original suggestion for audit. Ladder rates are public edits on the draft; ladder floors are private-limit writes on the brief.

Where decisions land. Stage 2 writes virtual_terms.settlement_volume_basis and the public virtual_strike_ladder (rates only). Stage 3 writes virtual_terms.performance_terms, insurance_terms, and conditions_precedent. Stage 4 writes requested_joint_terms and brief limits. Stage 0 sets proposal_type. Nothing reaches the buyer until stage 4 Send.

Stage 0 — Instrument

Job. Confirm Eskom Virtual PPA (or switch back to Physical) before you quote the ladder. Same comparison surface as every compose studio — deep rules in §3.4c.

Control / panel What it means In the draft
Availability badges Both available / Physical only / Virtual only Informs choice; Virtual available ⇒ Physical treated available too (not the reverse)
Own verdict (Physical / Virtual) What this sale is worth to you each way, on a stated volume basis Brief instrument-comparison evidence
Counterparty estimate What we think it is worth to the buyer from disclosed terms only Same evidence — not their private walk-away
Differences Matching risk, delivery risk, time-to-first-flow Listed; not separate proposal fields
Choose / switch Sets Physical vs Virtual for this draft proposal_type — switching creates a new draft and withdraws the old one; cap / strike numbers are never carried across instruments

Example. Physical margin looks better on stated MWh, but the offtaker is VWA-ready and matched fraction is high → stay on Virtual; stages 1–4 show ladder and performance only. Switching from a physical draft re-derives virtual advisor positions (availability, settlement prompt) from the linked simulation — it does not copy your physical energy prices into the ladder.

Stage 1 — Evidence

Job. Confirm the hedge you simulated — matched shapes and eligibility — before you quote. No editable commercial fields here.

Same left-column panels as the buyer virtual studio (§3.4b Stage 1), including how to read Matched shapes (24h).

Panel Seller reading In the draft
Matched shapes (24h) Generation is your plant; Consumption is the buyer’s load; Matched is the overlap that can earn their WER credit Snapshot from the promoting simulation / brief
Matched fraction Share of your generation that overlaps their load — sizes how much of a GENERATED quote is “credit-backed” for them Brief matched_fraction
TOU composition Credit rates by peak / standard / off-peak — why a TOU ladder can leave both sides better off than flat Brief TOU / credit evidence
Counterparty eligibility Both parties must clear Eskom Virtual / VWA gates Blockers when either side fails

Example. Matched fraction 71%, eligibility green → proceed to Strike. A tall midday unmatched band argues for MATCHED settlement (you absorb unmatched) or a smaller capacity ask — not for inventing a FLAT rate below LCOE to “win” the deal.

Stage 2 — Strike

Job. Set who carries matching risk, then publish the strike ladder. This replaces the physical price card: two public structures (FLAT and TOU), not one row per contract type.

Settlement volume basis — no silent default (same three options as buyer — §3.4b):

Basis Who carries unmatched Seller plain English
GENERATED Buyer CfD on all your output — buyer pays strike even when they get no WER credit on unmatched kWh
MATCHED You (seller) CfD only on overlapping kWh — unmatched generation has no CfD
GENERATED_WITH_FLOOR Shared Generated settles down to an agreed floor
Strike ladder (seller-only)
Control What it represents Example In the draft
FLAT — flat rate (c/kWh) Public all-in strike 88 c/kWh virtual_strike_ladder FLAT row — sent
FLAT — private floor (c/kWh) Your walk-away under that row Floor 80 (LCOE + margin) Brief price_card.FLAT — never sent
TOU — peak / standard / off-peak Public TOU strikes 110 · 90 · 70 virtual_strike_ladder TOU row — sent
TOU — private floor (when shown) Walk-away under the TOU structure On brief price_card.TOU never sent

How to read the ladder vs the physical price card.

Suggestions. Settlement basis often arrives as a prompt (no silent pick). Ladder rates may be prefilled from the virtual advisor (LCOE + margin, credit-aware TOU); you still edit them as public numbers.

Example. Choose GENERATED, quote FLAT 88 c/kWh with private floor 80, and a TOU row lined up with Megaflex credit bands. Draft carries both public rows; floors stay on the brief. Buyer later sees rates only.

Stage 3 — Obligations

Job. Plant-side soft obligations and gates before the VWA can go live — not the buyer’s Scope 2 panel.

Field What it represents Example In the draft
Availability warranty (%) Minimum plant availability you guarantee 97% virtual_terms.performance_terms.availability_warranty_pct — sent
Yield / degradation / remedy Guaranteed annual yield, PoE, underperformance remedy, LD rate, min offtake P50 yield · LD 25 c/kWh virtual_terms.performance_terms.*
Insurance Policies + minimum cover (R m) All-risk + BI + PL; R 50m virtual_terms.insurance_terms.*
Conditions precedent Same six gates as buyer — you often own plant / NERSA / metering ticks VWA + NERSA + metering ready virtual_terms.conditions_precedent.*

Suggestions. Availability warranty commonly arrives with Accept / Adjust / Why? from the brief (capacity factor / p_short envelope). Over-committing availability relative to what the plant can support is a hard readiness block — acknowledgement does not clear it.

Insurance Q&A (inline). If the generator site has no cover on file, the studio asks the same insurance questions the physical Q&A stage would — answers persist to the site (asked once) and unlock the insurance embed. Complete sites never see the panel.

Example. Accept 97% availability, confirm insurance defaults (or answer Q&A once), tick VWA registration and smart metering. Buyer sees performance and insurance on review; your private LD / floor numbers stay off that sheet.

Stage 4 — Dispatch

Job. Size the public envelope, set private walk-aways, clear readiness, choose expiry, then Send to buyer.

Public joint asks

Same joint fields as buyer virtual (§3.4b Stage 4): capacity, term, start date, VWP vendor, settlement frequency, escalation. No contract-type, TOU allocation, spill, or wheeling charges.

Private limits (never sent)
Typical keys Example
floor_price_ckwh, contracted_capacity_mw, term_years Floor walk-away 80 c/kWh; capacity 3 MW
price_card.FLAT / price_card.TOU floors Same floors editable on Strike ladder rows
Preview, readiness, send
Panel / control What it represents In the draft / on send
Buyer-eye preview Settlement basis, public ladder rates, joint asks, performance / insurance / CP the buyer will see Floors and walk-aways absent
Readiness — missing Ladder incomplete (FLAT needs flat rate; TOU needs all three), settlement basis, joint asks, CP, insurance when required Send disabled until clear
Readiness — incoherent Below LCOE (hard — ack never clears), floor above quoted rate, availability above support Fix the number or withdraw
Readiness — ack required e.g. low matched fraction Checkbox unlocks Send
Band inverted Buyer cannot pay what the plant costs (brief flag) Stage offers Withdraw draft instead of Send
Expiry How long the PENDING quote stands (default 14 days; 3–90) expires_at; also ages the ladder quote
Send Dispatch to buyer Status DRAFT → PENDING

Example. Preview shows GENERATED · FLAT 88 · TOU 110/90/70 · 5 MW · 10y · CPI — floors absent. Readiness was blocking on a blank TOU off-peak until you filled it → expiry 14 days → Send to buyer. Buyer never sees your 80 c floor.

Follow along (seller virtual). Seat: IPP 2 (ipp_2@webill.net). Path: Sales → run / open a virtual simulation → Build Proposal. Confirm the party line names the offtaker and your plant. Walk stages 0–4: keep Virtual on Instrument, read matched fraction on Evidence (§3.4b chart guide), choose settlement basis and quote FLAT (and optionally TOU) above private floors on Strike, Accept availability on Obligations (answer insurance Q&A if shown), set one private floor on Dispatch, confirm it is absent from the buyer-eye preview, then leave unsent (or send in a sandbox).

3.4e Compose in the trader buy proposal studio

When you Build Proposal from a Buy → IPP simulation on a trader pool Simulations workbench, you land in the full-page Trader Buy Proposal Studio — not the org proposals list and not the offtaker buyer proposal studio. The deal type is TRADER_IPP: your pool is the buyer; the generator site is the seller. The draft stays private until you Send to seller.

Same spine as the offtaker buyer studio (§3.4)

If you already know §3.4, most of the UX is familiar on purpose:

Reuse §3.4 for what those shared fields mean. This section names only what changes for the trader seat.

How this differs from the buyer studio (§3.4)

Topic Off-taker buyer (§3.4) Trader buy (this section)
Entry Off-taker Procurement → Build Proposal Trader Simulations → Buy → IPP → Build Proposal (V3 §8.6)
Deal type Off-taker as buyer (OFFTAKER_IPP, …) TRADER_IPP only — pool buys; IPP sells
Virtual / Instrument Stage 0 Instrument can open Physical vs Virtual (§3.4c); virtual uses §3.4b No Instrument stage. Physical compose only in this release
Stage map 0 Instrument · 1 Evidence · 2 Shape · 3 Price · 4 Risk · 5 Green · 6 Asks · 7 Limits · 8 Review 0 Evidence · 1 Shape · 2 Price · 3 Risk · 4 Trader terms · 5 Green · 6 Asks · 7 Limits · 8 Review
Evidence Current supply mix (24h) — Grid / wheeled / virtual stack Net position / supply gap (24h) — book cover vs residual gap
Contract types Seller-supported shapes (plus any prior-findings restrict) Generator ∩ pool supported_contract_types
Trader terms None Dedicated stage 4 — trader_buyer_terms (below)
Site Q&A / deposit Sky A few quick questions; readiness may need security_deposit_status None — a pool is not a consumption site
Decline findings Prior findings checklist can reappear on compose None on this seat
Readiness extras Buyer-core + site advisories Buyer-core plus trader_margin_type and back_to_back_pricing (hard gates). Margin numbers are not send-blockers
Review preview What the seller receives — every term you set, by section The same list with one more group, Trader terms (margin type, margin, back-to-back pricing)
Discard returns to Procurement Simulations
Send label Send to seller Send to seller (same)

Stages (reading order)

# Stage What you decide
0 Evidence Net position / supply gap, fit chart, impact, IPP candidate
1 Shape Contract type (generator ∩ pool) + TOU when SHAPED
2 Price Cap, ceiling, break-even ladder — same meanings as §3.4 Stage 3
3 Risk Buyer curtailment / under-consumption / shortfall — same prune rules as §3.4 Stage 4
4 Trader terms Margin structure and back-to-back (below)
5 Green Scope 2 method (rec_terms) — always on this stage, not pruned by contract type
6 Public asks Capacity, term, escalation — sent with the proposal
7 Private limits Walk-aways on your brief — never sent
8 Review & send What the seller receives, readiness, expiry, Send to seller

Stage 4 — Trader terms

Job. Say how the pool earns and whether pricing is back-to-back with the plant. These fields are why a trader buyer is not an offtaker clone — they have no home on the offtaker studio.

Field What it represents In the draft
Trader margin type How the pool’s margin is expressed (e.g. fixed c/kWh vs percentage) physical_terms.trader_buyer_terms.trader_margin_type — sent; hard readiness gate
Trader margin (c/kWh) Fixed-margin amount when the type is c/kWh trader_margin_ckwh — sent when used; not required to unlock Send
Trader margin (%) Percentage margin when the type is percentage trader_margin_pct — sent when used; not required to unlock Send
Back-to-back pricing Whether commercial terms track the generator deal back_to_back_pricing — sent; hard readiness gate

Suggestions. Structure (type / back-to-back) may arrive from the pool’s settlement config with Accept / Adjust / Why?. Margin numbers are never auto-written — you type them.

On this stage the evidence column swaps to impact + IPP candidate so you can set margin against the deal you simulated, not against an empty chart.

Suggestions, asks, and where decisions land

Suggestions. Shape, price, risk, green, and trader-terms fields arrive with Accept / Adjust / Why? from the private negotiating brief built at promote time. Accepting records source: derived; Adjusting records your override.

Asks vs limits. Stage 6’s public asks become part of what the IPP sees. Stage 7’s walk-aways stay on your brief; stage 8’s What the seller receives lists every term you set — Delivery profile, Price protection, Risk, Trader terms, Green, and Volume, term and settlement — and nothing from the brief: search it for a walk-away and you will not find one. It reads the same way as the off-taker studio’s (§3.4 Stage 8).

Where decisions land. Stages 1–5 write physical_terms (autosave). Stage 6 writes requested_joint_terms. Stage 7 writes only your negotiating brief. Nothing reaches the IPP until stage 8’s Send to seller.

Bridge. Simulations promote → this studio: V3 §8.6. Selling from the same pool uses the trader sell studio. Trader-to-trader stays refused with the V2-open copy on Simulations — no studio until VWA registration for traders is modelled (decisions V2).

Follow along. Seat: a trader pool with a completed Buy → IPP simulation. Path: Simulations → Buy → select an IPP → Simulate → Build Proposal. Confirm the party line names your org as buyer and the IPP as seller. Confirm there is no Instrument tab. Walk stages 0–8: set contract type, accept a cap suggestion, fill Trader terms (margin type + back-to-back), confirm the private banner on Limits, then on Review check walk-aways are absent and What the seller receives lists your margin type and back-to-back choice under Trader terms before Send to seller.

3.4f Compose in the trader sell proposal studio

When you Build Proposal from a Sell → OffTaker simulation on a trader pool Simulations workbench, you land in the full-page Trader Sell Proposal Studio — not the org proposals list and not the IPP seller proposal studio. The deal type is OFFTAKER_TRADER: your pool is the seller; the offtaker site is the buyer. The draft stays private until you Send to buyer.

Same spine as the seller studio (§3.4a)

If you already know §3.4a, most of the UX is familiar on purpose:

Reuse §3.4a for what those shared fields mean (price-card mechanics also in V4 §6). This section names only what changes for the trader seat.

How this differs from the seller studio (§3.4a)

Topic IPP seller (§3.4a) Trader sell (this section)
Entry Generator Sales → Build Proposal Trader Simulations → Sell → OffTaker → Build Proposal (V3 §8.6)
Deal type Generator-site sale (OFFTAKER_IPP, …) OFFTAKER_TRADER only — pool sells; offtaker buys
Virtual / Instrument Stage 0 Instrument can open Physical vs Virtual (§3.4c); virtual uses §3.4d No Instrument stage. Physical compose only in this release
Stage map 0 Instrument · 1 Evidence · 2 Price · 3 Warranty · 4 Spill · 5 Green · 6 Asks · 7 Limits · 8 Q&A · 9 Review 0 Evidence · 1 Price · 2 Warranty · 3 Spill · 4 Trader terms · 5 Green · 6 Asks · 7 Limits · 8 Review
Evidence Unsold profile (24h) — contracted vs unsold Net position / surplus (24h) — surplus by SAST hour
Price card shapes Plant supported_contract_types Pool-supported types, or a single-quote AS_GENERATED card when the pool has none listed
Trader terms None Dedicated stage 4 — trader_seller_terms (below)
Site Q&A Stage 8 backfills plant prefs that predate the wizard Absent — a pool is not a plant
Compose opens on Often price card; may open Instrument if material Always price card (stage 1) after Evidence
Readiness extras Seller-core (+ plant advisories) Seller-core plus five trader seller gates (below)
Review preview What the buyer receives — every public term, by section The same list with one more group, Portfolio guarantees (the five trader terms, technologies included)
Send flash “Proposal sent to the buyer.” Names the offtaker organisation
Discard / withdraw returns to Sales Simulations
Send label Send to buyer Send to buyer (same)

Stages (reading order)

# Stage What you decide
0 Evidence Net position / surplus, fit chart, impact, offtaker candidate (prefs)
1 Price card Tariff structure, then one price per pool-supported shape (or single-quote); floors private — same meanings as §3.4a Stage 2
2 Warranty Shortfall seller slice — availability, deadband, penalty caps
3 Spill Spill & curtailment — seller slice; spot-market disposal only with a BRP on the book
4 Trader terms Portfolio guarantees (below)
5 Green Forecast, nomination, REC / carbon
6 Public asks Capacity, term, escalation — sent with the proposal
7 Private limits Floors and caps on your brief — never sent
8 Review & send What the buyer receives, readiness, expiry, Send to buyer

Stage 4 — Trader terms

Job. State the portfolio guarantees behind the quote. These fields are why a trader seller is not an IPP clone — they have no home on the plant studio.

Field What it represents In the draft
Source guarantee How supply is backed (e.g. portfolio vs named plant) physical_terms.trader_seller_terms.source_guarantee — sent; hard readiness gate
Guaranteed technology types Technologies the portfolio warrants guaranteed_technology_types — sent; hard readiness gate
Min portfolio capacity (MW) Floor capacity the seller stands behind min_portfolio_capacity_mw — sent; hard readiness gate
Replacement energy source Where replacement energy comes from if the portfolio under-delivers replacement_energy_source — sent; hard readiness gate
Licence validity warranty Whether you warrant NERSA / trading-licence validity licence_validity_warranty — sent; hard readiness gate (true / false)

Suggestions. These fields may arrive with Accept / Adjust / Why? from the trader seller advisor. Accepting records source: derived; Adjusting records your override.

Suggestions, asks, second pass, and where decisions land

Suggestions. Price, warranty, spill, green, and trader-terms fields arrive with Accept / Adjust / Why? from the private negotiating brief built at promote time. Public price-card rows never carry floors — those stay on price_card.* walk-aways on the brief.

Asks vs limits. Stage 6’s public asks become part of what the offtaker sees. Stage 7’s walk-aways stay on your brief; stage 8’s What the buyer receives lists every public term — Prices (each card row and the tariff type), Warranty, Spill and curtailment, Portfolio guarantees, Green and forecasting, and Volume, term and settlement — and nothing from the brief: search it for a walk-away and you will not find one. A public value that equals your private walk-away raises a disclosure warning.

Second pass. After you send, when the offtaker picks a contract_type on the PENDING proposal, the studio re-opens collapsed to that row — price written to energy_price_ckwh, shape-gated fields confirmed — same discipline as §3.4a.

Where decisions land. Stages 1–5 write physical_terms and the public seller_price_card (autosave). Stage 6 writes requested_joint_terms. Stage 7 writes only your negotiating brief. Nothing reaches the offtaker until stage 8’s Send to buyer.

Bridge. Simulations promote → this studio: V3 §8.6. Buying for the same pool uses the trader buy studio. Trader-to-trader stays refused with the V2-open copy on Simulations — no studio until VWA registration for traders is modelled (decisions V2).

Follow along. Seat: a trader pool with saleable inventory and a completed Sell → OffTaker simulation. Path: Simulations → Sell → select an offtaker → Simulate → Build Proposal. Confirm the party line names your org as seller and the offtaker as buyer. Confirm there is no Instrument or Q&A tab. Walk stages 0–8: accept price/tariff suggestions, fill Trader terms (all five gates), confirm the private banner on Limits, then on Review check walk-aways are absent from What the buyer receives and your guarantees appear under Portfolio guarantees before Send to buyer.

3.5 Your private negotiating brief

Alongside the public proposal, the platform holds a negotiating brief for your side — what you want on each term, and what you will not accept. That record is yours alone: the other party never sees it, and it is never sent with the proposal. What they see are only your stated asks on the proposal itself (indicative capacity and term, party-coded contract fields, a seller price card when you are selling).

Two things readers often mix up:

The studio writes into the brief as you Accept / Adjust suggestions and set private limits. Walk-aways stay private; asks are what the other side can respond to.

3.5a Reviewing a proposal you received

When a proposal lands in your inbox as Pending, open the review studio (Procurement or Sales → the proposal → Review). One page, both directions: you reading a seller offer and you reading a buyer offer are the same stages with the roles swapped. Physical proposals use six stages; virtual proposals use five (asks and private limits share a stage).

Those working notes are a review draft — private. You can try prices, cadences, and shortfall settings without the sender seeing every half-formed number. Nothing you stage is written to the shared proposal until you Accept (which merges your side into the contract in one step) or you deliberately choose to share my terms now — an optional escape hatch when you want to show your hand early to speed agreement. Autosave never touches the shared virtual_terms / physical_terms while you are still deciding.

If the proposal expires while you are still working on it, those notes are discarded. You will see a warning first, inside the last 20% of the sender’s validity window (§3.2) — especially on the Decide stage. Ask the sender to renew if you need more time; a renewal starts you fresh against the new window’s numbers. Declining is different — your notes are kept so a later re-propose can pick them up.

Reading order in the studio (physical):

Stage What you do
1 · Their offer Read their terms in full (not greyed-out inputs), their asks immediately, how long the offer stands
2 · Gaps Gap analysis vs your brief; when the other instrument is available and the difference is material, a one-line Physical/Virtual comparison (with volume basis) sits above the field table — silence when it is not
3 · Your terms Panel-beat your side; suggestions show provenance (their quote · a typical deal · carried from the other instrument) — carried values stay suggestions until you Accept
4 · Your asks Your joint asks vs theirs
5 · Your limits Private walk-aways — not sent
6 · Decide Accept, reject after panel-beating, or counter in the other instrument when available and material; time remaining + near-expiry warning

Virtual review uses the same spine with two differences on stage 1, and asks + limits folded into one stage before Decide:

Stage What you do
1 · Their offer Disclosed terms read-only, their joint asks, the strike ladder when the seller originated, matched-area evidence, expiry — and both parties’ conditions-precedent checklist labelled as schedule risk (not a negotiable price term)
2 · Gaps Gap analysis via the CfD money model (§9); every displayed Rand saving shows its volume basis; same instrument comparison line as physical when the alternative is available and material
3 · Your terms Your receiving slice (e.g. cap, tariff category, REC Scope 2); provenance distinguishes their quoted strike, a typical deal, and carried from the other instrument
4 · Your asks & limits Joint asks vs theirs, plus private walk-aways
5 · Decide Accept, reject, or counter in the other instrument when available and material; digest guard as below

On a virtual offer you can already see their strike, so stage 2 can show your actual net cost on your load shape — arithmetic, not a guess. Watch the seller’s min_offtake_pct in performance terms: that is a buyer volume obligation, easy to miss inside a joint embed.

3.5b Is this offer good enough?

Once you have a negotiating brief, the platform can run a gap analysis against what they actually offered. Per term it marks the offer:

Where the gap is a price (c/kWh), you also get an annual Rand figure so “12c above target” becomes something like “R840k a year” — not an abstract delta. Non-price terms stay qualitative.

Instrument comparison (when it matters). Above the field table — never inside it — you may see one line such as “as a CfD this deal is R1.4m/yr better for you, on matched volume — see Instrument.” It appears only when the other instrument is available for the pair and the difference is material for you. Otherwise the line is simply absent (not a “no difference” banner). The volume basis is in the sentence. Compose still shows both verdicts even when the gap is small — there you asked the question; here you did not.

Two overrides matter:

3.5c The four exits

You do not have to walk the whole studio to say no.

  1. Reject outright — from stage 1, before any panel-beating. Wrong technology, wrong province, not interested. No private draft is required.
  2. Accept after panel-beating — Decide (physical stage 6 / virtual stage 5), once your receiving slice is ready, there are no unacknowledged dealbreakers or infeasibilities, and the digest still matches. Accept merges your staged terms and creates the PPA in one transaction.
  3. Reject after panel-beating — same decline as (1), optionally with structured findings (below).
  4. Counter in the other instrument — also on Decide; gate and disclosure are taught once in §3.5e.

Digest guard. If the other side changes their terms while you are reviewing, accept is blocked and the changed fields are named (old → new). Re-read them, acknowledge, then accept again — you cannot be signed up to a price you never saw.

The list modal still serves accepted / declined read-back, lineage links, and the originator’s sent phase; the review studio is the home for deciding. Counter with… lives only on Decide — one home for the action.

3.5d Declining well, and trying again

A decline need not be a dead end with a free-text apology. It can carry decline findings — which terms did not work and what would have — drawn from your negotiating target, never your private walk-away. You choose, field by field, what to share: dealbreakers are shared by default, merely negotiable points are held by default. If the plant simply cannot deliver what was asked (wrong shape for the technology, capacity above saleable, and so on), that finding is always shared — otherwise the next attempt fails the same way.

Re-propose clones the declined (or expired) proposal into a fresh draft with both parties’ captured slices intact. Nothing is retyped. The prior proposal becomes SUPERSEDED and stays linked. Re-propose inherits the renewal budget (renewed_count / max 3) — it does not reset it — so you cannot defeat the renewal cap by cloning forever (§3.2). Opening the compose studio on the new draft shows the prior findings as a checklist of what to change — their value, what they would have accepted, your current value, and your own brief target. An infeasible shape finding also removes the impossible option from the contract-type control so you cannot send the same impossible request twice.

Same-instrument negotiation still has no price counter-offer loop at proposal stage: each round is propose → review → accept-or-decline. Findings are how disagreement travels between rounds. Answering in the other instrument is different — see §3.5e.

3.5e Answering in the other instrument

A cross-instrument counter lets you answer a Pending proposal in the other instrument without refusing and starting from a blank sheet. Availability is §1.1; whether the difference is large enough to act on is the materiality threshold (same silence rule as Gaps — §3.5b). When both hold, Decide in the review studio offers Counter with an Eskom Virtual PPA or Counter with a Physical PPA. The list modal keeps lineage read-back only — it does not host the counter.

You say why the other instrument suits you — that reason is disclosed before the counter is created. You then compose a fresh draft of the other type (invisible until you send). When you send it, the original becomes superseded and stays linked; both remain readable. The counter carries shared facts where they mean the same thing (capacity, term, start date, and similar); the price cap (cap_price_ckwh) is never carried — its meaning changes between instruments. The counter gets its own expiry window but inherits the renewal budget (same rule as re-propose).

Two limits, plainly:

  1. After two cross-instrument hops in the same chain, the platform stops you.
  2. Returning to an instrument already left behind in that chain is refused.

On the list, a superseded row links forward to the counter; opening the counter shows which prior proposal it replaces.

Your options depend on the phase — your role × the proposal’s state:

Phase You are Buttons
compose (Draft, initiator) still writing In the studio: expiry + Send to seller; on the list modal: Withdraw
sent (Pending, initiator) waiting Withdraw (and your fields stay editable)
review (Pending, counterparty) deciding In the review studio: Reject (stage 1 or Decide) · Accept & create contract (Decide) · Counter with… the other instrument on Decide when available and material; list modal: Accept / Decline + lineage read-back (no Counter)
readonly (anything else) looking expiry control + Renew / Reactivate where applicable

Accept is the big one: in a single transaction the proposal becomes ACCEPTED, a PPA is created in NEGOTIATING with its agreement reference (PPPA-YYYYMM-… or VPPA-…), every captured term is replayed onto it (including your merged staged slice), and — for physical deals — the meter references are derived from the linked sites. Both parties’ current negotiating briefs are stamped with the new PPA id (superseded brief versions stay untouched; missing briefs are skipped). Those limits follow you into the negotiation wizard as owner-only chips — they are never shared with the counterparty. The flash names the new contract, and the deal appears on Negotiations for both parties.

Follow along. Seat: Off-taker A (offtaker_a@webill.net) — the proposal state gallery. Path: Proposals. You should see one Pending sent to IPP 2 and one Pending received from IPP 2 (both with countdowns), your two Drafts, and one each of Declined, Expired, Withdrawn and Superseded — every state of §3.1 live on one screen.

Data. full_demo · seed 42 · stage S04 (lifecycle) · sealed 2026-07-15.

Device positions in a proposal

The price and risk stages can carry upside, volume-strike, availability and termination positions. Suggestions come from the private negotiation brief; an absent position supplies no invented recommendation. Accepted device positions survive brief regeneration and the proposal-to-contract handoff. Joint price-device terms still require counterpart agreement in negotiation.

4. The negotiation wizards

Accepting a proposal (from the review studio or the list modal) creates a contract in NEGOTIATING — a live PPA whose terms both parties now complete together. What arrives in the wizard already carries both parties’ captured terms: the originator’s disclosed slice plus the receiver’s merged staged side from review. The wizards are where the remaining joint and role-owned fields get finished.

4.1 The Negotiations screen

Negotiations (/org/deals/negotiations — the Deals tab) is the home for every deal that has left the proposal handshake (§3.1) and is still being worked — from accept through AGREED (plus DECLINED rows kept for history). Once a contract becomes SIGNED or ACTIVE, it leaves this list and appears only on Contracts. Physical (PPPA-…) and virtual (VPPA-…) share the same six negotiation statuses (enum-exact on negotiation_status).

There are no stat cards — one line above the table says what the tab is for. The badge on the tab counts what needs you: term sheets still Negotiating (both sides work them) and Agreed sheets you have not signed yet. Columns: Agreement (reference, instrument pill, from proposal {ref}, topology), Parties, Where it stands (status, unseen counterparty changes, who has signed, Sign by {date}), Your next step (one primary button — Negotiate, Sign, Request / Accept revival — with secondary actions as plain links). What you can click is gated by status (table at the end of this section).

Search by site, party or agreement reference, and narrow by Status and Type. Your filters stay in the URL and survive reload. Clear filters restores the full register; the empty view offers the same recovery. On a phone, each agreement is a card and the wizard’s Go to section selector replaces the long step rail. The Negotiation guide link opens this chapter.

The screen is live per contract: if your counterparty saves a step while you’re looking at that deal, your fields refresh with a flash; if you’re elsewhere, the red change badge ticks up until you next open it.

Happy path

Contract negotiation — compose terms, freeze, sign, activate
NEGOTIATING
→Freeze terms (complete + approved)
AGREED
→both sign, hashes match
SIGNED
→start date arrives
ACTIVE

Created already in NEGOTIATING when a proposal is ACCEPTED — there is no separate contract draft. Signing ceremony and activation detail live in §5.

Exits and re-open

Leaving the live path — decline, or unlock AGREED to renegotiate
NEGOTIATING
→decline
DECLINED
Also: AGREED
→re-open
NEGOTIATING End of life: SIGNED / ACTIVE
→terminate
TERMINATED

Re-open voids any signature already given, clears the agreement timestamp (sign window restarts on the next AGREED), and sends every joint term back to PENDING proposed by the reopener — the counterparty must re-approve. TERMINATED is the modelled end-state for an executed agreement (expiry, breach, mutual consent, force majeure).

What each status means

Status Plain meaning How you get there Wizard
NEGOTIATING Both sides finishing terms; joint fields go through propose → approve. Accept creates the PPA here; or Re-open from AGREED Editable (role-owned + joint loop)
AGREED Commercial sheet frozen; sign window open (10 days from lock). Wizard Freeze terms when required terms are complete and no joint field is still awaiting approval Signing / re-open — not free re-trading of limits
SUSPENDED Sign window lapsed without both signatures. Nightly job after day 10 Request revival → counterparty Accept revival → back to AGREED with a fresh window
SIGNED Buyer and seller signed the same content hash; deal waits for start. Second matching signature (§5.2) Not on Negotiations — Contracts register only (§6)
ACTIVE start_date has arrived; wheeled / virtual settlement can run. Daily activation job on SIGNED contracts whose start date is today or earlier Not on Negotiations — Contracts register only (§6)
DECLINED Either party walked away before signing. Optional reason on the badge. Decline from NEGOTIATING Read-only View
TERMINATED An executed agreement has ended. End-of-life path after SIGNED / ACTIVE Not listed on Negotiations

Proposal vs negotiation. Proposal statuses (§3.1) end at ACCEPTED. Negotiation statuses start at NEGOTIATING on that same accept. Declining a proposal never creates a PPA; declining a negotiation leaves a DECLINED contract row in Negotiations.

Action gates — who may change status

Action From status(es) To status Who What it does
Accept proposal Proposal PENDING PPA NEGOTIATING Proposal counterparty Creates the physical or virtual contract; copies captured terms; stamps briefs onto the PPA.
Save wizard steps / approve joint terms NEGOTIATING (same) Buyer or seller (natural role) Edits terms; joint fields move PENDING ↔︎ APPROVED (§4.2). Does not change negotiation_status.
Freeze terms (finalise) NEGOTIATING AGREED Either party Requires complete required terms + zero pending joint approvals. Stamps agreed_at; opens the 10-day sign window.
Sign AGREED SIGNED (on 2nd match) Buyer then seller (either order) First signature waits; second advances only if both content hashes match (§5).
Re-open AGREED NEGOTIATING Either party Unlocks terms; voids signatures; re-pends joint fields; clears agreed_at.
Decline negotiation NEGOTIATING DECLINED Either party Stops the deal; row stays visible, read-only. Not available once SIGNED or ACTIVE.
Activate SIGNED (start_date ≤ today) ACTIVE System (daily job) Capacity / trader-portfolio / SCE checks may block activation until acknowledged or fixed.

Not allowed. You cannot re-open from SIGNED or ACTIVE. You cannot Freeze terms while joint terms are still pending or required fields are missing (server mirrors the wizard gate). You cannot sign mismatched hashes — the ceremony forces a re-sign after terms change.

What the list shows you

Status You see on the row You can
Negotiating (amber) Red badge = counterparty’s unseen changes Negotiate — open the wizard
Agreed (green) Buyer signed / Seller signed · “Sign by {date}” Sign if you have not signed · View agreement · Reopen terms…
Suspended (orange) Sign window lapsed · revival requester if any View · Request revival / Accept revival / Cancel request
Signed — Not listed — open under Contracts
Active — Not listed — open under Contracts
Declined Reason on the badge View

4.2 How negotiation editing works

Every field in both wizards carries an ownership badge — BUYER (indigo), SELLER (amber), JOINT (emerald), DERIVED (slate) — and you always act as your natural role; there is no switching hats. Single-party fields are simply yours or theirs. Derived fields (meter references, grid facts, wheeling charges) are read-only for everyone.

Joint fields run a per-field approval loop (joint terms approval):

  1. You enter a value and Save the step → the field goes PENDING, proposed by you. It stays editable for you; your counterparty sees “Counterparty proposed — your approval needed.”
  2. They Approve → the field locks (APPROVED & locked), or Reject → the field opens for their counter-value, which re-pends toward you.
  3. Repeat until every joint term is approved.

The whole wizard is read-only once the contract is AGREED, SUSPENDED, DECLINED, SIGNED or ACTIVE. View agreement lets you read every saved section without reopening it or clearing signatures.

4.2a Save your draft before leaving

The status above the fields tells you All changes saved or Unsaved changes. Next and Back keep your draft while this window is open. Save each edited step; saving one step does not save changes on another step.

flowchart LR
  A[Edit terms] --> B[Save each edited step]
  B --> C[Review saved terms]
  C --> D[Confirm freeze]
  1. Edit the fields you own and save each changed step.
  2. If you close with a draft, choose Keep editing to return or Discard and close to lose only unsaved changes. Previously saved terms remain in the agreement.
  3. Choose Freeze terms when all required terms and joint approvals are complete. Review the saved sections, then Confirm freeze. Return to editing cancels the review. If saved terms change before confirmation, review the latest version again.

4.3 Your targets in the wizard

The private negotiating brief you built while proposing does not stop at accept. On accept it is stamped onto the new PPA (physical_ppa_id or virtual_ppa_id), and in the wizard only you see target / walk-away chips beside joint fields that still have a position on your brief. Your counterparty never sees your chips (or yours theirs).

Reject on a joint field pre-fills the counter-value from your brief target — you can clear or overwrite it and type a manual value before you Save.

Approve past your own walk-away does not go through silently: the wizard names the field, the value you are about to lock, and your stated limit, and asks you to confirm. You may still approve — it is recorded as a conscious decision — or keep the field pending. Approving within your walk-away does not nag.

Physical — sellers. Approving shortfall joint terms while the contract’s annual penalty cap sits above the modelled margin from your brief evidence gets an extra interrupt. Buyers never see that warning.

Virtual — buyers. Approving a settlement volume basis of Generated when your brief’s matched fraction is low gets an interrupt: you will pay strike on volume you cannot use. Sellers never see that warning.

If the brief’s inputs have moved on (for example the book was re-forecast after the brief was written), the chips stay visible but are badged advice is stale — do not treat them as current; regenerate the brief when you can.

4.4 The physical wizard — core steps, optional Top-up and Termination

Ten core sections compose the physical PPA once a proposal is accepted, followed by Termination (step 12). Top-up (step 11) opens only when the buyer is an offtaker (OFFTAKER_IPP / OFFTAKER_TRADER). A trader buyer already carries top-up economics on its pool membership, so that deal type skips step 11 and still reaches Termination. Party and site links are already fixed from the proposal; the wizard finishes the negotiable terms. Ownership badges match §4.2: Buyer, Seller, Joint (propose → approve), Derived (read-only for everyone). §4.7 summarises what each family does at settlement; this section is the field-by-field walk of the screen.

Stepper titles (exact UI labels): Parties & Sites · Connection & Network · Capacity & Allocation · Tariff & Pricing · Curtailment · Spill & Excess · Shortfall & Delivery · Metering & Settlement · RECs & Carbon · Wheeling Charges · Top-up (offtaker-buyer only) · Termination.

Which steps open. The list never renumbers. Contract type greys out steps that do not apply:

Contract type Spill & Excess (step 6) Shortfall & Delivery (step 7)
AS_GENERATED Skipped Skipped
CAPPED Open Skipped
TOP Skipped Open
FIRM / BASELOAD / SHAPED Open Open

Capacity & Allocation (step 3) is also skipped when the contract type is AS_GENERATED (no capacity / volume / TOU fields to agree). Forecast status and the SCE panel live on that step, so they appear once the type needs volume terms. Contract type greys out steps 6/7 as the table above; deal type is the one thing that adds a step — Top-up (step 11) only for an offtaker buyer. Every deal also reaches Termination (step 12). Deal type also changes which tariff structures are starred, which meter references exist, and which trader terms completeness still demands (trader margins were captured in the proposal phase).

Step 1 — Parties & Sites

Purpose. Orient both seats, then lock the delivery shape and the calendar of the deal. The buyer drives contract type; start date and term are joint.

Read-only header (derived from the accepted proposal — not editable here):

Field Ownership What it means Why it matters
Deal Type Derived Which commercial topology this is (e.g. IPP→Off-taker, Trader→Off-taker). Sets which tariff structures the next pricing step will star as recommended.
Agreement Derived The permanent PPPA-… agreement reference. How you and ops will find this contract later.
Proposal · Originator / Counterparty Derived Who sent the proposal and who accepted it. Clarifies proposal seats vs buyer/seller commercial roles.
Buyer / Seller cards Derived Organisation name and linked site or pool. Confirms you are negotiating the right sites before you edit terms.

Editable / joint fields:

Field Ownership What it means Why it matters Example
Contract Type Buyer The delivery promise shape. Options are limited to shapes the seller supports. Everything later prunes from this: which capacity fields open, whether spill/shortfall steps appear, how settlement matches energy. Day-shift factory following solar → AS_GENERATED or CAPPED; 24/7 process → FIRM / BASELOAD; TOU-shaped delivery → SHAPED.
Start Date Joint First calendar day the deal can deliver / settle. Anchors the sign window, activation, and escalation years. Both sides must approve. 2026-09-01 after grid connection and deposit are ready.
Term (Years) Joint How many years the commercial sheet runs from start. Bound for volume planning and when you must renegotiate or renew. 3 years for a first wheeled deal; longer once both sides trust the plant.

Contract-type options (plain meaning):

Type Layman’s meaning
AS_GENERATED Buyer takes whatever the plant produces. Volume risk sits with the buyer.
FIRM Seller guarantees a fixed delivery schedule. Shortfall remedies apply.
CAPPED As-generated up to an annual MWh ceiling; above that follows spill/excess terms.
BASELOAD Flat 24/7 delivery obligation (often via storage or portfolio balancing).
TOP Take-or-pay: buyer commits to a minimum annual offtake or pays for the gap.
SHAPED Delivery shaped across peak / standard / off-peak by an agreed percentage split.

Step 2 — Connection & Network

Purpose. Surface the grid facts already on each site, and capture the buyer’s security-deposit status. Almost everything here is derived so you can see blockers early; only deposit (and sometimes CUOSA / grid status) is editable.

Generator grid connection (seller site):

Field Ownership What it means Why it matters Example
CUOSA Reference Derived or Seller The seller’s Connection and Use-of-System Agreement reference with Eskom. Without a CUOSA the plant cannot export onto the grid for wheeling. If the generator site already has a reference, it is derived (read-only). If it is missing and a seller generator is linked, the seller can enter it here — the value is saved on the GeneratorSite, not on the PPA. Trader-only sellers (no generator site) stay derived (—). Seller fills CUOSA-ESKOM-2026-001 when the site record was never updated; thereafter it stays derived.
MEC (MW) Derived Maximum Export Capacity — hard MW ceiling the plant may inject. Contracted capacity on step 3 must not exceed MEC. Plant MEC 10 MW → do not agree 12 MW contracted.
Connection Voltage Derived Voltage at the generator’s connection (MV / HV / EHV), from the transformer ratio. Confirms the network tier the deal rides. MV connection for a mid-size solar plant.
Grid Status Derived or Seller Where the plant sits on the connection journey: Application submitted → Budget quote received → Connected → Operational. Shows readiness to deliver. If the generator site already has a status, it is derived (read-only). If it is missing and a seller generator is linked, the seller can set it here — the value is saved on the GeneratorSite, not on the PPA. Trader-only sellers (no generator site) stay derived (—). Seller fills OPERATIONAL when the site record was never updated; thereafter it stays derived.

Buyer connection:

Field Ownership What it means Why it matters Example
ESA Reference Derived The buyer’s Electricity Supply Agreement reference. The ESA usually needs amendment so wheeled credits land on the right account. Blank ESA → chase the site record before go-live.
Connection Voltage Derived Voltage at the buyer’s point of supply. Physical wheeling expects MV (> 1 kV) or higher. Municipal MV customer.
Municipality Derived Local authority supplying the buyer, when applicable. Municipal buyers need an approved wheeling framework with that municipality. City of Cape Town.
Security Deposit Status Buyer Whether Eskom’s wheeling security deposit is still pending, paid, or waived. Energy cannot flow until it is Paid or Waived. Buyer marks PAID after transferring the deposit.

Step 3 — Capacity & Allocation

Purpose. Agree how much power / energy the deal covers and for how long the volume picture holds. Mostly joint commercial numbers; the seller owns forecast readiness; the buyer owns TOU shape when the type is SHAPED. Skipped for AS_GENERATED.

Field Ownership Enabled when What it means Why it matters Example
Contracted Capacity (MW) Joint FIRM, BASELOAD, SHAPED MW of plant capacity allocated to this buyer under the deal. Caps how much of the plant this contract can claim; must stay ≤ MEC. Agree 5 MW of a 10 MW plant.
Allocated Energy (MWh/yr) Joint BASELOAD, SHAPED Annual energy (MWh) committed for wheeling settlement. Sets the yearly energy target those shapes settle against. 12 000 MWh/yr for a data-centre block.
TOP Min Volume (MWh/yr) Joint FIRM, TOP Minimum annual offtake the buyer commits to under take-or-pay logic. If the buyer uses less, they still pay for this floor. Buyer accepts 8 000 MWh/yr minimum.
Capped Volume Limit (MWh/yr) Joint CAPPED only Maximum annual MWh the seller will deliver into this deal. Above the cap, spill/excess terms decide what happens to the surplus. Cap at 15 000 MWh/yr.
Forecast Status Seller Always on this step Whether the three-year wheeled-energy forecast for Eskom planning is still pending, submitted, or not required. Seller is responsible for forecast readiness before go-live. Seller marks SUBMITTED after filing with Eskom.
TOU Allocation — Peak % / Standard % / Off-Peak % Buyer SHAPED only How contracted energy is split across Eskom TOU periods. Must total 100%. Tells settlement when shaped energy is meant to land. 40% peak / 35% standard / 25% off-peak for a day-shift factory.

SCE acknowledgement (seller). When contracted volume sits above the plant’s safe contractable energy, the seller sees the SCE panel and must acknowledge the oversell before the deal can proceed honestly — the V3 capacity guard, not a buyer field.

Step 4 — Tariff & Pricing

Purpose. Seller puts the price offer on the table; buyer sets protection ceilings where the structure allows; both approve how price grows over time. Which numeric fields unlock depends on Tariff Type.

Field Ownership Enabled when What it means Why it matters Example
Tariff Type Seller Always The pricing structure for energy under this PPA. Recommended options for your deal type are starred (★) with a green highlight. Chooses which of the fields below matter and how settlement will price each interval. IPP→Off-taker often stars FIXED / ESCALATED / INDEXED; trader buyers often see MARKET_LINKED / FLOOR_CAP.
Energy Price (c/kWh) Seller Always Base energy rate in cents per kilowatt-hour. Primary price component for every structure. 95 c/kWh opening offer.
Capacity Charge (R/MW/month) Seller TWO_PART Fixed monthly Rand charge per MW of contracted capacity. Pays the seller’s fixed costs even when dispatch is low. R 45 000 /MW/month.
Floor Price (c/kWh) Seller FLOOR_CAP Lowest price the seller will accept when price floats. Protects seller revenue in a banded tariff. Floor 80 c/kWh.
Cap Price (c/kWh) Buyer CAPPED, FLOOR_CAP Highest energy price the buyer will pay. Buyer’s runaway-cost shield. Cap 128 c/kWh vs ~140 c grid all-in.
Price Ceiling (c/kWh) Buyer TWO_PART Absolute upper bound on the energy component of a two-part tariff (even after escalation). Stops the energy leg from drifting above what the buyer can afford. Ceiling 110 c/kWh.
Escalation Mechanism Joint Not for flat FIXED How the energy price adjusts each year: fixed (no change), CPI, CPI-minus, fixed %, or external index. Both sides must agree how bills grow. CPI tracking inflation; or FIXED_PCT at a negotiated rate.
Escalation Rate (%) Joint Mechanism = FIXED_PCT Annual percentage uplift when you chose a fixed-% mechanism. The number that actually compounds the price. 3.5% per year.
TOU Multipliers — Peak / Standard / Off-Peak Seller TOU_LINKED Multipliers applied to the base energy price by TOU period (peak usually highest). Shapes when the seller earns more within the day. Peak 1.4, standard 1.0, off-peak 0.7.

Tariff-type cheat-sheet:

Type Plain meaning
FIXED Single flat c/kWh for the full term — no escalation fields.
ESCALATED Starts at energy price, then rises each year per the mechanism.
INDEXED Tracks an external index (e.g. Megaflex / NERSA benchmark).
TOU_LINKED Base × TOU multipliers.
TWO_PART Energy c/kWh + capacity R/MW/month; buyer may set a price ceiling.
CAPPED Formula/index price with a buyer cap.
FLOOR_CAP Floats between seller floor and buyer cap.
MARKET_LINKED Tied to a wholesale market reference.
TAKE_OR_PAY Flat rate with a minimum volume commitment.
PAY_AS_GENERATED Pay only for metered delivery — no minimum volume.

Step 5 — Curtailment

Purpose. Decide who pays when energy is ready but not delivered — because the grid operator said stop, because the buyer could not take it, or because the seller caused the stop. Joint fields need both parties’ approval; buyer- and seller-caused remedies are role-owned.

Field Ownership What it means Why it matters Example
Grid Operator Curtailment Joint Who bears lost energy when the system operator curtails: Shared, Seller risk, Buyer risk, or Deemed always. Core shared risk clause for network/system events. SHARED with annual caps; or DEEMED_ALWAYS if the buyer will pay as if delivered.
Buyer-Caused Curtailment Buyer Remedy when the buyer cannot take energy: Deemed (buyer still pays), Makeup (accept later energy), Rebate, or None. Seller needs certainty when the buyer’s site is offline. Rare shutdowns → DEEMED; frequent planned outages → MAKEUP.
Seller-Caused Curtailment Seller Remedy when the seller causes the stop: None, Replacement energy, Capacity reduction, or Credit. Buyer protection when the plant under-performs for seller reasons. REPLACEMENT at seller cost; or CREDIT for undelivered MWh.
Network Constraint Risk Joint (read-only default) Who bears curtailment from network constraints specifically. Shown for transparency; currently a fixed platform default (not editable in the wizard). Displayed value — both sides see the same default.
Annual Hours Cap Joint Max hours/year of grid-operator curtailment allowed under SHARED before the exceedance remedy kicks in. Enabled only when grid allocation is SHARED. Cap at 100 hours/year.
Annual Volume Cap (%) Joint Max % of annual contracted energy that may be curtailed under SHARED before exceedance. Same SHARED gate as hours. 5% of annual contracted energy.
Cap Exceedance Remedy Joint What happens if SHARED caps are breached: Deemed, Reprice, Terminate, or Negotiate. SHARED path only. DEEMED delivery above the cap.
Deemed Energy Method Seller (read-only default) How “would-have-been-generated” energy is calculated when curtailment is deemed delivered. Shown read-only today (platform default). Resource power curve / historical average / contracted profile / independent.
Makeup Window (months) Joint Months within which makeup energy must be delivered. Opens under SHARED, or when buyer chose MAKEUP, or seller chose REPLACEMENT. 3 months to deliver makeup.
Planned Notice (days) Joint (read-only default) Minimum advance notice for planned curtailment / maintenance. Fixed default in the current wizard. e.g. 14 days (display).
Emergency Confirm (hours) Joint (read-only default) Hours within which an emergency curtailment must be confirmed to the other party. Fixed default. e.g. 24 hours (display).
Force Majeure Treatment Joint (read-only default) How FM events are treated: Excused, Insurance, or Shared. Fixed default. Obligations suspended / insurance / shared loss.
FM Termination (days) Joint (read-only default) After this many continuous FM days, either party may terminate. Fixed default. e.g. 180 days (display).
FM Status Updates (days) Joint (read-only default) How often the affected party must update the other during FM. Fixed default. e.g. every 7 days (display).

Grid-operator choices in plain words: SHARED — both absorb a portion; SELLER_RISK — seller bears the cost; BUYER_RISK — buyer pays for curtailed energy; DEEMED_ALWAYS — treat as delivered and bill at contract rate.

Step 6 — Spill & Excess

Purpose. What happens when the plant (or the deal) produces more than the buyer takes, and what the buyer owes when they take less. Open only for CAPPED / BASELOAD / FIRM / SHAPED. Seller owns disposal of surplus generation; buyer owns under-consumption; banking is joint.

Field Ownership What it means Why it matters Example
Spill Treatment Seller What happens to unmatched surplus generation: Forfeited, Banked, Eskom buyback, Third party, or Discounted credit. Seller’s main lever for surplus electrons. Bank surplus into later months; or sell via Eskom buyback.
Spill Credit (%) Joint Percentage credit applied when spill is settled as a discounted credit. Shared commercial value of spilled energy. 70% of contract rate as spill credit.
Excess Allowed Joint Whether generation above the deal envelope is allowed: Yes, No, or Buyer option. Gates whether excess disposal rules matter. YES with a disposal method agreed below.
Excess Disposal Method Seller How allowed excess is handled: Retained, Spot market, Buyer discount, Curtailed, or counted toward ToP. Seller decides the disposal path once excess is allowed. BUYER_DISCOUNT for surplus the buyer can still use.
Excess Discount (%) Joint Discount % when excess is sold to the buyer at a reduced rate. Shared price for that surplus tranche. 20% off contract rate.
Eskom Buyback Status Seller Whether an Eskom buyback path is None, Active, or Pending. Seller’s route for surplus into the utility. ACTIVE once the buyback agreement is live.
Banking Enabled Joint Whether surplus can be carried forward as a banking credit. Turns the banking ledger on or off for this PPA. Yes for seasonal load.
Banking Period Joint How often the banking bucket resets or rolls: Monthly, Quarterly, Annual, Rolling-12. Cadence of bank credits. QUARTERLY.
Banking Cap (%) Joint Maximum banked energy as a % of contracted volume. Stops unlimited carry-forward. Cap banking at 10%.
Banking Expiry Joint What happens to unused bank: Use-or-lose, Roll-decay, or Never. Shared rule for stale credits. USE_OR_LOSE at period end.
Inter-TOU Banking Joint Whether banked energy can move across TOU periods: Not allowed, Within season, Across seasons. Important when peak and off-peak have different value. WITHIN_SEASON only.
Under-Consumption Buyer What the buyer owes when they use less than nominated / committed energy: No penalty, ToP applies, Demand charge, or Makeup obligation. Buyer’s downside when load drops. Flexible load → NO_PENALTY; defend ToP → TOP_APPLIES.

Step 7 — Shortfall & Delivery

Purpose. Performance warranty when the seller promised firm or shaped delivery. Open only for FIRM / TOP / BASELOAD / SHAPED. Seller supplies plant commitments and caps; buyer sets compensation and reporting; several framework fields are joint.

Field Ownership What it means Why it matters Example
Shortfall Type Joint What “missed” means: Capacity, Volume, or Delivery. Defines the yardstick settlement uses. VOLUME shortfall vs annual MWh.
Measurement Interval Joint How often shortfall is measured: Monthly TOU, Monthly aggregate, Quarterly, Annual. Cadence of performance checks. MONTHLY_TOU.
Guaranteed Availability (%) Seller Availability % the seller warrants. Core seller performance promise. 97%.
Deadband (%) Seller Small miss that does not trigger a remedy. Avoids penalties for noise. 2% deadband.
Annual Degradation (%) Seller Allowed year-on-year performance fade (e.g. panels). Honest long-term warranty slope. 0.5%/year.
Yield Benchmark Joint Probability benchmark the guarantee is measured against: P50 / P75 / P90. Shared “how conservative” the yield target is. P50 for a balanced ask; P90 is stricter on the seller.
Compensation Method Buyer How the buyer is made whole: Capacity reduction, Liquidated damages, Replacement energy, or Penalty premium. Buyer’s preferred remedy form. Cash → LIQUIDATED_DAMAGES; need electrons → REPLACEMENT_ENERGY.
Penalty Rate (%) Joint Rate applied when a penalty path is used. Shared sting of under-delivery. 10% of shortfall value.
Annual Penalty Cap (%) Seller Max penalties in a year as % of contract value. Seller’s yearly liability ceiling — approving joint shortfall terms above your brief’s modelled margin triggers an extra interrupt (§4.3). Cap at 20% of annual contract value.
Lifetime Penalty Cap (%) Seller Max penalties over the whole term. Seller’s lifetime liability ceiling. Cap at 50% of lifetime contract value.
Surplus Banking Joint Whether surplus periods can offset later shortfalls: None, Quarterly, Annual. Softens shortfall with earlier surplus. ANNUAL netting.
Cure Period (months) Seller Months the seller has to cure a shortfall before harder remedies. Seller breathing room. 2 months.
Reporting Buyer How performance is reported: Monthly self-report, Monthly / Quarterly / Annual independent engineer. Buyer’s audit comfort. MONTHLY_IE for a large firm block.

Excused events (yes/no toggles — when true, that cause does not count as a shortfall):

Field Ownership What it means
Force Majeure Joint FM events excused from shortfall maths.
Grid Curtailment Joint System-operator curtailment excused.
Buyer Curtailment Buyer Buyer’s own curtailment excused (usually yes if buyer-caused has its own remedy).
Scheduled Maint Seller Planned maintenance windows excused.
Network Constraints Joint Network constraint events excused.
Extreme Weather Seller Extreme weather excused from the warranty.

Step 8 — Metering & Settlement

Purpose. Confirm which meters settlement will read, how often you reconcile money and energy, and how the seller nominates delivery. Meter references are derived from linked sites; cadence is joint; nomination is seller-owned.

Field Ownership What it means Why it matters Example
Generation Meter Ref Derived Eskom-registered meter device number at the generator point of connection. Measures energy injected for wheeling settlement. Blank when there is no linked IPP generator (e.g. some trader sellers). Device number from the generator site meter.
Consumption Meter Ref Derived Eskom-registered meter at the buyer’s point of supply. Measures consumption and reconciles wheeling credits. Blank when there is no linked off-taker site. Device number from the off-taker site meter.
Settlement Frequency Joint How often wheeled energy is reconciled and invoiced: Daily, Weekly, Bi-monthly, Monthly, Quarterly. Once the Generator Site has an AGREED contract, this cadence is locked for every later deal sourcing from that plant (physical or virtual) so shared-meter allocation can conserve energy — V8 §1.1. Faster settlement reduces cash-flow surprise; both sides must approve. MONTHLY for most wheeled PPAs (or the site lock, if one already exists).
Nomination Type Seller Whether the generator nominates a single buyer or multiple buyers for wheeled energy. Multiple nominations split generation across several offtakers. SINGLE for a dedicated offtaker deal.

Step 9 — RECs & Carbon

Purpose. Whether environmental attributes travel with the energy, on which registry, how the buyer accounts for Scope 2, and which carbon methodology the seller uses. Enable flags and bundling are joint; registry and carbon method are seller; Scope 2 is buyer.

Field Ownership What it means Why it matters Example
RECs Enabled Joint Whether Renewable Energy Certificates are issued for energy under this PPA. Needed for market-based Scope 2 claims. On for a corporate RE100 buyer.
Carbon Credits Enabled Joint Whether carbon emission reductions are quantified and credited to the buyer. Separate from RECs — turn on only if the deal includes carbon. On when the buyer wants carbon lines on the statement.
REC Registry Seller Where certificates are issued: ZaRECs (SANEDI), I-REC, or Blockchain. Seller supplies the registry path. ZARECS for domestic reporting; I_REC for global Scope 2.
Scope 2 Method Buyer Market-based (contractual instruments / RECs) vs Location-based (grid average). Buyer’s GHG accounting choice — market-based needs RECs. Corporate programme → MARKET; no certificate path → LOCATION.
REC Bundling Joint Bundled (RECs travel with the energy) vs Unbundled (RECs sold or retained separately). Who ends up holding the green claim. BUNDLED for a standard corporate PPA.
REC price (R/certificate) Joint Optional contract price per REC. Distinct from the estimated-grade reference price on the Certificate Desk. Required when bundling is UNBUNDLED and you set a price — completeness will not let you Freeze terms with a zero. R 35 per certificate.
Non-double-counting warranty Seller Seller warrants these certificates are not counted elsewhere. The checkable report lives in V19 §08. On for a corporate claim.
Carbon Methodology Seller How tCO₂ is calculated: Grid average, Build margin, or Combined margin. Seller’s carbon accounting method when carbon is enabled. GRID_AVG for a simple annual factor.
Credit ownership Joint Who owns tradable credits if a registered offset project exists. Default BUYER. Only bites when V19 §14 applies. BUYER unless the IPP is keeping credits.
Offset price (R/tCO₂e) Joint Optional contract price per tonne. Never confused with the estimated-grade CertificatePrice. Required when carbon is enabled and a price is set. R 180 / tCO₂e.

Step 10 — Wheeling Charges

Purpose. Show which network loss factors and use-of-system charges apply to this deal’s path. Everything is derived — nothing is editable here. Applicability was decided from the proposal’s network path and imported into the PPA on accept; rates come from tariff data and may still be blank until priced.

Loss factors (only items marked applicable are shown):

Field Ownership What it means
DLF Derived Distribution Loss Factor — energy wheeled on Eskom distribution.
TLF Derived Transmission Loss Factor — energy wheeled on transmission.
MLF Derived Municipal Loss Factor — energy wheeled on a municipal network.

Use-of-system charges (same rule — applicable only):

Field Ownership What it means
TUOS Derived Transmission Use of System.
eTUOS Derived Embedded Transmission Use of System (transmission charges passed through to the distributor).
DUOS Derived Distribution Use of System.
MDUOS Derived Municipal Distribution Use of System.

If none apply, the step says so plainly — typical for a trader-to-trader deal or sites with no physical wheeling path (“No wheeling charges apply”).

Step 11 — Top-up

Purpose. Name the contract behind shortfall energy: who supplies it, at what price, under what monthly cap. The step is Buyer owned and read-only once the deal leaves NEGOTIATING. It does not appear for a trader-buyer deal — that seat edits the same fields on the pool membership form next to Shortfall top-up.

A monthly cap without a source is refused, and a trader-pool source without a named pool is refused. Both surfaces share those messages.

Field Ownership What it means Why it matters
Source Buyer ESKOM_RETAIL · TRADER_POOL · MARKET_ORDER, or blank. Blank keeps today’s valuation-only shortfall (eskom_topup_ckwh). A named source is the contract the sourcing hook acts on.
Price basis Buyer FIXED · INDEXED · POOL_RATE. Required unless source is MARKET_ORDER. A market order’s price is whatever IdmDecision computes at the moment of sourcing, never a term-level sticker.
Fixed rate (c/kWh) Buyer Optional override. Blank defers to resolve_topup (membership → book default). The Eskom-retail booking and a carried market-order shortfall use this rate.
Draw-from pool Buyer Required when source is TRADER_POOL — a supply pool on the same book. The allocator draws that pool’s leftover hourly supply, tagged [:top_up_draw].
Monthly cap (kWh) Buyer Nil is uncapped. Once the month-to-date sourced volume hits the cap, further shortfall that month reverts to valuation-only.
Notice (days) Buyer Nil is immediate. Desk judgement, not a regulated figure.
Tolerance (kWh) Buyer Per-hour shortfall at or below which sourcing does nothing. Nil sources from the first kWh. Stops the hook firing on rounding noise.

What each source does once the deal is active (settlement detail in V8 §7.2.1):

Source What happens on a real (ACTUAL / NOMINATED) shortfall
Eskom retail The :SHORTFALL line is still priced as today. Settlement posts a :replacement_energy pair labelled Replacement energy — Eskom retail, carrying the term.
Trader pool draw The named pool’s leftover supply is matched through the ordinary merit order. Energy that moves is an :ALLOCATION tagged [:top_up_draw]; whatever the pool cannot cover stays :SHORTFALL.
Market order The shortfall is a priced candidate through the same IdmDecision every other intraday deviation uses. A :redeclare is folded into the existing IDM action list (tagged with the term). A :carry is booked as Eskom-retail replacement energy. Forecast and simulation runs never source.

The membership form on Strategy → Pools carries the same fields next to Shortfall top-up, so a demand member that is not on a physical PPA can still name a term. eskom_topup_ckwh itself is unchanged — a member with no TopUpTerm prices shortfall exactly as it did before this step existed.

4.5 The virtual wizard — ten different steps

Ten steps compose the virtual PPA (CfD / Virtual Wheeling) once a proposal is accepted. Sites and deal type are already fixed; the wizard finishes the negotiable money, readiness, and legal terms. Ownership badges match §4.2: Buyer, Seller, Joint (propose → approve), Derived (read-only). Chapter §4.7 and §9 explain why the CfD and matching matter; this section is the field-by-field walk of the screen.

Stepper titles (exact UI labels): Parties & Sites · Eskom Registration · Capacity & Term · Tariff & Pricing · Generator Obligations · Metering & Settlement · RECs & Carbon · Legal Terms · Wheeling Charges · Review & Submit.

Unlike the physical wizard, every step stays open — there is no contract-type pruning. Deal type still changes who must fill the buyer’s Eskom tariff category (an off-taker buyer has one; a pure trader buyer may not).

Step 1 — Parties & Sites

Purpose. Orient both seats before you edit money terms. Everything on this step is derived from the accepted proposal — nothing is editable here.

Field Ownership What it means Why it matters
Buyer card Derived Buyer organisation name and linked site or trader pool. Confirms you are negotiating the right consumer side.
Seller card Derived Seller organisation name and linked generator or trader pool. Confirms the plant / book behind the CfD.
Deal Type Derived Commercial topology (e.g. Off-taker↔︎IPP, Off-taker↔︎Trader). Sets which later completeness rules apply.
Agreement Derived Permanent VPPA-… agreement reference. How you and ops find this contract later.

The blue info strip reminds both sides: this is a contract for difference settled through Eskom’s Virtual Wheeling Platform — each party stays independently connected to the grid; electrons are not re-routed to the buyer.

Step 2 — Eskom Registration

Purpose. Capture the six conditions precedent (CPs) — paperwork and registrations that must be true before the virtual deal can activate. Ticking a box here means “we assert this is in place (or will be before go-live).” CPs are recorded at negotiation; they are discharged before activation, not before Freeze terms / AGREED (§4.6).

Each field is Yes / No (true / false). Prefill often comes from facts already on the site or proposal; re-asking for something already on file is a defect, not diligence (§9.7).

Field Ownership What it means Why it matters Example
Grid Connection Agreement Seller Seller has a valid grid connection / use-of-system path for the plant. Without connection, there is nothing to register for virtual wheeling. Seller marks Yes once the CUOSA / connection agreement is signed.
VWA Registration Joint Both sides’ Virtual Wheeling Agreement registration with Eskom is done (or accepted as a shared gate). The most common critical-path item — start dates that precede VWA clearance are a frequent avoidable error. Both approve Yes when Eskom confirms VWA registration.
NERSA Licence Seller Required generation / trading licence is in place where the law needs one. Blocks go-live if the seller is not legally cleared to sell. IPP marks Yes with an active NERSA generation licence.
Smart Metering Seller Interval / smart meters needed for VWP settlement are installed and readable. Virtual settlement needs trustworthy half-hour (or better) data. Seller marks Yes after AMI / smart meters are commissioned.
Insurance Certificates Seller Required insurance certificates exist for the plant / deal. Lender and buyer comfort before activation. Seller marks Yes when brokers issue the pack.
Environmental Auth Seller Environmental authorisation for the plant is in place. Compliance gate for many generation sites. Seller marks Yes with a current EA on file.

Step 3 — Capacity & Term

Purpose. Agree how large the hedge is and how long it runs. All three fields are joint — either side proposes; the other must approve.

Field Ownership What it means Why it matters Example
Contracted Capacity (MW) Joint MW of plant (or book) capacity allocated to this virtual deal. Sizes the energy the CfD can cover; should fit the buyer’s load and matching story. Agree 5 MW of a 10 MW solar plant for a daytime factory.
Start Date Joint First calendar day the CfD / VWA can settle. Anchors activation and escalation years. Prefer a date after critical CPs (especially VWA). 2026-10-01 once VWA registration is expected clear.
Term (Years) Joint How many years the commercial sheet runs from start. Bound for planning and when you must renew or renegotiate. 10 years for a corporate hedge; shorter for a first pilot.

Step 4 — Tariff & Pricing

Purpose. Set the strike — the price the CfD settles against — plus how it grows, floor/cap protection, the buyer’s retail tariff category (feeds the Gen-Wheeling / WER credit), and settlement volume basis (matched vs generated). Seller owns the strike structure and rates; buyer owns the cap and tariff category; escalation and volume basis are joint.

Recipient sellers. If you received the proposal without composing it in Proposal Studio, an amber banner offers Suggest / Why? on the seller rate fields (flat, TOU peak/standard/off-peak, floor). Accept or adjust before you lock your side — same idea as studio advice, inside the wizard.

Field Ownership Enabled / used when What it means Why it matters Example
Strike Price Structure Seller Always FLAT (one rate) or TOU (peak / standard / off-peak rates). Chooses which strike numbers matter. TOU often lines up better with TOU Gen-Wheeling credits. Daytime solar deal → TOU; simple hedge → FLAT.
Flat Strike Price (c/kWh) Seller Structure = FLAT (still shown; required for FLAT) Single strike in cents per kWh for every interval. The number the CfD compares to the credit / reference. Flat 95 c/kWh.
TOU Peak (c/kWh) Seller Structure = TOU Strike in peak hours. Usually highest — matches expensive peak credits / retail. Peak 110 c/kWh.
TOU Standard (c/kWh) Seller Structure = TOU Strike in standard hours. Mid band of the day. Standard 90 c/kWh.
TOU Off-Peak (c/kWh) Seller Structure = TOU Strike in off-peak hours. Usually lowest. Off-peak 70 c/kWh.
Escalation Mechanism Joint Always How the strike adjusts each year: fixed (no change), CPI, CPI-minus, fixed %, or external index. Both sides must agree how the hedge price grows. CPI to track inflation; or FIXED for a flat term.
Escalation Rate (%) Joint Mechanism needs a rate (e.g. FIXED_PCT) Annual percentage uplift when you chose a fixed-% path. The number that compounds the strike. 3.5% per year.
Floor Price (c/kWh) Seller Optional protection Lowest strike the seller will live with when price floats or is reviewed. Seller’s downside shield (often mirrors a private walk-away). Floor 80 c/kWh.
Cap Price (c/kWh) Buyer Optional protection Highest strike the buyer will pay. Buyer’s runaway-cost shield — often sized under break-even retail + WER − VWP fee. Cap 128 c/kWh.
Buyer Eskom Tariff Category Buyer Required when the buyer is an off-taker with an Eskom account Which Eskom retail tariff the buyer sits on (Megaflex, Miniflex, Ruraflex, Nightsave Urban/Rural, Megaflex Gen, Municipal). Drives the Gen-Wheeling credit rates the WER uses. Wrong category → wrong refund maths. Factory on MEGAFLEX.
Settlement volume basis Joint Always MATCHED or GENERATED — what MWh the CfD multiplies. The most consequential virtual commercial choice (§4.7, §9.2). Daytime load under solar → prefer MATCHED so the buyer does not pay strike on night spill.

Settlement volume basis in plain words:

Choice Who carries mismatch risk Plain meaning
MATCHED Seller CfD only on the hour-by-hour overlap of generation and consumption. Unmatched generation has no CfD.
GENERATED Buyer CfD on (essentially) all plant output under the deal. Buyer may pay strike on kWh that earn no WER credit.

Escalation cheat-sheet:

Mechanism Plain meaning
FIXED Strike stays put for the term.
CPI Tracks consumer inflation.
CPI_MINUS CPI less an agreed margin.
FIXED_PCT Grows by the escalation rate % each year.
INDEXED Tracks an agreed external index.

Step 5 — Generator Obligations

Purpose. Performance promises, what happens if the plant under-delivers, who bears curtailment risk, buyer offtake discipline, and insurance. Three blocks on one step: Performance Terms, Curtailment, Insurance.

Performance Terms

Field Ownership What it means Why it matters Example
Guaranteed Annual Yield (MWh) Seller Annual MWh the seller warrants the plant will produce for this deal. Core volume promise. Under GENERATED settlement, a high guarantee can raise the buyer’s unmatched exposure — choose deliberately (§9.7). Guarantee 12 000 MWh/yr.
Yield Benchmark Seller Probability benchmark the yield is measured against: P50 / P75 / P90. How conservative the promise is. P90 is harder on the seller. P50 for a balanced ask.
Availability Warranty (%) Seller % of time the plant must be available to generate. Separate from yield — covers downtime. 97%.
Annual Degradation (%) Seller Allowed year-on-year fade (e.g. panels). Honest long-term slope so year-10 is not judged like year-1. 0.5%/year.
Underperformance Remedy Joint What happens if the seller misses: Liquidated damages, Make-good energy, Price adjustment, or None. Shared remedy shape when the warranty fails. Cash → LIQUIDATED_DAMAGES; need MWh → MAKE_GOOD.
LD Rate (c/kWh) Joint Liquidated-damages rate per shortfall kWh when LDs apply. Shared sting of under-delivery. 15 c/kWh on shortfall.
Min Offtake (%) Buyer Minimum share of contracted / available energy the buyer commits to take (or settle) under offtake discipline. Buyer’s volume commitment on their side of the hedge. Buyer accepts 80% minimum offtake.
Offtake Shortfall Penalty (c/kWh) Joint Penalty rate when the buyer misses the minimum offtake. Shared price of buyer under-consumption. 10 c/kWh on the shortfall.

Underperformance remedies in plain words: LIQUIDATED_DAMAGES — cash per missed unit; MAKE_GOOD — deliver the missing energy later; PRICE_ADJUSTMENT — reprice the deal; NONE — no contractual remedy beyond the other terms.

Curtailment

Field Ownership What it means Why it matters Example
Curtailment Risk Allocation Joint Who bears lost production when the plant is curtailed: Seller, Buyer, Shared, or Eskom. Simpler than the physical wizard’s multi-cause block — one shared allocation for the virtual CfD. SHARED; or ESKOM when utility-caused stoppages sit with the utility path.
Deemed Energy Cap (hours/yr) Joint Max hours/year of “deemed” (treated-as-generated) energy under the curtailment rules. Caps how much fictional generation can enter settlement. Cap at 100 hours/year.

Insurance

Field Ownership What it means Why it matters Example
All-Risk Property Seller Whether all-risk property cover is required / in place. Plant asset protection. Seller selects Yes.
Business Interruption Seller Whether BI cover is required / in place. Revenue protection if the plant is down. Yes for a financed plant.
Public Liability Seller Whether public liability cover is required / in place. Third-party damage protection. Yes.
Professional Indemnity Seller Whether PI cover is required / in place. Advice / professional-risk cover where relevant. Yes if the deal structure needs it; else No.
Min Coverage (R million) Joint Minimum Rand cover (millions) the parties agree must be held. Shared floor on insurance size. R 50 million.

Step 6 — Metering & Settlement

Purpose. Choose who runs the Virtual Wheeling Platform service path and how often money and energy settle. Both fields are joint.

Field Ownership What it means Why it matters Example
VWP Vendor Joint Platform / vendor path for virtual wheeling data and settlement: Mezzanine, Enerweb, or Other. Tells ops which VWP stack this deal rides. MEZZANINE for the standard Eskom VWP path in the demo.
Settlement Frequency Joint How often the CfD is calculated and invoiced: Monthly, Weekly, or Daily. Same Generator Site lock as physical — a later virtual deal cannot pick a different cadence from an earlier AGREED contract on that plant (V8 §1.1). Faster settlement reduces cash-flow surprise; both sides must approve. MONTHLY for most corporate hedges (or the site lock, if one already exists).

Step 7 — RECs & Carbon

Purpose. Whether environmental attributes travel with the hedge, on which registry, how the buyer accounts for Scope 2, and which carbon methodology the seller uses. Enable flags are joint; registry and carbon method are seller; Scope 2 is buyer.

Field Ownership What it means Why it matters Example
RECs Enabled Joint Whether Renewable Energy Certificates are issued for energy under this PPA. Needed for market-based Scope 2 claims. On for a corporate RE100 buyer.
REC Registry Seller Where certificates are issued: ZaRECs (SANEDI), I-REC, or Blockchain. Seller supplies the registry path. ZARECS for domestic reporting; I_REC for global Scope 2.
Scope 2 Method Buyer Market-based (contractual instruments / RECs) vs Location-based (grid average). Buyer’s GHG accounting choice — market-based needs RECs. Corporate programme → MARKET.
Carbon Credits Enabled Joint Whether carbon emission reductions are quantified and credited. Separate from RECs — turn on only if the deal includes carbon. On when the buyer wants carbon lines on the statement.
REC price (R/certificate) Joint Optional contract price per REC. Distinct from the estimated-grade reference price. Required when unbundled and priced. Taught in V19 §10. R 35 per certificate.
Non-double-counting warranty Seller Seller warrants these certificates are not counted elsewhere. The report is V19 §08. On for a corporate claim.
Carbon Methodology Seller How tCO₂ is calculated: Grid average, Build margin, or Combined margin. Seller’s carbon accounting method when carbon is enabled. GRID_AVG for a simple annual factor.
Credit ownership Joint Who owns tradable credits if a registered project exists. Default BUYER. V19 §14. BUYER.
Offset price (R/tCO₂e) Joint Optional contract price per tonne. Required when carbon is enabled and priced. R 180 / tCO₂e.

Purpose. Force majeure, termination triggers, payment hygiene, liability cap, disputes, regulatory change, assignment, and confidentiality. Almost everything is joint; Eskom Default and Payment Due are buyer-owned.

Force Majeure

Field Ownership What it means Why it matters Example
FM Definition Joint How broad force majeure is: Standard, Extended, or Narrow. Sets which “acts of God / beyond control” events excuse performance. STANDARD for a balanced corporate deal.
FM Notice (days) Joint Days within which the affected party must notify the other of an FM event. Late notice can lose the protection. 7 days.
FM Termination Trigger (days) Joint Continuous FM days after which either party may terminate. Escape hatch for endless FM. 180 days.

FM definition in plain words: STANDARD — usual legal FM list; EXTENDED — broader (more events excused); NARROW — tighter (fewer excuses).

Termination Events (Yes / No — whether that event is a contractual termination trigger)

Field Ownership What it means Why it matters Example
Material Breach Joint Serious breach of contract can end the deal. Core exit for non-performance. Yes.
Insolvency Joint Insolvency / business rescue of a party can end the deal. Credit-risk exit. Yes.
Change of Control Joint Sale / change of ownership of a party can end (or reopen) the deal. Counterparty-identity protection. Yes if you care who you are dealing with.
Eskom Default Buyer Buyer’s Eskom account default can trigger termination rights. Buyer-side utility standing. Buyer selects Yes if account default must be a hard exit.

Payment & Disputes

Field Ownership What it means Why it matters Example
Cure Period (days) Joint Days a party has to fix a breach before harder remedies. Breathing room before termination / damages. 30 days.
Invoice Cycle Joint When invoices are raised: Monthly or End of month. Cash-flow calendar — this is the base the billing run uses for the due date (V15 §7, §8). MONTHLY.
Payment Due (days) Buyer Days after invoice until payment is due. Buyer’s payment clock — the issuer run reads this onto the document; a missing value prints as standard terms (30 days). 30 days from invoice.
Late Interest (%) Joint Interest rate on late payments. Shared cost of paying late. 2% per month (or as negotiated).
Liability Cap Joint Ceiling on damages: Annual contract value, Total contract value, Uncapped, or Custom. How bad a worst-case claim can get. Cap at ANNUAL_VALUE.
Dispute Resolution Joint Forum for disputes: AFSA, ICC, Mediation then arbitration, or Expert determination. Where fights get resolved. AFSA for domestic deals; ICC for cross-border.
Expert Body Joint When disputes use an expert: SAICE, SAIEE, or Agreed ad-hoc body. Technical fights (meters, yield) often need an expert, not a full trial. SAIEE for electrical metering disputes.
Regulatory Change Risk Joint Who bears law / tariff / VWA rule changes: Shared, Buyer, Seller, or Termination right. Virtual deals are sensitive to Eskom / NERSA rule shifts. SHARED; or TERMINATION if either side may walk on material change.
Assignment & Transfer Joint Whether a party may transfer the contract: Consent required, Lender permitted, No transfer, or Free transfer. Who can inherit the deal. LENDER_PERMITTED for a project-financed plant.
Confidentiality Joint Mutual NDA, Standard confidentiality, or None. How tightly commercial terms stay private. MUTUAL_NDA.

Step 9 — Wheeling Charges

Purpose. Explain that network / Gen-Wheeling money is not negotiated as editable wizard fields. Charges and credits are determined by Eskom from the buyer’s tariff category (step 4) and published Gen-Wheeling rates. This step is read-only orientation.

What you see:

In lay terms: for each time-of-use band, take the smaller of what the buyer consumed and what was treated as wheeled, multiply by that band’s Gen-Wheeling credit rate, then add the bands up. That refund is the credit leg of the three cash flows in §9.1.

Step 10 — Review & Submit

Purpose. Final glance before Freeze terms. The summary grid is derived from terms you already agreed — use Back (or the stepper) to change anything.

Summary tile What it shows
Agreement Ref VPPA-… reference.
Deal Type Commercial topology.
Capacity Contracted MW (or —).
Term Years (or —).
Start Date Agreed start (or —).
VWP Vendor Mezzanine / Enerweb / Other.
Settlement Monthly / Weekly / Daily.
Status Current negotiation status (e.g. Negotiating).

The green banner reminds you: navigate back to any step to fix gaps. The footer’s Freeze terms gate still enforces completeness and joint approvals (§4.6) — Review alone does not finalise an incomplete sheet.

4.6 Freeze terms — and the gate

Freeze terms is available when required terms and joint approvals are complete, and every local edit has been saved. It first opens read-only review of the saved version. Only Confirm freeze advances the deal to AGREED and starts the signing window. The server rejects an unsaved draft or a saved version changed since review. See §4.2a for saving and leaving safely.

What each wizard demands:

Once finalisable, Freeze terms also appears on every earlier step, so a deal can be concluded from anywhere in the wizard.

4.7 Settlement consequences — and terms outside the wizard

Sections §4.4 and §4.5 are the field-by-field screens. This section is what those families do to settlement (and the few commercial terms that never appear in the negotiation wizard).

Capacity & volume [mostly Joint] — contracted capacity, allocated energy, ToP min volume and capped volume limit bound the matched energy at settlement; for ToP they can create a payment even when consumption falls short (V8 §7). On a buyer- or seller-originated proposal draft, these (and other party / joint fields) can arrive with a suggested value and a short rationale from the matching advisor — you accept or override; nothing is binding until you send. > Where suggestions are taught. Buyer side — shape, cap price, seeded > Simulate defaults — > V3 §13.2.1. > Seller side — price card, floor, warranty, seeded Sales defaults — > V4 §6.4.1.

Tariff & pricing / escalation — at settlement the pricer applies the chosen structure per interval, TOU period and escalation year. Escalation compounds per calendar year; the strategy engine assumes the same curve when valuing the contract (V3).

Curtailment — settlement prices deemed energy at the contract rate and tags curtailment lines with the instruction that caused them (market side in V3 §17).

Spill, excess & banking — settlement’s adjuster writes spill credits and maintains the banking ledger drawdown (V8 §7).

Shortfall & delivery — settlement computes shortfall against the guaranteed profile net of excused windows and prices the chosen remedy (V8 §7).

Metering & settlement cadence — meter references come from the sites; Settlement Frequency chooses how often a settlement period closes (daily contracts settle every morning at 01:00, monthly on the 1st — V1 §2).

RECs & carbon — drive the statement’s certificate lines and the off-taker book’s green-coverage KPI (V3 §13).

Trader terms [captured at the proposal — not in the negotiation wizard] — a trader buyer’s margin (type, c/kWh or %, back-to-back pricing); a trader seller’s source guarantee, portfolio/replacement rights and licence warranty. Chain settlement and the trader P&L read these (V8 §10). Compose them in the trader studios (§3.4e / §3.4f).

Wheeling charges [Derived] — loss factors and UoS charges of V2 §8.3, resolved from the deal’s network path. Nobody negotiates them in the wizard; the billing-responsibility panel in the proposal studios (§3.4) shows who pays.

Virtual family at settlement — one formula: the CfD of V0 §5, applied per period at the chosen frequency (V8 §14). Settlement volume basis decides what that formula multiplies — and therefore who pays when generation and consumption do not line up. Settle on generated volume and the buyer pays strike for plant output that may earn no WER credit; settle on matched volume only and the seller carries that mismatch. There is no quiet default. Cash-flow intuition: §9.

How long a counterparty offer stands, and that private review notes stay private until you accept or share, remain under §3.2 and §3.5a.

Follow along. Seat: IPP 2 (ipp_2@webill.net) — the negotiation ladder. Path: Negotiations. You should see one Negotiating deal with OffTaker A (open it: ownership badges, and the wizard as the seller sees it), three Agreed deals showing Sign by dates and the Sign button, one Declined with its reason on the badge, and the Active book. For the virtual wizard, switch to Off-taker C — its one Negotiating deal is virtual.

Data. full_demo · seed 42 · stage S04 (lifecycle) · sealed 2026-07-15.

4.8 Price devices — upside sharing and the volume strike

Tariff & Pricing now includes folded Upside sharing and Volume strike panels in both wizards. Leave a device disabled to retain the existing settlement. Upside sharing captures the seller’s share of the positive difference between published hourly SMP and either a fixed threshold or the effective contract price plus a margin. An optional c/kWh cap limits each interval; an annual Rand cap limits the total. It is unavailable on a virtual contract that already uses a market floating leg.

A volume strike prices the first stated MWh normally, then changes the treatment of later energy in chronological order. Choose a month, quarter or contract year. Physical excess can use market price, a discounted contract price, no payment, or the spill terms. A virtual strike uses UNPAID above the limit: it caps CfD payments and leaves WER unchanged. A contract-year strike cannot exceed an existing annual CAPPED limit.

4.9 The availability guarantee

Physical Shortfall & Delivery and virtual Generator Obligations capture the guaranteed percentage, measurement period, method, deadband, damages rate and cap. The guarantee mirrors the existing performance warranty. Meter inferred compares each observed hour against the forecast threshold after contractual excuses. Observed zero production differs from a missing meter reading. Missing evidence refuses measurement; Telemetry refuses until plant telemetry is connected.

Declared outages use recorded SO outage windows. A force-majeure or maintenance excuse must be recorded on the instruction evidence and permitted by the contract; overlapping excuses count once. Damages are assessed when the monthly or contract-year measurement period closes. The seller pays only for shortfall beyond the deadband, subject to any period energy-charge cap.

4.10 Termination — events, notice, cure and payment

Physical step 12, Termination, and virtual step 8, Legal Terms, capture the events, notice and cure periods, force-majeure trigger, and estimated payment method. Existing step numbers stay intact. Convenience termination requires an earliest contract year. Payment choices are none, a fixed schedule per MW and remaining year, or a lost-margin estimate with pinned forecast assumptions. These are contractual estimates, not marked fair values.

Open Termination on the Contracts register to inspect a notice clock and its payment marked estimated. Serving a notice is a human action. The recipient can record a timely cure; the serving party can withdraw. When a served notice becomes effective, the daily contract job terminates the agreement and queues its final shortened settlement. It leaves future settlement eligibility; the final period includes the pinned payment with a balancing counterparty line. Lost-margin notices refuse when the required pinned forecast is absent.

For a lost-margin estimate, select an available price reference in the register. A market reference pins a complete, versioned month of DAM P50 prices; a retail reference pins an effective tariff for the buyer. Enter the reviewed remaining P50 energy, the weighted contract rate and the forecast source and assumptions. The selected monthly average or tariff band is held constant for the remaining term, and the form says so explicitly. Review estimate shows the amount and effective date without serving anything. Confirm reviewed estimate and serve notice saves the assumptions and price evidence. If the contract or reference changes between review and confirmation, review again. Missing reference data blocks serving; later price updates do not rewrite a served notice.

5. Agreement, signing and activation

Contract states (enum-exact; physical and virtual share them)
NEGOTIATING
→Freeze terms (complete + approved)
AGREED
→both sign, hashes match
SIGNED
→start date arrives
ACTIVE
Exits: SUSPENDED DECLINED TERMINATED

Re-open reverses AGREED → NEGOTIATING: signatures are voided and every joint term goes back to pending, proposed by the reopener. If neither side signs within 10 days, AGREED → SUSPENDED; revival needs mutual consent.

5.1 Agreed — the terms freeze

In plain words. AGREED means both sides have finished bargaining and locked the commercial sheet. You are no longer editing prices and clauses — you are deciding whether to sign that locked sheet (or to unlock it again on purpose).

How a deal reaches AGREED

Either party chooses Freeze terms, reviews the saved sections, then presses Confirm freeze when the sheet is complete and all drafts are saved. The same rule applies to physical and virtual deals (§4.6):

  1. Every required term for that deal is filled in.
  2. No joint term is still waiting for the other side’s approval.

If either check fails, Freeze terms stays gated (the footer lists what is missing). The server enforces the same rules, so an incomplete deal cannot be forced into AGREED by another path.

When Confirm freeze succeeds, the platform:

On Negotiations the row turns green (Agreed) and shows “Sign by {date}” — ten calendar days from that stamp. That deadline is enforced: a nightly background job moves unsigned AGREED deals to SUSPENDED once the window has fully elapsed (any half-completed signature is voided). Suspended deals stay on Negotiations but cannot be signed or re-opened until both sides consent to revival (below).

What “frozen” means

While the deal is AGREED:

You can You cannot
Open Sign and put your name on the locked terms (§5.2) Change capacity, price, strike, dates, or other wizard fields as if you were still negotiating
Re-open to unlock and renegotiate (see below) Rely on private brief chips / walk-away confirms (§4.3) — those apply only while NEGOTIATING
View agreement without changing terms or signatures Treat AGREED as “live energy” — settlement still waits for SIGNED then ACTIVE (§5.3, §5.4)

Think of AGREED as sealing an envelope: the letter inside is the deal you both just finished. Signing is writing your name on the envelope. Re-opening is tearing it open again so you can rewrite the letter.

Suspended — the sign window lapsed

If ten calendar days pass after agreed_at without both signatures, status becomes SUSPENDED. On Negotiations the row shows orange (Suspended) and the wizard is read-only. Signing and Re-open are closed.

To resume:

  1. Either party clicks Request revival.
  2. The counterparty clicks Accept revival.
  3. Status returns to AGREED with a new agreed_at (fresh 10-day window). Terms stay frozen — this is not a re-open of the bargain.

The requester may Cancel request before the other side accepts. Either side can review the saved terms while suspended.

Re-open — unlocking on purpose

Either party may Re-open an AGREED deal. That is a deliberate step backward to NEGOTIATING. Choose Reopen terms… on the row. The confirmation names the agreement and recorded signatures. Keep agreement cancels without changing anything. Only Clear signatures and reopen performs the reset. It:

Use Re-open when someone spotted a real mistake or you both want to change a term. Do not use it casually after one side has already signed — you are throwing away that signature and reopening the bargain.

Example

Off-taker and IPP finish the physical wizard. All joint fields show approved; required terms are present. Either side reviews Freeze terms and presses Confirm freeze → status AGREED, Negotiations shows Sign by 15 Aug 2026. The energy price is now locked at 85 c/kWh. If the buyer then wants 82 c/kWh, they must Re-open, change the price (seller must approve again if it is joint or seller-owned as the ownership badges say), reach Freeze terms again, and both must sign the new freeze.

5.2 The signing ceremony

Sign opens the ceremony for the deal. What you see:

  1. Contract Terms — a short summary. Choose Review full saved agreement to read all saved sections, including legal, network, renewable certificate and carbon terms. Closing review returns to signing. Changing terms requires deliberate reopening.
  2. Signing Status — Buyer and Seller cards, each Signed (by whom, when) or Pending. If the terms changed after the first signature, a red banner explaining that both parties need to sign the current version.
  3. Joint Terms Approval — informational: how many joint terms are approved vs pending. It doesn’t block signing, but review before you put your name down.
  4. The signer form — blank fields for your own full name, work email and optional title. Name and a valid email are required before Sign is enabled. The method is Platform Consent: your agreement is cryptographically bound to the current terms via a content hash — a SHA-256 over the commercial term set, so what you signed is provable later.

After you have signed, your row says Awaiting [counterparty] signature and offers View agreement.

You sign only as your natural role. The first signature records and waits (“Signature recorded. Awaiting counterparty signature.”); the second signature triggers the gate: both signatures present, both hashes identical → the contract advances to SIGNED, both sidebars update, and the deal appears on the Contracts register.

5.3 When a contract is complete (SIGNED)

A deal is commercially complete the moment the signing gate advances it to SIGNED. That is not a soft label — it is the point at which the platform has:

  1. Frozen terms — locked at AGREED; both parties signed the same content hash (SHA-256 of the commercial term set).
  2. Two immutable signatures — BUYER and SELLER rows with name, title, email, method (PLATFORM_CONSENT), IP, user-agent, server signed_at, and a frozen content_snapshot.
  3. A written agreement PDF — generated asynchronously from those snapshots (not from the live, editable PPA record), hashed as document_hash, and stored for download.

Written agreement PDF

On the second matching signature the platform enqueues GenerateAgreement. The worker:

Where the PDF is stored

Environment Backend Location
Dev / Test Local disk priv/agreements/generated/agreements/<ref>/<content_hash>.pdf (file://… URI)
Production S3 s3://$AGREEMENTS_BUCKET/agreements/<ref>/<content_hash>.pdf (optional Object-Lock)

Parties download via /org/agreements/:id (session org must be a party to the contract).

Example — the thread’s physical deal

Agreement PPPA-202607-138209764
Parties IPP2 Atlantis Wind (Seller) → OffTaker C Midrand DC (Buyer)
Deal type OFFTAKER_IPP · AS_GENERATED · FIXED 85.0 c/kWh
Term start 2026-01-01 · 10 years · DAILY settlement
Completeness both signatures present · matching content_hash · status SIGNED (then ACTIVE once the start date has arrived)
Written PDF ExecutedAgreement with document_hash over the generated bytes; download from Contracts once status is GENERATED

In the demo, open Contracts → PPPA-202607-138209764 → View contract: signatories, pricing and the Settlements list are the same evidence the written PDF’s Execution page records.

5.4 Activation

Nothing to click: the daily activation trigger (V1 §6) flips SIGNED contracts to ACTIVE when their start date arrives — both statuses live on the Contracts register (commencement column shows start date and starts in… / N months active). From that moment the contract is a standing instruction to settlement, and the seller’s hierarchy, forecast and strategy screens (V4/V6) treat it as live supply or demand. The written PDF generated at SIGNED remains the immutable record of what was signed; activation does not regenerate it.

Follow along. Seat: IPP 2 (ipp_2@webill.net). Path: Negotiations → any Agreed row → Sign. You should see the ceremony with both status cards Pending and the blank signer form. (Signing is reversible only via Re-open before the counterparty signs — in a shared demo environment, look, don’t sign.) After both signatures, the deal leaves Negotiations for Contracts — open a SIGNED/ACTIVE demo row there and confirm an executed-agreement download once the generator has run.

Data. full_demo · seed 42 · stage S04 (lifecycle) · sealed 2026-07-15.

6. The contracts register

Contracts (/org/deals/contracts — the Deals tab you land on) is the executed book: every physical and virtual PPA this organisation is a party to that reached SIGNED, ACTIVE or TERMINATED. An AGREED agreement still waiting for signatures is a negotiation, not a contract — it is listed once, under Negotiations, and a footer note here says how many are waiting.

The number in brackets on the Contracts tab is the size of that book. It is the one Deals tab whose number is an inventory rather than work waiting on you — a contract is not a task — and it is the same number the sidebar shows. The table’s own pill counts what the current filters leave, so the two differ while a filter is on.

There are no stat cards. One context line states the book once — how many agreements, how many active / signed, physical / virtual, and the contracted MW — and the next settlement run with its live countdown, stated once for the book rather than repeated on every row (it is the settlement clock, V1 §2). Columns:

Column What it shows
Contract the agreement reference, an Active / Signed / Terminated chip, the physical/virtual pill, and the delivery-profile badge
Parties seller → buyer, your side highlighted You
Term 01 Jan 2026 → 31 Dec 2035, the term length and how far in (or starts in…)
Capacity contracted MW
Open the one way in — the row and its Open button both open the contract page

6.1 The contract page

Opening a contract leaves the Deals tab bar behind. /org/deals/contracts/:ppa_id is the contract’s own view: from there the tabs on screen are that contract’s, and ‹ Back to Contracts returns to the register. The sidebar still marks Deals, because that is where the contract lives.

The header — reference, status, instrument, both parties, term, capacity and the settlement cadence with the next run — stays put while only the panel beneath the tabs changes. Nothing in that header is repeated inside a tab:

Sub-tab What it shows
Overview Who signed, and the term groups the bill is allowed to use. Parties and the network path stay in the header and are not repeated here. Walked in V8 §12.16
Settlements What happened in each window — status, energy, your net. V8 §12.3
Ledger How the windows add up, month by month. V8 §12.4
Statements The document you can send for one window, and its PDF. V8 §9
Disputes Challenges raised on this agreement’s windows. V8 §12.17
Termination The notice clock, and the actions to serve, review, cure or withdraw. V8 §12.18

Written agreement (when one has been generated) and Register forward (ACTIVE physical PPAs) are actions in the contract header. Registering a forward schedule opens under the same header, without claiming a tab — it is an action, not one of the contract’s standing views.

Two dispute lists, two questions. This tab is one agreement’s dispute history, so it drops the agreement column and dates each row instead. The room at Deals → Disputes is the cross-contract inbox — what needs me? — and its badge counts the disputes waiting on your move. Each names the other, so neither is mistaken for a copy.

Note — the written agreement. When a long-form document has been generated for this physical agreement, Written agreement in the header opens that PDF. The signatories and the term groups on Overview remain the terms settlement reads. The design of the long-form text lives in docs/references/templates/written_contract.md.

Follow along. Seat: Off-taker C (offtaker_c@webill.net). Path: Contracts. You should see the thread’s direct deal (PPPA-202607-138209764, IPP2 Atlantis Wind → OffTaker C Midrand DC, Active) among six active contracts — open Settlements on it and the settled periods of V5’s story are already there.

Data. full_demo · seed 42 · stages S04/S09 · sealed 2026-07-15.

7. Worked example — the thread’s physical deal

This chapter walks one physical (wheeled) deal from “I found someone” all the way to “we both signed.” Same cast as V2 §10. Plain words first; screen names in bold when you need them.

Data. full_demo · seed 42 · stage S04 (lifecycle) · sealed 2026-07-15 · M8 gate re-check 2026-07-18 · commit 925037a. Happy-path ACTIVE deal: PPPA-202607-138209764 · AS_GENERATED · 1.000 MW · start 2026-01-01 · 10 years · FIXED 85.0 c/kWh · DAILY settlement.

7.1 Who is in the story

Think of three kinds of “shop front” that can start a deal:

Who starts Their shop front Everyday meaning
Off-taker an Off-taker Site (e.g. Midrand DC) “I need power for this building.”
IPP a Generator Site (e.g. IPP2 Atlantis Wind) “I have a plant with surplus to sell.”
Trader a Trader Pool (e.g. T1 Renewables Pool) “I buy and sell for a portfolio.”
Physical story lines used below (demo names)
IPP2 Atlantis WindGenerator Site · Wind · Cape Town (municipal)
→direct physical PPA
OffTaker C Midrand DCOff-taker Site · Cold storage · Johannesburg (municipal)
IPP3 Midrand HybridGenerator Site · Hybrid · Eskom 132 kV
→sells into
T1 Renewables PoolTrader Pool · buys / resells
→resells to
OffTaker A Rosebank MallOff-taker Site · Retail · Johannesburg

A physical deal means energy is wheeled on the grid from the seller’s connection to the buyer’s — not a private cable. Both sides must be on networks that allow that path (for the direct line above, both sites are municipal).

The journey you will walk in this chapter
Propose
→send
Review
→accept
Negotiate
→Freeze terms
AGREED
→both sign
SIGNED
→start date
ACTIVE
Side doors: Decline Re-open Suspend → revive

Propose and Review live on Proposals. Negotiate, Agree, Sign, Re-open and Revive live on Negotiations. SIGNED / ACTIVE live on Contracts.

7.2 Three doors into a proposal

Anyone can start — the door depends on your shop front:

You are… Open this Then Studio you land in
Off-taker Site Strategy → Procurement Simulate a candidate → Build Proposal Buyer proposal studio (§3.4)
Generator Site Strategy → Sales Simulate a buyer → Build Proposal Seller proposal studio (§3.4a)
Trader Pool (buying) Strategy → Simulations → Buy Pick an IPP (or trader) → Build Proposal Trader buy studio (§3.4e)
Trader Pool (selling) Strategy → Simulations → Sell Pick an off-taker (or trader) → Build Proposal Trader sell studio (§3.4f)

Note. Simulation first is the normal path: you see fit and margin before you put a number on the table. The studio then turns that evidence into a sendable proposal.

7.3 Walk A — Off-taker Site proposes (buyer starts)

Seat: OffTaker C · Shop front: Midrand DC · Counterparty: IPP2 Atlantis Wind.

Numbers we will use

Item Value Plain meaning
Volume / capacity ~1 MW / ~12,000 MWh/yr requested How much energy the site wants
Suggested buyer cap ≈ 115.2 c/kWh Highest price the buyer is willing to pay (private)
Public ask (example) 85.0 c/kWh FIXED What the other side will see
Private walk-away 80 c/kWh “I walk if it goes above this” — never sent
Expiry 30 days How long the quote stands

Step by step

  1. Open Procurement for Midrand DC. Find IPP2 Atlantis Wind among candidates (both municipal → only Physical is offered).
  2. Run a simulation. Read fit and the suggested cap.
  3. Click Build Proposal. Stage 0 · Instrument collapses to Physical (Virtual is not available on this path).
  4. Walk the studio: evidence → price / shape → walk-aways (private) → readiness. Accept the suggested cap onto your private brief if it fits.
  5. Set expiry to 30 days. Check the seller-eye preview — walk-aways must not appear there.
  6. Send to seller → proposal status PENDING.

The seller now sees it under Proposals → Received.

7.4 Walk B — Generator Site proposes (seller starts)

Seat: IPP 2 · Shop front: IPP2 Atlantis Wind · Counterparty: OffTaker C Midrand DC.

This is the demo’s happy path that becomes PPPA-202607-138209764.

  1. Open Sales for Atlantis Wind. Midrand DC appears as a Sell Candidate (cold storage, 22 kV, Fixed preference).
  2. Simulate, then Build Proposal → seller proposal studio.
  3. Only Physical is offered. Fill the price card: public ask 85.0 c/kWh FIXED; keep floors on the private brief.
  4. Stage 9 buyer-eye preview shows the public card only.
  5. Clear readiness, expiry 30 days, Send to buyer → PENDING.

When the buyer later picks a contract shape, the seller may get a second pass to confirm shape-gated fields — that is normal, not a new proposal.

7.5 Walk C — Trader Pool proposes

Traders use the same idea with a pool instead of a single site.

C1 · Trader buys from an IPP (T1 Renewables Pool ← IPP3 Midrand Hybrid)

  1. Seat: Trader 1 → Simulations → Buy → pick IPP3 → Build Proposal.
  2. Trader buy studio (§3.4e): capacity / term / price for procurement into the pool.
  3. Send → IPP3 reviews → Accept creates a TRADER_IPP physical contract in NEGOTIATING.

C2 · Trader sells to an off-taker (T1 → OffTaker A Rosebank Mall)

  1. Seat: Trader 1 → Simulations → Sell → pick Rosebank → Build Proposal.
  2. Trader sell studio (§3.4f): the pool is the seller; the mall is the buyer.
  3. Send → off-taker reviews → Accept → OFFTAKER_TRADER physical contract in NEGOTIATING.

Tip. The organisation name and the pool / site name both travel into the written agreement later (§5) — e.g. “Trader 1 · T1 Renewables Pool”.

7.6 Accept — the handshake becomes a negotiation

Whoever received the proposal opens Review (§3.5a):

  1. Read the offer — public terms, joint asks, days left on the quote.
  2. Score gaps against your private brief.
  3. Optionally stage a private response (not sent until you choose).
  4. Choose an exit (§3.5c):
    • Accept & create contract — happy path;
    • Decline — walk away (optional reason / findings);
    • Counter (including the other instrument when available);
    • let it Expire.

Accept does one atomic thing: proposal → ACCEPTED, a physical PPA is created in NEGOTIATING, captured terms and meter refs are replayed onto the contract. Both parties now see the row on Negotiations.

For the demo direct line that is PPPA-202607-138209764, with meters MTR-NERSA-GEN-1002 (generation) and MTR-OTS-…c_private (consumption).

7.7 Negotiate in real time

Open the row → Negotiate. The physical wizard (§4.4) opens. Both sides can be in it at once.

How a single joint field moves
Open
→you propose
Pending
→they approve
Approved
Or: Reject → new proposal

Your own pending fields stay editable. Approved joint fields lock until someone Re-opens the whole deal.

What “real time” feels like

Accept suggestions

Make a change

  1. Edit a field you own (or a joint field that is pending-by-you).
  2. Save. Counterpart sees the update live.
  3. If the field is Joint, status goes Pending for them.

Confirm (approve) a change

  1. Open the pending field.
  2. Approve — it locks as agreed.
  3. When every required term is filled and every joint field is approved, the footer’s Freeze terms gate opens (§4.6).

Example numbers on the direct-line deal

Wizard step What you lock Demo value
Capacity & term Start / term (joint) 2026-01-01 · 10 years
Capacity Contract type AS_GENERATED · 1.000 MW
Tariff Price (seller-led) FIXED 85.0 c/kWh
Curtailment Risk split as agreed in wizard
Metering Settlement frequency DAILY
Wheeling Loss factors / UoS derived from sites (read-only)

7.8 Side doors — decline, re-open, suspend, revive

These are the moves people actually need when the happy path wobbles.

Decline (walk away before both have signed)

Re-open (unlock an AGREED deal on purpose)

Use when someone spotted a mistake after Freeze terms, before both have signed (or after one signature — that signature is thrown away).

  1. On Negotiations, AGREED row → Reopen terms…. Read the signature-reset warning, then choose Clear signatures and reopen or Keep agreement.
  2. Status → NEGOTIATING; signatures voided; every joint term goes back to Pending (proposed by the reopener).
  3. Fix terms → both approve again → Freeze terms → new AGREED and a fresh 10-day sign window (§5.1).

Sign window lapses → Suspended → revive

If neither side finishes signing within 10 days of AGREED, a nightly job moves the deal to SUSPENDED (§5.1).

What you see What to do
Orange Suspended · “Sign window lapsed” Signing and Re-open are closed
No revival yet Either party clicks Request revival
You requested it Cancel request if you change your mind
They requested it You click Accept revival

Accept revival returns the deal to AGREED with a new agreed_at (fresh 10 days). Terms stay frozen — this is not a re-open of the bargain. Then both sign as usual.

7.9 Freeze terms, sign, and go live

  1. Freeze terms → AGREED. Negotiations shows Sign by {date} (10 days).
  2. Sign → ceremony (§5.2): name, email, title; content hash binds you to these exact terms.
  3. First signature waits; second matching signature → SIGNED.
  4. Row leaves Negotiations and appears on Contracts.
  5. On the start date, the daily job flips SIGNED → ACTIVE.
  6. Settlements begin (V8).

The written PDF names organisation + site/pool for each side (e.g. OffTaker C · Midrand DC / IPP 2 · Atlantis Wind).

Follow along. Seat: Off-taker C. Path: Contracts → PPPA-202607-138209764 → View contract. You should see both signatories, AS_GENERATED, and 85.0 c/kWh. Settlements already list daily periods. To practise negotiation: open a NEGOTIATING sibling on Negotiations, propose a joint field, approve from the other seat, then Freeze terms / Sign / (optionally) Re-open or Request revival on a suspended training row if present.

Previously in the thread → V2 §10 · standing up the cast. Next → V3 §21 · demo walkthrough. The same kWh settles in V8 §13.

Counter with an upside share

During the §7.7 negotiation, a seller can counter the price with a 50% share above the effective contract rate plus 20 c/kWh, capped at 40 c/kWh per interval. Review the upside panel and approve the joint terms before finalising. The resulting payment follows actual published interval prices, so the negotiated percentage alone is not a guaranteed monthly amount.

8. Worked example — the thread’s virtual deal

Same journey as §7, but for a virtual (financial hedge) deal. No wheeled delivery — the buyer still buys grid power; the deal settles a cash difference against a strike. Plain words first.

Data. full_demo · seed 42 · stage S04 (lifecycle) · sealed 2026-07-15 · M8 gate re-check 2026-07-18 · commit 925037a. Cast: IPP3 Midrand Hybrid (Eskom 132 kV) ↔︎ George Eskom Plant (OffTaker C’s Eskom-connected site). MONTHLY settlement; CfD figures marked illustrative where the demo leaves them open.

8.1 What “virtual” means here (in one picture)

Virtual deal — money hedge, not a private cable
IPP3 Midrand HybridGenerator Site · injects to Eskom
↔︎CfD / virtual PPA
George Eskom PlantOff-taker Site · still buys Megaflex from Eskom
Eskom billbuyer pays tariff as usual
+WER credit / CfD
Strike settlementbuyer ↔︎ seller cash top-up

Eligibility rule (hard): both ends must be Eskom-connected with the virtual paperwork story in place (VWA registered, account in good standing). If either side is municipal-only, the Eskom Virtual PPA door stays dark (§1.1, §2).

Traders can also propose virtual deals when the rules allow trader participation — same studios, pool as the shop front (§3.4e / §3.4f).

Virtual path (same stations as physical, different wizard)
Propose
→send
Review
→accept
Negotiate
→Freeze terms
AGREED
→both sign
SIGNED / ACTIVE
Side doors (same as physical): Decline Re-open Suspend → revive

8.2 Three doors into a virtual proposal

You are… Open this Build when… Studio
Off-taker Site (Eskom) Procurement Virtual sim against an Eskom IPP / eligible trader Virtual buyer studio (§3.4b)
Generator Site (Eskom) Sales Virtual sim against an Eskom off-taker / eligible trader Virtual seller studio (§3.4d)
Trader Pool Simulations → Buy / Sell Counterpart is virtual-eligible Trader buy / sell studio (§3.4e / §3.4f)

If both Physical and Virtual are available, stage 0 · Instrument asks you to pick (§3.4c). Here we keep Virtual.

8.3 Walk A — Off-taker Site proposes (George → IPP3)

Seat: OffTaker C · Shop front: George Eskom Plant · Counterparty: IPP3 Midrand Hybrid.

Numbers (illustrative)

Item Value Plain meaning
Matched fraction (sim) ~0.71 Share of hours where generation and load overlap
Settlement volume basis Matched CfD only on the overlapping volume
Buyer strike cap ~break-even on matched volume Private ceiling on your brief
Buyer Eskom tariff Megaflex Sets the credit / reference story
Expiry 30 days Quote window

Step by step

  1. Confirm George’s VWA is REGISTERED and the Eskom account is good standing (V2 §3).
  2. Procurement → virtual sim vs IPP3 → read matched shapes (~71%).
  3. Build Proposal → stage 0 · Instrument → keep Virtual.
  4. Studio walk:
Stage What George does
1 Evidence Reviews matched shapes and ~71% fraction
2 Strike Chooses Matched basis; Accepts the suggested cap; confirms Megaflex
3 Obligations Conditions precedent / REC notes as paperwork lands
4 Dispatch Capacity, term, start, VWP vendor; seller-eye preview (no walk-aways); expiry 30 days; Send

Private walk-aways stay on George’s brief. The PENDING card shows public joint asks and the strike sheet only.

8.4 Walk B — Generator Site proposes (IPP3 → George)

Seat: IPP 3 · Shop front: Midrand Hybrid.

  1. Sales → virtual sim vs George → Build Proposal.
  2. Virtual seller studio: public strike ladder (FLAT / TOU); floors private on the brief.
  3. If the band is inverted (buyer cannot pay plant cost), the studio offers Withdraw draft instead of send — do not ship a broken quote.
  4. Otherwise set expiry, preview, Send to buyer → PENDING.

8.5 Walk C — Trader Pool proposes (virtual)

Same pattern as physical §7.5, with Virtual eligibility:

Organisation + Trader Pool name both appear on the eventual agreement PDF, just as site names do for IPP / off-taker deals.

8.6 Review, four exits, and Accept

Recipient opens Review (§3.5a) — virtual review has five stages (not six).

  1. Read disclosed terms, joint asks, and both parties’ conditions precedent as schedule risk.
  2. Gap analysis runs the CfD model on the quoted strike (provenance: based on their quoted strike).
  3. Stage a private reply if you want; proposal virtual_terms stay untouched until Accept or share my terms now.
  4. Decide (§3.5c):
    • Accept & create contract;
    • Decline (optional findings — draft kept for re-propose);
    • Counter with a Physical PPA when Physical is available and the gap is material (§3.5e);
    • wait for Expiry (discards the review draft).

Accept → VPPA-… created in NEGOTIATING; both parties see it on Negotiations.

Counter path (illustrative, one hop)

  1. IPP3 chooses Counter with a Physical PPA and confirms the shared reason.
  2. Lands in the physical compose studio; capacity / term / start may carry as suggestions — the strike does not.
  3. Send → George’s virtual offer is superseded; the physical counter has its own expiry. Max two cross-instrument hops.

8.7 Negotiate the virtual wizard in real time

Open Negotiate → virtual wizard (§4.5). Same real-time rules as physical (§7.7):

Move What happens
Propose a joint field Goes Pending for the other side; they see a live refresh / badge
Accept suggestion Brief / Suggest chip writes your number; joint fields still need their approval
Approve Locks that joint field
Reject Sends it back so they can propose again
Freeze terms Only when required terms are complete and no joint field is pending

Typical virtual locks (illustrative):

Area Example
Capacity & term MW, start date, years (joint)
Strike FLAT or TOU strike; Matched volume basis
Eskom / VWP Megaflex category, VWP vendor, MONTHLY settlement
Conditions precedent Tick as paperwork completes
Legal / RECs Force majeure, REC issuance, etc.

Derived wheeling / WER orientation stays read-only — Eskom sets those rails; you are negotiating the bilateral hedge around them (§9).

8.8 Side doors — decline, re-open, suspend, revive

These match physical (§7.8) for reopening, signing and revival. The virtual wizard does not expose a Decline action:

Move When Result
Decline Proposal review before acceptance Walk away; declined rows stay read-only on Negotiations
Re-open AGREED (before both signed, or after voiding a half-signature) Back to NEGOTIATING; joints re-pended; new Freeze terms → new AGREED window
Suspended 10 days after AGREED with no full signature pair Sign / Re-open closed
Request revival → Accept revival Mutual consent on a suspended deal Fresh AGREED + new 10-day clock; terms still frozen

Careful. Revival is “open the sign window again,” not “renegotiate the strike.” To change terms, Re-open (only while AGREED, not while Suspended) or decline and start over.

8.9 Freeze, sign, and what ACTIVE means

  1. Freeze terms → AGREED · Sign by {date} (10 days) — virtual now stamps agreed_at the same way physical does.
  2. Sign ceremony (§5.2) — both hashes must match → SIGNED.
  3. Start date → ACTIVE (demo also freezes siblings at NEGOTIATING / SIGNED so you can inspect each stage).
  4. No meter re-pointing for delivery: George still consumes grid power. Each month, virtual settlement writes the CfD ledger — V8 §14, including hour B’s payment reversal from V0 §5.

Money story in one line: buyer pays Eskom as usual; the virtual deal settles the difference versus the strike on the matched volume (§9).

Follow along. Seat: Off-taker C. Path: Strategy → Procurement → open a virtual sim vs IPP3 → Build Proposal → stage 0 Instrument → walk the four content stages → Send. As seller: Review → five stages → Accept (demo) or Counter with a Physical PPA. Then Negotiations for the virtual wizard (propose / approve / Freeze terms / Sign; try Re-open or revival on a suspended sibling if present). Contracts → ACTIVE VPPA-… → View → Strike price (CfD) and Platform & settlement.

8.10 Worked figure — SAWEM TOU-average index

The thread in §8.3 uses the default floating reference: Eskom’s gen-wheeling credit. A market-indexed virtual PPA keeps the same strike and matched volume, and changes only what the strike is netted against.

Teaching slice (illustrative). Flat strike 135 c/kWh. Matched energy already classified into TOU bands. Published SAWEM SMP, volume-weighted inside each band:

TOU band Matched kWh Realised index (c/kWh) CfD rate (strike − index) Energy line
Peak 10 100 35 c R 3.50
Standard 20 80 55 c R 11.00
Off-peak 40 40 95 c R 38.00
Total 70 R 52.50

Seller receives R 52.50; buyer pays R 52.50. The ledger still sums to zero. There is no wer_credit pair — a SAWEM index is not an Eskom tariff, so Eskom does not refund this slice.

On the settlement page the card Strike vs realised index names “SAWEM TOU-average SMP” and shows 135 vs 100 / 80 / 40 beside each band. The statement prints the same label and the window’s realised average (V8 §9.11).

Choose this leg in wizard step 4 (Floating reference). Leaving Eskom’s regulated credit rate selected needs no extra click; the George ↔︎ IPP3 story above is unchanged.

Previously → V2 §10 and V7 §7. Next → V3 §21. CfD month → V8 §14.

9. How a virtual PPA makes money

A virtual PPA is not a private cable from the plant to your factory. You keep buying every kilowatt-hour from Eskom (or your municipality) on the normal bill. The deal is a money hedge: it aims to pin the cost of a slice of that energy near an agreed strike price.

Think of three wallets talking every settlement period:

  1. You ↔︎ Eskom — you pay the full retail bill; Eskom may refund a WER credit on energy that counts under the Virtual Wheeling Agreement.
  2. You ↔︎ seller (IPP or trader) — you settle the contract for difference against the strike.
  3. You ↔︎ VWP vendor (often) — a small platform / aggregation fee on the hedged volume.

Physical deals shrink the utility bill because energy was delivered. Virtual deals leave the utility bill’s shape alone and move cash on top. That is why a procurement “saving” that pretends virtual energy displaced retail purchases is the wrong number for a virtual candidate.

9.1 Picture — who pays whom

Virtual deal — electrons stay on the grid; money moves on three rails
Eskomfull retail bill · WER credit on matched volume
↔︎bill + WER
Buyer sitestill draws the grid as usual
↔︎CfD vs strike
SellerIPP plant or trader pool
Plant metersprove generation for matching
∩overlap
Buyer metersprove consumption for matching
→matched kWh
Hedge volumeWER + CfD apply here
Party Everyday experience
Buyer Grid bill unchanged in shape; credit appears when match qualifies; pays (or receives) the CfD so net cost of the hedged slice sits near the strike; may pay a small vendor fee
Seller Earns the CfD receivable (or pays if credit > strike); does not get paid for unmatched surplus on a matched-basis deal
Eskom Still sells the buyer grid energy; pays the WER credit on qualifying volume — does not re-point meters

9.2 Matching — the overlap that earns the credit

Hour by hour (or interval by interval), the platform looks at:

The matched volume is the smaller of the two. Only that overlap is the volume the hedge usually cares about when settlement volume basis is Matched (glossary, settlement volume basis).

Situation What it means in money
Plant making power and you using it Those kWh are matched → can earn WER + settle strike
Plant making power while you are off Surplus — no WER on that slice for you; under Matched basis you do not pay strike on it either
You using power while the plant is quiet You just buy the grid as usual — outside the hedge

Note. A short conceptual story in V0 §5 shows the pure “strike vs credit × volume” algebra. On this platform the volume that enters that algebra is normally the matched slice (see the worked day in §9.4 and V8 §14).

Tiny hour (intuition only)

kWh
Plant output this hour 100
Your site use this hour 40
Matched 40
Unmatched plant surplus 60 — not on your hedge if basis = Matched

If instead you used 120 while the plant made 100, matched = 100 and the other 20 kWh is plain grid (outside the hedge).

9.3 The money formula (plain words)

For each time-of-use band on the matched volume:

  1. Eskom WER credit to buyer ≈ WER rate × matched kWh
  2. CfD between buyer and seller ≈ (strike − WER rate) × matched kWh
    • Strike above WER → buyer pays seller the gap.
    • Strike below WER → seller pays buyer the gap.
  3. Buyer’s net on that slice ≈ WER received + CfD paid (or minus CfD received) → aims at strike × matched kWh (before vendor fee).
  4. Vendor fee (if any) ≈ fee rate × matched kWh — usually buyer → VWP.

The engine often posts this as:

— same economics, clearer on the statement (V8 §14).

One matched kilowatt-hour — strike 92 c · WER 25 c (peak band)
WEREskom → buyer
Credit rate25 c/kWhMegaflex peak (illustrative)
→refund
Buyer pocket+25 con the bill / ledger
CfDbuyer → seller
Strike − WER67 c/kWh92 − 25
→invoice
Seller pocket+67 cenergy receivable
Buyer: credit+25 cfrom Eskom
Buyer: CfD−67 cto seller
Buyer net on hedge−92 c= strike · before vendor fee
Seller net+67 cCfD only on this posting shape

9.4 Worked day — both pockets (demo data)

One settled day on the thread’s direct virtual PPA. Same numbers the settlement screen uses.

Data. full_demo · seed 42 · stages S04/S09 · sealed 2026-07-15 · re-derived 2026-07-18 · VPPA-202607-138349269 · period 2026-07-03 · status DRAFT · topology eskom_vwa · M8 commit 925037a. Seller: IPP 3 (IPP3 Midrand Hybrid). Buyer: OffTaker C (George Eskom Plant).

Inputs

Value Plain meaning
Agreement VPPA-202607-138349269 The virtual contract
Deal type OFFTAKER_IPP Plant → site (no trader in the middle)
Strike FLAT 92.0 c/kWh Agreed hedge price
VWP vendor fee 1.25 c/kWh Small admin on matched volume
Frequency DAILY This demo day settles once for 3 Jul 2026

Step 1 — how much overlapped?

Quantity kWh
Supply (IPP3 metered share for this claim) 463.696
Demand (George metered) 14,599.999
Matched = delivered 463.696
Unmet demand on this claim 0 — George still draws the rest from the grid outside the hedge
3 Jul 2026 — match is limited by the plant claim, not by George’s full load
IPP3 supply463.7 kWh
∩min
George demand14,600 kWh
→matched
463.7 kWhentire hedge volume for the day

TOU split of the match:

TOU Matched kWh
Peak 90.347
Standard 373.349
Off-peak 0
Total 463.696

Step 2 — rates by band

Strike is flat 92 c. WER credit rates differ by TOU. The energy (CfD) rate the ledger posts is strike − WER:

TOU Strike WER credit Energy rate (buyer → IPP)
Peak 92 c 25 c 67 c (92 − 25)
Standard 92 c 15 c 77 c (92 − 15)

Step 3 — rand by band

TOU Qty kWh Energy (buyer → IPP) WER (Eskom → buyer)
Peak 90.347 90.347 × 0.67 = R 60.53 90.347 × 0.25 = R 22.59
Standard 373.349 373.349 × 0.77 = R 287.48 373.349 × 0.15 = R 56.00
Total 463.696 R 348.01 R 78.59

Admin (VWP): 463.696 × 1.25 c = R 5.80 (buyer → vendor).

Step 4 — buyer’s pocket (George)

Line Amount Direction
Pay seller (energy / CfD) R 348.01 out
Pay VWP vendor (admin) R 5.80 out
Receive WER credit R 78.59 in
Net on this period’s hedge −R 275.22 348.01 + 5.80 − 78.59

Check without admin: 348.01 − 78.59 = R 269.42 ≈ 92 c × 463.696 kWh (strike × matched). The R 5.80 fee is the extra on top.

George’s ordinary Megaflex bill for the other ~14,136 kWh of the day is unchanged by the hedge — still paid to Eskom as a normal retail customer.

Buyer (George) — 3 Jul 2026 hedge pocket
Pay IPP (CfD / energy)−R 348.01matched × (strike − WER)
Pay VWP fee−R 5.80463.7 × 1.25 c
WER from Eskom+R 78.59matched × WER rates
Net hedge−R 275.22screen net for George

Step 5 — seller’s pocket (IPP 3)

Line Amount Direction
Receive energy / CfD R 348.01 in
WER — Eskom pays the buyer, not the IPP
VWP fee — buyer pays the vendor on this deal shape
Net on this period +R 348.01 receivable
Seller (IPP 3) — 3 Jul 2026 hedge pocket
CfD / energy receivable+R 348.01matched × (strike − WER)
WERR 0credit lands on the buyer’s Eskom story
Net+R 348.01what Contracts → Settlements shows for IPP 3

Step 6 — prove the ledger still balances

Party Category Amount
IPP3 Midrand Hybrid energy +R 348.01
George Eskom Plant energy −R 348.01
George Eskom Plant wer_credit +R 78.59
Eskom wer_credit −R 78.59
VWP Vendor admin +R 5.80
George Eskom Plant admin −R 5.80
Σ 0 ✓

Every rand has an opposite. That is the same conservation rule as physical settlement (V8 §8).

Follow along. Seat: IPP 3. Path: Contracts → VPPA-202607-138349269 → Settlements → 3 Jul 2026. Virtual pill on; matched ≈ 464 kWh; seller net R 348.01; ledger Σ = 0. Switch to the George seat for the same period to see WER +R 78.59, admin −R 5.80, and net −R 275.22.

9.5 What changes if the credit is above the strike

Same matched volume, imaginary WER 120 c and strike 92 c:

That flip is why a virtual deal is a hedge, not a one-way invoice.

9.6 Settlement volume basis — which kWh enter the formula

Basis Plain meaning Risk picture
Matched (demo day above) Only the overlap settles Unmatched plant output does not bill the buyer at strike
Generated Buyer can owe strike on plant output even when not consuming Higher unmatched exposure for the buyer if shapes diverge

Advisors warn when a generated basis plus a high yield promise would force the buyer to pay strike on volume they cannot match (§4.7).

9.6.1 The market-indexed floating leg

The formula in §9.3 nets the strike against Eskom’s gen-wheeling / WER credit. That is the default floating reference (ESKOM_CREDIT_RATE) and the only one the estate used before this choice existed. Existing ACTIVE virtual PPAs keep it — the wizard does not make you re-pick it.

Step 4 of the virtual wizard (Tariff & Pricing) now also offers two market-indexed legs. Both read the published SAWEM day-ahead System Marginal Price — the same public board as GET /api/v1/dam/prices/{trading_date} — never an unpublished working result.

Floating reference What the strike is netted against Buyer exposure in plain words
Eskom’s regulated rate (default) Gen-wheeling / WER credit for the buyer’s tariff category, once per settlement month Net cost of the hedged slice aims at strike. WER still posts from Eskom to the buyer.
SAWEM market price Volume-weighted SMP across the whole settlement window The CfD floats with the wholesale market. A high SMP period shrinks (or reverses) what the buyer pays the seller.
SAWEM market price averaged by time-of-use The same published SMP, volume-weighted inside peak / standard / off-peak Same board, split the way a TOU strike already is. Peak hours can print a different index from overnight.

What changes in the buyer’s pocket

On the Eskom-credit leg, WER received plus CfD paid still aims at strike × matched kWh (before the vendor fee). On a market-indexed leg there is no WER pair. The Wheeled Energy Refund is an Eskom-tariff mechanism; a SAWEM index has no Eskom counterparty to pay it. The ledger posts only the signed energy pair:

CfD = matched kWh × (strike − realised index)

The buyer’s grid bill is unchanged either way. What moved is the other rail: regulated credit vs published SMP. Leave the default and nothing about today’s Eskom-credit contracts changes, in cents.

The settlement page and the statement show the index label and the period’s realised average next to the strike. Those figures are the ones the ledger already used — they are not recomputed from raw intervals when you open the page.

A worked TOU-average figure lives in §8.10. Settlement maths and the missing WER lines are in V8 §7.4, V8 §8.7, and V8 §9.11.

9.7 What the system suggests when you compose

Suggestions are chips with reasons — never silent autofills.

Buyer — strike cap. Rough break-even is retail context + WER − VWP fee on matched volume. The recommended cap sits a little below that (cushion ≈ 90%) so you keep a slice of value. Figures name the matched volume they were sized on.

Seller — strike ladder. Public flat and TOU rows; floors stay private. Because WER itself is TOU-differentiated, a TOU strike can line up with the buyer’s credit without giving away volume. You still cannot sell below LCOE + margin — that floor remains a hard block.

Start date and conditions precedent. Prefill from facts on file (VWA, licence, meters, grid, insurance, environmental). The earliest sensible start usually waits on the slowest open CP — most often VWA approval. A start date before VWA clearance is the most common avoidable error.

9.8 Where to go next

Question Where it is taught
Physical vs virtual in one page V0 §5
How you contracted this deal V7 §8
Strike / WER / basis in the wizard V7 §4.5 · §4.7 · §9.6.1
Procurement Desk (virtual volumes, not “saving”) V3 §13.2
Full settlement explorer day (same numbers) V8 §14
Ledger conservation V8 §8
A VW portfolio rather than this per-contract hedge V17

9.9 Virtual Wheeling is not this deal

The Deal Room’s Eskom Virtual PPA is one IPP and one off-taker site, with a strike-versus-credit settlement and the Wheeled Energy Refund netted inside that contract. Eskom’s own register is something else: a Virtual Wheeling account that holds many generators and many meters, and pays one consolidated refund to the named account holder within forty-five days.

A site may be both a Virtual PPA counterparty and a VW portfolio member. The two paths never share a statement — classic wheeling stays at 20-minute grain; Virtual Wheeling is 15-minute throughout. Compose the portfolio, read the refund, and follow the 45-day term in V17.