How earnings work
Your rate
Section titled “Your rate”Every machine has a rate, in US dollars an hour, which you set: with --rate when you install it, then on the dashboard’s Machines page or with unitfabric machines set <id> --rate 0.25 (above 0, at most 1,000, four decimals at most). A machine installed without one gets the rate suggested for its GPU class: the table is on the pricing page and in unitfabric supply rates, and a class it does not list is suggested $0.0125 an hour for each GB of its VRAM, never less than the CPU rate. A lower rate counts at once; a higher one from the machine’s next lease.
What a unit earns
Section titled “What a unit earns”Each unit your machine completes for another organization earns, once its buyer is billed for it, your rate for the time the unit took, and never more than 80% of the unit’s price. The time is the shorter of what your machine reported and what the control plane saw between its reports; the rate is the lower of the machine’s rate now and its rate when the lease began. An RTX 4090 at $0.25 an hour that makes an image priced $0.0015 in 2 seconds earns $0.000139 for it: $0.25 × 2 ÷ 3,600, below the $0.0012 that 80% of the price would allow.
The 80% bound also decides what your machine is offered. Its cost per unit is its rate over the units an hour it was measured at, and a machine whose cost per unit is above 80% of a job’s price is not offered that job: it would leave nothing for the retries, lost leases and verification the platform pays for. The Machines page shows, for each template, what your rate earns a unit and below which rate the machine would be offered a template it is too dear for now.
Your own organization’s units earn nothing: they are free to it (pools).
When it can be spent
Section titled “When it can be spent”Earnings are credits on your organization’s balance, the one it pays for jobs from, each a ledger line earn:<job>:<unit> that names the job as your machine was told it, never by its buyer’s id. A verified machine’s (trust 80 or more) are credited at once. Any other machine’s are held for 14 days, neither spendable nor payable, and then credited if no output of the machine found wrong since stands against it: what a machine earns before it has shown its work waits until it has. unitfabric supply earnings lists the earnings, newest first, each with its seconds and amount, and held_until while it is held.
A buyer’s free credit, what a new account starts with and any credit we give, is spent before what the buyer paid for. A unit bought with it earns your organization credit too, but credit only: you can spend it on jobs and never take it out, and what it buys earns credit only in its turn. unitfabric supply earnings marks such an earning credit_only.
A machine revoked for its work, whether wrong outputs took its trust that low or we revoked it for cheating or wrong outputs, has every earning that no payout covered voided, and so has a machine you remove while its trust is under the trust it started at. A machine we revoke for anything else, at your request among them, keeps its earnings, payable as any are, unless its work is later found wrong (revocation).
Payouts
Section titled “Payouts”Payouts go through Stripe Connect Express, which you set up once: on the dashboard’s Payouts page, or with unitfabric supply onboard, which prints Stripe’s page (--country DE for a payee outside the United States, two letters, the first time). Stripe asks for what it needs to pay you, and keeps your bank details.
From the 5th of each month (UTC) your organization is paid once that month: the earnings at least 14 days old that were credited, that free credit did not buy and that no payout covered yet, as far as the balance not committed to your open jobs goes (earnings spent on jobs are spent), when they come to $25 or more, in whole cents (what is under a cent stays credit). The payout is a Stripe transfer to your Express account, from which Stripe pays your bank. unitfabric supply payouts shows whether the account can take transfers, and each payout: pending, paid with its transfer’s id, or failed with Stripe’s reason, its money back on your balance; and of a paid one, what a reversal took back (reversed_usd, below).
An organization frozen for a disputed card payment of its own is not paid until it is cleared, nor one deleted. Earnings from a buyer whose payment is disputed wait, and are voided if the buyer’s bank takes the money back. A buyer’s dispute can also end after a payout covered what your machines earned on its jobs: if the buyer’s bank takes the money back, what the payout paid for those units is reversed from your Stripe account, and what its balance cannot cover Stripe collects from your bank. The payout then shows what was taken back, as its reversed_usd in unitfabric supply payouts (and GET /v1/supply/payouts).
The numbers on this page as your organization is held to them (the most of a unit’s price a machine earns, the trust a machine starts at and is verified from, the hold of an unverified machine’s earnings, and the payout’s minimum, day and hold) are also in GET /v1/supply/rules (HTTP API).