Guides/Start here

How costs and profit work

Lots, first in first out, posting, blocked jobs, cash and true margin, book and market value.

Last updated 2026-11-07

Log in →
In this guide
  1. 1Lots and first in, first out
  2. 2Posting a job
  3. 3Blocked jobs and how to unblock them
  4. 4Cash margin, true margin and the other profit figures
  5. 5What is and is not counted
  6. 6Book value, market value and valuation settings
  7. 7Common questions

1. Lots and first in, first out

Every figure in the app starts here: each parcel of stock remembers what it cost.

Every time stock arrives, the app records it as a lot: who holds it, how many units, when it arrived, where it is (when known) and what each unit cost you (its unit cash cost). It also notes what a unit was worth on the market at that moment. You can see every lot on Stock → Lots.

Where lots come from, and what they cost

Market buy
From your wallet: the price you paid per unit.
Contract
From a contract you reviewed as a purchase: the contract price shared over its items by market value (or the custom prices you entered).
Manual purchase
Recorded by you: the price you entered, or the market price at the time if you left it empty.
Mined
From the mining ledger or recorded by you: your mined ore rate per m³ × the ore's volume (0 by default).
Opening balance
Recorded by you during setup: the unit cost you entered.
Refined
From a refine batch: the ore's cost + structure tax + refining fee, shared over the minerals by market value.
Reaction
From a delivered job: the inputs' cost + install cost + overhead, divided by the units made.
Planetary
PI output you recorded: export tax + any extra cost per unit.
Hauled, Transfer in
Moved by a haul or transfer: the original cost + its share of the freight.
Compressed
Compressed ore: the same cost as the ore it came from.

2. Posting a job

How a reaction moves through your stock: inputs out when it starts, product in when it is delivered.

Posting means writing a job into your stock records. It happens by itself at each jobs sync (every 5 to 10 minutes):

  1. 1
    EVE reports the job
    The app works out the inputs from the formula, the runs and the facility's rig bonus (EVE does not list a job's materials), and records the skills, rigs, taxes, cost index and prices in effect at the start.
  2. 2
    The inputs are taken from stock
    They come out of the starting character's lots, oldest and self-sourced first, dated at the job's start. Each input also records its market value at that moment. The job is now Posted; on the job's page see Lots consumed.
  3. 3
    You deliver it in game
    When EVE reports the job as delivered, the product becomes one new Reaction lot (Output lot on the job's page). Its cost per unit is (inputs at cash cost + Install cost (ESI) + Overhead) ÷ units made. Its market value at delivery is kept for the profit reports. It is self-sourced if all its inputs were.

Posting status

Each job on Pipeline, Slots and its own page shows one of these:

Pending
The app knows the job but has not taken its inputs yet (tooltip: Inputs not posted yet). Normally changes at the next sync.

3. Blocked jobs and how to unblock them

A blocked job is a bookkeeping problem, not a game problem. Fix the cause and it posts.

The reason shows in red under the Blocked chip on Pipeline, and each blocked job has an Inbox item. The blocked count in the action strip opens the list. There are three causes:

short … of …
Inbox: Job … can't be costed: short 500 of Nitrogen Fuel Block. The starting character's lots hold fewer units than the job needs. Usual causes: opening balances not entered, a purchase, refine or compression not recorded, a contract not reviewed, the materials sitting on another character, or wrong rigs on the facility (so the app expects more inputs than EVE took).
facility … not registered
Inbox: Job … can't be posted: facility … not registered. The job runs in a structure you have not added. Press Register facility: the structure id is filled in.
no reaction recipe for blueprint type …
The app's static data does not know the formula yet. An admin has to import the latest static data (Import static data).
  1. 1
    Open the Inbox item
    From the Inbox, or Fix next to the chip on Pipeline.
  2. 2
    Record what is missing
    Record purchase or Adjust stock (both pre-filled with the shortfall), , a from the alt that holds the materials, or . See .

4. Cash margin, true margin and the other profit figures

Two ways to judge a job, and four more figures on the Dashboard and Profit reports.

Every delivered job has an output value: the units made × their market value when delivered. It is compared with the job's costs in two ways:

Cash margin
Output value minus what you actually paid for the inputs, the install cost and overhead. What the job earned you in ISK, including any gain from cheap inputs (contract discounts, your own mining).
True margin
Output value minus the inputs at their market value when the job started, the install cost and overhead. Measures the reaction itself: a negative true margin means selling the inputs would have earned more than reacting them.
sourcing captured
Shown under Cash margin: the inputs' market value minus what you paid for them. The gap between the two margins.

Example: inputs worth 90m on the market that cost you 60m (mined ore and a contract deal), install cost 5m, output worth 100m. Cash margin is 100 − 60 − 5 = 35m; true margin is 100 − 90 − 5 = 5m; sourcing captured is 30m. Jobs whose product has no market price at delivery are left out of the totals and counted in a note (N jobs excluded (no market price at delivery)).

The other figures

Sales profit
Sale revenue minus what the sold units cost (FIFO) minus the estimated sales tax on market sales.
Contract discount
For contract purchases: their market value when received minus what you paid. How much the contracts saved you against the market.
Refine gain
For refine batches: the minerals' market value minus the structure tax and fee, minus what the ore was worth on the market when refined. Positive means refining beat selling the ore. A batch still at a contracted refiner counts once its return is recorded.

5. What is and is not counted

Know which costs are in the figures, which are estimates, and which you must record yourself.

Counted

Install cost
The job cost EVE reports (shown as Install cost (ESI)), which includes the facility tax and SCC surcharge.
Sales tax
Estimated for market sales: Base sales tax (Settings → Costing, 7.5% by default) reduced by 11% per level of the seller's Accounting skill (its current level). At Accounting 5: 7.5% × 0.45 = 3.375%. Contract sales have no tax.
Refining
The structure tax (estimated unless you enter what you paid) and the refiner's fee, added to the minerals' cost.
Freight
What you enter on a haul, or the default Freight rate (ISK per m³), added to the moved items' cost.
Mined ore
Your mined ore rate per m³ (0 by default, so mining is free unless you set a rate).
PI
The export tax at the customs rate you enter, plus any extra cost per unit.

Not counted

  • Broker fees on buy and sell orders, and relisting fees.
  • Structure fuel: facilities are treated as fuelled by their owner, so overhead is 0 and the facility tax is the structure's cost.
  • Freight, refining, compression or PI you did not record.
  • Stock removed with an adjustment: it leaves your stock without showing as a sale or a loss.

Estimates

Figures marked est. are estimates. In the Planner, install costs are estimated until the real job starts and EVE reports its cost. A refine's structure tax is estimated unless you enter the amount paid. Sales tax is always an estimate.

6. Book value, market value and valuation settings

What your stock cost versus what it is worth, and which market decides “worth”.

Book value
What the units still in stock cost you: remaining units × unit cash cost.
Market value
What they are worth now: units × today's price at the valuation market.
Unrealised gain
Market value minus book value. Profit you would make by selling at that price now.

Which market and price are used

Your valuation settings are in Settings → Costing. They price the Dashboard, the Profit reports, output values, contract discounts, refine gains and the default cost of manual purchases and adjustments:

Valuation market location id
The market to price at (Jita 4-4 by default). It must be one of the markets in Settings → Markets and prices.
Valuation price field
Split (midpoint of best buy and sell, the default), Best buy, Best sell, Buy, top 5% average or Sell, top 5% average.
Valuation fallback market location id
In Settings → General. Used when the valuation market has no price for an item (Jita 4-4 by default).
The Stock page has its own choice
The Market and Buy / Sell / Split picker on Stock → Holdings changes that page only, and has no fallback market. Until you pick, it starts from your valuation settings. The Dashboard and reports keep using the settings. See .

7. Common questions

Click a question to open it.

How costs and profit work

My true margin is negative but my cash margin is positive.

You made money because your inputs were cheap (contracts, your own mining), but selling those inputs on the market would have earned more than reacting them. Consider whether the reaction is worth the slot.

“Job … can't be costed: short … of …”

The character that started the job has fewer units of that input in its lots than the job needs. Record where they came from (opening balance, purchase, refine, haul from an alt), then Retry posting. If the shortfall looks wrong, check the facility's rigs. See Blocked jobs.

Why does a job show 0 ISK for its costs?

Its inputs have not been posted yet: it is Pending, Blocked or Ignored. Costs appear once it is Posted.

I delivered a job but its product is not in my stock.

The product is added at the next jobs sync after delivery (5 to 10 minutes), and only if the job's inputs were posted. A blocked or ignored job adds nothing: unblock it, or for jobs from before you started, record the product as an opening balance.

I changed a costing setting and old figures did not change.

That is intended. Each lot keeps the cost it was recorded with; costing changes apply to what you record from then on.

Why does the Stock page show a different value from the Dashboard?

The Stock page uses the market and price picked on that page, with no fallback market. The Dashboard uses your valuation settings in Settings → Costing. Pick the same market and price on Stock to compare.

Do the profit figures include broker fees and taxes?

Install costs, an estimated sales tax on market sales, refining tax and fees, freight and PI export tax are included. Broker fees and structure fuel are not. See What is and is not counted.

Why is my mined ore free?

Mined ore costs your mined ore rate, which is 0 by default. Set a rate per m³ in Settings → Mined ore if you want mining to carry a cost. It applies to ore mined from then on.

What does “self-sourced” mean?
← Previous
Recording what ESI cannot see
Next →
Dashboard

Something unclear or out of date? Ask your admin. All guides

Adjustment
Added by a stock adjustment: the cost you entered, or the market value at the time.

First in, first out

When a job, a sale, a refine or an adjustment takes stock, the app takes it from that character's lots oldest first (first in, first out, or FIFO). The cost of what was taken is the cost of those exact lots. If a job uses 1,000 units and your oldest lot holds 600 at 100 ISK and the next 5,000 at 120 ISK, the job costs 600 × 100 + 400 × 120 = 108,000 ISK.

Self-sourced first
Lots you produced yourself (self-sourced: mined ore, your PI, and anything refined, reacted, compressed or moved from only self-sourced material) are used before bought ones. Jobs and refines always do this; sales and stock removals do it while Consume self-sourced lots first is on in Settings → Costing (on by default).
Per character
Each character has its own lots. A job takes its inputs only from the character who started it, so materials held by an alt must be transferred first.
Location
Refines, compressions and hauls from a chosen location only use lots at that place or with no recorded location. Jobs and sales do not look at location.
Dates
Lots are used in date order, but a lot recorded after the job or sale still counts. That is how recording a missing purchase unblocks a job that started earlier.
Why the app keeps its own records
EVE tells the app how much you hold, never what you paid for it. The lots carry the cost, which is why profit needs them. Stock → Holdings shows EVE's quantities and costs only the units the lots know about; Reconciliation keeps the two in step.
Posted
The inputs are taken from stock. The product follows when the job is delivered.
Blocked
The app could not take the inputs. The job keeps running in game; only the bookkeeping waits. See Blocked jobs.
Ignored
Not posted on purpose: it started before Post jobs started after, it was cancelled before it was posted, or it is not a reaction or manufacturing job. Hover the chip for the reason.

Until a job is posted, its costs show as 0. A job cancelled or reverted after its inputs were posted raises an Inbox item: the app does not guess what you got back, so adjust your stock to match.

Create refine batch
Haul or transfer
Register facility
Recording what ESI cannot see
  • 3
    Let it post
    The app retries after you save from the Inbox, and again at every jobs sync. To try at once, press Retry posting (or Retry on Pipeline). Still blocked: … tells you what is still missing.
  • Dismissing does not unblock
    Dismiss only hides the Inbox item. The job stays blocked, is not costed, and its product is not added when delivered.
    Stock value
    What you hold at market value now, with its book value and unrealised gain. See Book and market value.

    All of them are on the Dashboard for the chosen period and character; each card opens the matching tab of Profit. See Profit reports.

    Choosing the market and price

    Costs are fixed when recorded

    A lot keeps the cost it was given, and the market value it had when it arrived. A job keeps its inputs' market value from when it started and its output's from when it was delivered. So changing a setting changes only what comes after:

    • Costing settings marked Applies to events recorded from now on (freight rate, mined ore rate, default purchase price field, refine fee and tax, sales tax, PI base values, self-sourced first) affect only what you record afterwards. Existing lots keep their cost.
    • Changing the valuation market or price changes today's market value and unrealised gain at once, but not the margins of jobs already delivered, past contract discounts or refine gains.

    To fix the cost of stock already recorded, remove it with Record→Stock adjustment and record it again with the right cost.

    Stock you produced yourself: mined ore, your PI, and anything made only from such stock. It is used before bought stock, and the Self column on Stock → Lots marks it.