Skip to content
Menu

Train at Home rewards and payouts: how to track your SN9 earnings

Verified with T@H 3.7.0 on macOS 26.6.2 (September 30, 2026)

Published October 23, 2026 · 5 min read

What is IOTA Train at Home? already covered the honest limit here: Macrocosmos describes the reward design only at a high level, and this article won't guess at the exact formula either. What it can cover is the practical side — how to actually see and export what you've been paid, once you're enrolled in subnera hub.

Where the numbers come from

subnera hub's Earnings page (/pools/<id>/earnings, also linked from the fleet's rewards strip) reads each pool's payout history for its machines' hotkeys from Macrocosmos's own public API — the same public rewards data the live fleet grid already shows per hotkey. It's a one-way read: nothing about your account, your Mac, or your pool is sent anywhere to get this. Each payout is then attributed to whichever machine actually held that hotkey's placement at the moment it accrued, so a Mac that changed pools, or a hotkey shared across machines, still lines up correctly instead of being double-counted or dropped.

Optional fiat pricing

By default, subnera hub also calls CoinGecko once for each calendar day that needs a price, to value payouts in USD and in one fiat currency you choose (EUR by default; the pinned list covers about 40 ISO currencies, from USD, GBP and CHF to JPY, INR and BRL). The price used is CoinGecko's own daily snapshot at 00:00 UTC for that specific day — not a live or real-time rate.

You can turn this off entirely (HUB_PRICE_SOURCE=off): payouts already priced keep their stored price, and new ones stay unpriced until you turn it back on, at which point the missing days are backfilled automatically.

"Unpriced" and "partial" totals

A payout with no matching historical price yet is flagged unpriced in its row's notes. A period or machine total that includes any unpriced rows is shown as partial, so a monthly total you're looking at mid-collection doesn't get mistaken for a final number. A few other note flags exist for edge cases — for instance shared_hotkey, when a payout belongs to a hotkey shared across more than one of your machines, so it forms its own group instead of being split arbitrarily between them.

Your export preferences

An Earnings preferences card on the Account page holds three settings: default currency, timezone (used to bucket payouts into calendar days, months, quarters or years for totals), and CSV format — plain RFC 4180 (comma-separated, dot decimals), Excel (the same, with a byte-order mark so Excel recognizes UTF-8 automatically), or Excel-EU (semicolon-separated, comma decimals, for European Excel installs that expect that format).

What you can download

From the Earnings page you can download:

  • The raw payout rows, as CSV or JSON, for a chosen date range — one row per payout, including its accrual time (UTC and your local calendar day), status, pool, machine(s), hotkey, the SN9 amount, its USD value, your chosen fiat value, the price date and source, and any notes.
  • A totals summary (CSV only), grouped by day, month, quarter, year or machine, with a row per group plus a final total row, so re-adding the file's own column reproduces the printed totals.

Filenames are generated automatically (iota-earnings_<pool>_<from>_<to>_<currency>.csv, or -totals-<group> for a summary) so you don't have to name them by hand. A date range wide enough to hold more than 200,000 payout rows is refused upfront with a message to narrow it, rather than silently producing a giant or truncated file.

What this is (and isn't) for

The export exists to give you your own numbers in a format you can keep, import into a spreadsheet, or hand to someone else — it does not calculate what you owe anywhere, and it is not tax advice. As the export's own footnote puts it: "Values use CoinGecko's daily SN9 price at 00:00 UTC on the payout day. This is data for your records, not tax advice." Keep your own records, and check the rules that apply to you locally — this feature's job stops at giving you accurate, dated numbers to work from.

Checklist

  1. Enroll at least one Mac in subnera hub — see the fleet hub guide if you haven't yet.
  2. Open Earnings preferences on the Account page and set your currency, timezone and CSV format.
  3. Visit a pool's Earnings page to see payouts already attributed per machine.
  4. If USD/fiat values are missing, confirm HUB_PRICE_SOURCE isn't set to off in the environment running the hub.
  5. Download raw rows for your records, or a totals summary grouped by month or machine, whichever you actually need.
  6. Treat any row or total marked "unpriced"/"partial" as still-settling, not wrong.
  7. Keep the downloaded files as your own records; check locally applicable rules for anything beyond that.

For the incentive design itself rather than the export tooling, see what IOTA Train at Home is. If a payout looks like it landed on the wrong machine, the troubleshooting guide and the optimal setup guide are the right next stops.

Want to see this on your own Mac?

subnera shows the real queue position and phase in your menu bar.

Install subnera