Case study
One invoice, one cycle, one true-up.
The walkthrough runs a real deal: an S21 Pro block at Pyote. The pool pays the miner daily, and 55% of each payout routes to the host’s BTC wallet as a provisional payment against the hosting fee, valued at Coinbase spot. Once a cycle the host drops the supplier invoice in, and that is their whole job. Everything after it is the contract doing its own arithmetic, and the gap between the fee and what the daily 55% already delivered is the true-up.
Billing cycle
Feb 6 - Mar 9, 2026
31 days · straddles two months
Fleet
366 × S21 Pro
85.6 PH/s rated · 1.285 MW
Invoice total
$40,135.83
$0.040129 / metered kWh
Structure
55% daily · Coinbase spot
Cycle recon + true-up
Set up
Build the canonical model from the executed agreement
Two requirements drive the whole deal, and both are in the PDF: 55% of the daily pool payout goes to the host’s wallet, and a monthly Hosting Fee Reconciliation goes to the miner. LineRate pulls both out with the clause attached, and it also pulls out the two terms the agreement never actually pins down.
Source · master_agreement.pdf
Hosting Services Agreement
3.2 DAILY PAYMENT
Fifty-five percent (55%) of the Miner’s daily mining pool payout shall be paid to the Host’s BTC wallet on each Business Day, such payment being provisional and subject to reconciliation under Section 4.
4.1 HOSTING FEE
The Hosting Fee shall equal the all-in cost of electricity delivered to the Site plus the fixed fees set forth in Exhibit B.
4.4 RECONCILIATION
Host shall provide the Miner a Hosting Fee Reconciliation report within ten (10) Business Days of month end, together with supporting supplier invoices.
EXHIBIT E MAXIMUM MONTHLY POWER USAGE
Calculated by reference to a margin factor of 1.03 applied to rated equipment load.
Model v0.3 · 9 terms shown
| Term | Value | Source |
|---|---|---|
| Daily payout share | 55% of pool payout → host wallet | §3.2 |
| Hosting fee basis | All-in delivered power + fixed fees | §4.1 |
| Fixed fees | $2.50 / kW-mo · 1,300 kW | Ex. B |
| Max monthly power usage | Margin factor 1.03 × rated load | Ex. E |
| Monthly recon delivery | Monthly Hosting Fee Reconciliation → miner | §4.4 |
| Availability floor | 97.0% · credit against fee | §6.2 |
| All-in rate basis | Metered kWh or ERCOT-settled kWh? | §4.1 |
| BTC→USD conversion | Coinbase spot · 00:00 UTC | §4.5 |
| Cycle alignment | Supplier cycle ≠ calendar month | not addressed |
Both flagged rows are where every dispute on this deal will come from. The first alone moves the fee by 7.7%.
Connect the required data & permissions
The model already knows what it needs, and it’s a short list: pool for earnings, the supplier invoice for cost, Coinbase for the conversion, the nameplate register for the cap, and the interval meter to verify consumption. Nothing is connected that the contract doesn’t reference. Until the meter authorization lands, reconciliation stays paused rather than estimated.
Mining pool
Sub-account · daily payout
Supplier invoice
Retail electric · per supplier cycle
Nameplate register
Exhibit A · fleet of record
Coinbase spot
BTC/USD · 00:00 UTC
TNMP interval meter
15-minute site consumption
Host BTC wallet bound
bc1q…9f4c
Destination of record for the daily 55%. Confirmed by both parties; changing it requires an amendment.
Review, amend & approve, then the version is stamped
The miner asked for one thing in review, and it’s the only question that matters about the invoice: which kWh figure does the rate divide by? The bill carries two, and they differ by 7.7%.
Raised in review
| All-in rate basis | Metered kWh · $0.040129 |
| Cycle alignment | Deferred, logged as exception |
The rate-basis decision is worth $2,856 on this invoice alone: the difference between dividing $40,135.83 by 1,000,182 metered kWh and by 1,076,820 ERCOT-settled kWh. It was a coin flip in a spreadsheet before; now it’s a signed term.
The supplier’s cycle runs Feb 6 - Mar 9 against a contract that says “month end.” That stays open, and every report carries a note saying so.
Signatures · model v1.0
Host · site operator
Operations
Miner · counterparty
Finance
Stamped
Live
The daily payment, running on its own
This happens every day without anyone touching it. Pool pays the miner, 55% routes to the host’s wallet, and LineRate records the Coinbase rate it used to value it. Nobody is calculating a percentage in a group chat.
Paid to host wallet
Sent0.01053857 BTC
≈ $1,243.55 · Coinbase spot, 00:00 UTC
What this is not
The 55% is provisional. It is not the hosting fee and it is not a profit split: it’s a cash-flow mechanism that keeps the host funded while the real cost of power is still unknown. The Feb 6 - Mar 9 supplier invoice won’t arrive until late March.
Daily payouts · 31 days in cycle
Reconcile
Drop the invoice, & take two numbers off it
The host drops the supplier invoice in, and that’s the end of their involvement. LineRate needs exactly two things out of it, total kWh, and the rate those kWh cost, and everything after that is the contract doing its own arithmetic. Nobody has to read an energy bill to agree on what’s owed.
01 · done
Host drops the invoice on the platform
02 · done
LineRate generates the recon report
03 · now
Both parties agree
04
LineRate settles the final amount
pyote_s21pro_feb-mar.pdf
Uploaded by host · Mar 22, 09:06 · usage 2026-02-06 → 2026-03-09 · 31 days
What the recon takes from it
Total kWh
1,000,182
metered · billed quantity
Cost basis
$0.040129/ kWh
$40,135.83 ÷ 1,000,182 kWh
Two numbers. Everything else on the bill, energy, ancillary services, taxes, distribution, is retained verbatim for audit, but no figure downstream depends on anyone reading it. The one decision that mattered was which quantity the rate divides by, and that’s a signed term.
Invoice detail · kept for audit, not used downstream
| Contract charges | $3,500.64 |
| Market charges | $24,705.62 |
| Tax charges | $2,775.42 |
| Distribution charges | $9,154.15 |
| Invoice total | $40,135.83 |
Some lines on the bill are quantified against 1,076,820 ERCOT-settled kWh rather than the 1,000,182 metered, a 1.0766 loss factor, and the reason the rate basis had to be settled in writing. On settled kWh the same invoice reads $0.037273.
The input register, & a cycle that isn't a month
Before any arithmetic, LineRate declares what it has and what role each input plays. The invoice contributes two values and nothing else. The harder problem is that the supplier bills February 6 to March 9, and the contract promises a monthly report. No calendar month matches, so the engine holds the invoice period and the calendar apart rather than pretending they’re the same thing.
Input register
| Input | Fields used | Role |
|---|---|---|
| Supplier invoice → total kWh | 1,000,182 metered kWh | authoritative · §4.1 |
| Supplier invoice → cost basis | $40,135.83 ÷ metered kWh | authoritative · §4.1 |
| · invoice line detail | 24 lines, verbatim | retained for audit only |
| Pool payouts | payout BTC, timestamp | authoritative · collected |
| Coinbase spot | BTC/USD at 00:00 UTC | authoritative · §4.5 |
| Nameplate register | 366 units × 3,510 W | Exhibit A |
| Model terms | margin factor, fixed fee, share % | v1.0 · bound Feb 4 |
| TNMP interval meter | 15-minute site kWh | missing · PUE unverified |
With the meter absent, the only ratio available is invoice kWh over rated kWh, 104.6%. That is what the cap tests against. It is not a PUE: separating cooling overhead from downtime needs interval data, and the report says so on its face rather than presenting a number it can’t support.
Period alignment
Any single number, opened up
Click any figure on the report and this is what’s underneath: the formula, every input, and where each one came from. Same inputs always produce the same output, and if a late input arrives, LineRate makes a restatement rather than quietly changing the old number.
Formula · as stamped in the model
billable_power = min(metered_kwh, cap) × all_in_rate cap = rated_kwh × margin_factor all_in_rate = invoice_total ÷ metered_kwh
Evaluated
Provenance of each input
| Invoice total | supplier PDF · Mar 22 09:06 |
| Total kWh | supplier PDF · metered quantity |
| Nameplate | Exhibit A · model v1.0 |
| Margin factor 1.03 | Exhibit E · model v1.0 |
| Rate basis | §4.1 · review decision |
Determinism
If a late input lands
The interval meter arriving in April would replace the derived usage ratio with a measured PUE. That doesn’t edit this figure: it produces a restatement, with the original and the revised value both readable and both approvals recorded.
The cap binds, & here is the true-up
With the two values registered and the derivation settled, the rest is arithmetic the contract already specified. Usage came in above the Exhibit E allowance, so $630.87 of real power cost falls outside the cap and stays with the host. The fee lands above what the daily 55% collected, and the gap is what settles.
Exhibit E · maximum monthly power usage
| Rated equipment load × hours | 1,285 kW × 744 h |
| Rated consumption | 955,787 kWh |
| Margin factorv1.0 | 1.03 |
| Billable cap | 984,461 kWh |
| Total kWh from invoice | 1,000,182 kWh |
| Usage vs rated | 104.6% |
| Over cap · not billable to miner | 15,721 kWh · $630.87 |
Hosting fee and true-up
| Billable power984,461 kWh × $0.040129 | $39,504.96 |
| Fixed feesEx. B · $2.50/kW-mo × 1,300 | $3,250.00 |
| Availability credit98.2% vs 97.0% floor | $0.00 |
| Hosting fee owed | $42,754.96 |
| Collected via daily 55%0.326696 BTC | $38,550.08 |
| True-up owed by miner0.035635 BTC | $4,204.88 |
Two exceptions carried on this report
The 1.03 cap left $630.87 of real power cost with the host · the cycle runs Feb 6 - Mar 9 against a contract that says month end.
Model v1.0 · as issued, Mar 22
Hosting fee owed
$42,754.96
Billable power plus fixed fees, after the Exhibit E cap
Collected via daily 55%
$38,550.08
31 provisional payouts · 0.326696 BTC
True-up owed by miner
$4,204.88
0.035635 BTC · the gap, and the whole point
Amend
Amend the margin factor, & watch the effective date land mid-cycle
Usage runs about 4.6% above rated load every cycle, against a 3% allowance, so a slice of real power cost falls outside the cap and stays with the host. The amendment moves the factor to 1.1, well clear of measured usage, but it’s effective March 4, and this invoice runs to March 9. Twenty-six days at the old factor, five at the new one. That boundary is exactly what spreadsheets get wrong.
Redline · Exhibit E, clause iv
iv.The Parties agree that for all periods commencing on and after March 4, 2026, the Maximum Monthly Power Usage (as set forth in Exhibit “E” to the Hosting Agreement) for both the Site and the Pyote Site shall be calculated by reference to a margin factor of 1.1 instead of 1.03, and such factor, and the methodology and all inputs used in the calculation of Maximum Monthly Power Usage shall be final and binding on the Parties, and not subject to any further adjustment, revision, or reconciliation.
How LineRate splits the cycle
| Feb 6 - Mar 326 days · v1.0 | 30,832 kWh/day × 1.03 | 825,677 kWh |
| Mar 4 - Mar 95 days · v1.1 | 30,832 kWh/day × 1.1 | 169,575 kWh |
| Blended billable cap | 995,252 kWh |
Recomputed if approved
| Margin factor | 1.03 → 1.1 from Mar 4 |
| Billable cap | 984,461 → 995,252 kWh |
| Over-cap kWh | 15,721 → 4,930 |
| Cost left with host | $630.87 → $197.84 |
| Hosting fee | $42,754.96 → $43,187.99 |
| True-up owed by miner | $4,204.88 → $4,637.90 |
| Effect on this cycle | +$433.03 |
Applying 1.1 to the whole cycle instead would give $43,385.83, which is $197.84 too much. The cap only stops binding entirely from the next full cycle onward.
Restate & audit
Same cycle, new model, three ways it could have gone
Here’s the same invoice under v1.1. The middle column is what the amendment actually says. The right column is what you get if you ignore the effective date, a $198 error, in the host’s favor, that nobody would ever catch by eye.
| Line | v1.0 · as issued | v1.1 · effective Mar 4 | v1.1 applied to whole cycle |
|---|---|---|---|
| Invoice total | $40,135.83 | $40,135.83 | $40,135.83 |
| Days at 1.03 / 1.1 | 31 / 0 | 26 / 5 | 0 / 31 |
| Billable cap | 984,461 kWh | 995,252 kWh | 1,051,366 kWh |
| Metered consumption | 1,000,182 kWh | 1,000,182 kWh | 1,000,182 kWh |
| Over cap · left with host | 15,721 kWh | 4,930 kWh | 0 kWh |
| Billable power | $39,504.96 | $39,937.99 | $40,135.83 |
| Fixed fees | $3,250.00 | $3,250.00 | $3,250.00 |
| Hosting fee | $42,754.96 | $43,187.99 | $43,385.83 |
| Collected via daily 55% | $38,550.08 | $38,550.08 | $38,550.08 |
| True-up owed by miner | $4,204.88 | $4,637.90 | $4,835.75 |
| Error vs the amendment | −$433.03 | correct | +$197.84 |
Settlement
Still open
Exceptions travel with the report. They don’t block settlement of the agreed lines.
Next cycle
From the next full cycle the cap stops binding, and the margin-factor exception drops off the report on its own.
How any number on this deal came to be
Every payout, invoice, approval and restatement, hashed and attributed. When someone asks in December why this cycle’s fee moved by $433.03, this is a thirty-second answer instead of a two-day archaeology project.
Events
- Feb 02 18:31HostModel v0.3 draft uploaded4c81…d0a7
- Feb 04 20:10HostApproved model v1.07d02…1ee5
- Feb 04 21:44CounterpartyApproved model v1.0 · stampeda41f…9cb2
- Feb 06-Mar 09System31 daily payouts · 0.326696 BTC to host walletbb90…44a1
- Mar 22 09:06HostSupplier invoice uploaded · $40,135.83e5a3…77b0
- Mar 22 09:07SystemRecon generated · fee $42,754.96 · 2 exceptionsc018…2d9e
- Mar 24 11:15SystemTNMP meter authorization requested51de…9a30
- Mar 25 16:02CounterpartyQueried over-cap treatment · Exhibit E9f41…5a6c
- Mar 27 14:41HostAmendment stamped v1.1 · 1.1 from Mar 42ab6…c103
- Mar 27 14:41SystemCycle restated · fee +$433.036e77…b8f2
Governing term
Blocked / stale data
Contract history