DocsReceipts and positions

Use

Receipts and positions

Every trade comes back as a receipt read from the chain, not from zeroterm's own estimate. Your positions and the "saved" total are worked out from those receipts.

What a receipt shows

After a trade, zeroterm reads the landed transaction back from your RPC and records what it finds:

FieldMeaning
side, coin, timeBuy or sell, the coin's symbol, and when, in UTC.
statuslanded, failed (it landed, but the chain rejected it), or expired (it never landed).
SOL and tokensThe SOL that went into the swap, or came out of it, and the tokens that moved, read from your wallet's balances before and after.
venueWhere it traded: "PumpSwap", "Raydium CPMM", or for a Jupiter route, the pools it went through.
routesEach route the trade went to, whether it accepted, and how many milliseconds it took to answer.
slotThe slot the trade landed in, and how many slots after sending (+1 means the very next slot).
time to landMilliseconds from sending to confirmation.
network feeThe base fee and priority fee, as the chain charged them.
tipHow much, and which service it paid.
rentDeposits for accounts the trade had to open: the coin's token account (about 0.0015 SOL, back when you close it with W r), and on a wallet's first pump.fun or PumpSwap trade, the account that venue opens to count your volume.
venue feeWhat the venue and the coin's creator took, from the quote (not shown for Jupiter routes).
zeroterm feeAlways 0.
elsewhereWhat your comparison terminal would have charged on the same trade at its base tier.

A trade that failed still paid its network and priority fee, as every failed Solana transaction does; the tip transfer was undone with the rest of the trade. A trade that expired never reached a block and cost nothing.

Where receipts are kept

Every receipt is one line of JSON in ~/.zeroterm/trades.jsonl, readable only by you. Nothing is sent anywhere. A trimmed example:

{
  "at": "2026-11-02T14:02:11.402Z",
  "side": "buy",
  "venueLabel": "pump.fun",
  "status": "landed",
  "slot": 381204117,
  "slotsToLand": 1,
  "landedMs": 412,
  "routes": [
    { "route": "rpc https://your-rpc.example", "ackMs": 188, "ok": true, "error": null },
    { "route": "helius-sender", "ackMs": 41, "ok": true, "error": null }
  ],
  "tradeLamports": "500000000",
  "networkFeeLamports": "27000",
  "tipLamports": "1000000",
  "tipRoute": "sender",
  "platformFeeLamports": "0",
  "elsewhereFeeLamports": "4750000",
  "elsewhereName": "axiom"
}

Saved

The "saved" total is the sum of the comparison fee on every landed trade: what your comparison terminal would have charged you at its base tier.

TerminalBase fee per trade
Axiom0.95%
GMGN1%
Photon1%
BullX1%
Trojan1%

These are published base tiers as of November 2026. Volume tiers and referral codes lower them, so the total is an upper estimate. Pick the terminal in Settings.

Positions

Positions are worked out from your landed receipts, per wallet, with average-cost accounting:

  • A buy adds its tokens and the SOL it cost.
  • A sell takes out the same share of the cost as the share of tokens it sold, and the difference between the SOL it brought in and that cost is your realized profit or loss.

For example: you buy 1M tokens for 0.5 SOL, then 1M more for 1 SOL. You hold 2M at a cost of 1.5 SOL. You sell 1M for 1.2 SOL: that takes out half the cost, 0.75 SOL, so the realized profit is 0.45 SOL, and you still hold 1M tokens at a cost of 0.75 SOL.

Only trades made through zeroterm count. A coin you bought somewhere else shows as held only for what you bought here.

Routes

In browser mode, the Routes tab next to Receipts and Positions turns your receipts into one row per route:

ColumnWhat it counts
sentTrades whose bytes went down this route.
acceptedHow many times the route answered that it took them.
median msThe middle acceptance time, from the start of the send.
first to acceptTrades where this route accepted before every other route.

Under the table: how many of your trades landed, and the median time and slots from send to landing.

The full-screen terminal shows the top row in the receipts line: 2 landed · avg 1035 ms · first: helius-sender 2/2, 202 ms.

"Accepted" is not "landed". The same signed bytes go down every route and a signature lands only once, so the chain does not say which route delivered it. What the table shows is which route takes your bytes fastest from where you sit, measured on your own trades, which is the part you can change in Settings.

↑ ↓ to move · ⏎ to open