Skip to content

Ship Insurance

A one-time-purchase policy attached to a hull at commissioning. On destruction, the policy pays the registered owner a fraction of the ship's purchase value. Insurance is a deflationary credit sink at the population level — total premiums collected exceed total payouts, by design (see ../economy/lifecycle.md#28-insurance-premiums).

For the destruction flow that triggers a payout see ./ships.md#destruction-escape-pod. For the schema shape see ../../DATA_MODELS/ships.md (Ship.insurance JSONB; InsuranceType enum at models/ship.py).

Tiers

models/ship.py:InsuranceType — four values: NONE, BASIC, STANDARD, PREMIUM.

Tier Premium (% of purchase value) Coverage Deductible Net payout on destruction
NONE 0% 0% 0
BASIC 10% 50% 5% 45% × purchase_value
STANDARD 17% 75% 10% 65% × purchase_value
PREMIUM 22% 90% 15% 75% × purchase_value

The premium percentages (10% / 17% / 22%) are canon per ADR-0081. The shape is calibrated so a player who loses ~30% of their ship value across the hull's lifetime breaks even on STANDARD; players who lose ships rarely subsidize players who lose them often, and the population-level spread guarantees deflation per ../economy/lifecycle.md.

What insurance covers — and what it does not

Insurance covers ship purchase value only. It does not cover:

  • Cargo aboard at destruction (becomes a Cargo Wreck in the destruction sector).
  • Installed upgrades or equipment-slot modules.
  • Genesis Devices, mines, or other tracked-separately munitions on the hull.
  • Reputation, faction-standing, or rank progression effects.

The insurance value tracks Ship.purchase_value at the moment of purchase, not the live Ship.current_value (which depreciates with maintenance condition). A neglected hull that drops in current_value still pays out at the tier's coverage of its original purchase value.

Non-insurable ships

📐 Design-only. Some ships are flagged insurable = false on ShipSpecification and cannot be insured at any tier:

  • Warp Jumper — purpose-built around a planned-destruction use case (Phase 3 of warp gate creation per ADR-0029). No insurance company in-universe writes policies on a hull whose canonical use sacrifices the ship; the 1,000,000 cr investment is the gate-builder's actual risk capital, not a hedged premium. Insurance UI hides the tier selector for Warp Jumpers; any attempt to attach a policy is rejected at the model layer.
  • Escape Pod — issued, not purchased, and indestructible by design.

Combat-destruction of a Warp Jumper (i.e., killed in transit before Phase 3) is treated identically to anchor-destruction at Phase 3: no payout. The owner loses the full 1,000,000 cr ship value.

Buying insurance

Purchased at any friendly port at ship commissioning time. "Friendly" means a station where the player has at least NEUTRAL reputation with the controlling faction. Premium is paid upfront; coverage attaches to the hull and persists for its lifetime — there are no renewals, no claim-history adjustments, and no per-incident cancellations.

Insurance can be upgraded (BASIC → STANDARD → PREMIUM) at a friendly port; the player pays the difference between the tiers' premiums. Insurance cannot be downgraded or cancelled for a refund.

Payout flow

Canonical formula (per ADR-0061 S-D3):

payout = (coverage% − deductible%) × purchase_value
       = net_payout%(tier) × purchase_value          # equivalent — table form

The Net payout on destruction column in the Tiers table above is the precomputed (coverage − deductible) value: 45% (BASIC), 65% (STANDARD), 75% (PREMIUM). Both forms produce the same number; the table form is the cached/displayed value, the formula form is what the destruction handler computes.

When a ship is destroyed:

  1. Ship.status set to DESTROYED.
  2. The destruction handler reads Ship.insurance.tier and Ship.purchase_value.
  3. Payout computed via the canonical formula above.
  4. Credits added to Player.credits of the registered owner (per ../../SYSTEMS/ship-registry.md#insurance-interaction) — never the current pilot.
  5. Combat log entry includes the payout amount and tier.

Payout is immediate (same transaction as destruction) — no claims process, no waiting period.

Worked example

A 300,000 cr Defender insured at STANDARD:

  • Premium paid upfront at purchase: 51,000 cr (17% × 300,000, per ADR-0081).
  • Defender takes a missile from a pirate; hull → 0.
  • Cargo (let's say 50,000 cr of equipment) becomes a Cargo Wreck in the sector. Lost unless the owner or a teammate retrieves it within the grace window.
  • Ship destruction processes; insurance pays (75% − 10%) × 300,000 = 195,000 cr to the registered owner.
  • Pilot ejects to escape pod with credits intact. Net loss: 300,000 (ship) + 51,000 (premium) − 195,000 (payout) = 156,000 cr plus whatever cargo wasn't recovered.

Without insurance, the same destruction costs the full 300,000 cr ship value, but no premium was paid up front — for casual play the math is simple: insure if you expect to be destroyed more than 1× per (purchase_value / payout) hulls, otherwise self-insure. STANDARD's 65% payout means insurance is net-positive expected value when destruction probability exceeds ~26%.

Edge cases

  • Stolen-status ship destroyed while a thief is piloting. Payout still goes to the registered owner. The thief's Wanted Status clears (ship gone) but they collect nothing. See ../../SYSTEMS/ship-registry.md#insurance-interaction.
  • Ship abandoned at a port (manual abandonment, not destruction). No payout; insurance lapses with the hull. The next claimant of an abandoned hull inherits whatever insurance tier was on it (see ./ships.md#manual-eject-and-the-ship-registry).
  • Warp Jumper consumed at warp gate creation. Warp Jumpers are non-insurable (see Non-insurable ships above) — Phase 3 destruction does not fire any payout. The 1,000,000 cr investment is the gate-builder's risk capital. See ../galaxy/warp-gates.md.
  • Ship destroyed while being towed by a Tractor Beam hauler. The towed ship's destruction triggers its own insurance payout to its registered owner. The hauler's destruction does not destroy the towed ship — the towed ship enters Drifting state intact (see ./ships.md#tractor-beam-tow-operations).
  • Mid-tier upgrade in flight. Upgrading BASIC → PREMIUM mid-mission: coverage changes immediately on payment; no waiting period, no anti-fraud delay. The credit cost is the premium difference (PREMIUM_premium − BASIC_premium), not the full PREMIUM premium.

Source

  • services/gameserver/src/models/ship.pyInsuranceType enum, Ship.insurance JSONB column.
  • services/gameserver/src/services/ship_service.py_calculate_insurance_payout (✅ — net payout (coverage − deductible): BASIC 45% / STANDARD 65% / PREMIUM 75% of purchase_value, deductible applied per ADR-0061; reads per-hull ship.insurance). Payout proven live 2026-06-14 (see FINDINGS.md).
  • services/gameserver/src/api/routes/ship_upgrades.pyGET/POST /ships/{id}/insurance (✅ — buy/upgrade at a station offering insurance; premium per ADR-0081; non-insurable + downgrade rejected). v1 gates on station-offers-insurance; the NEUTRAL-rep "friendly port" check is a documented follow-up.