Hartii Biome docs

Games

HPAY tools

The point of sale, receipt, links, pay page, split, Statement and button shipped in Games/Biome 1.21.0; the Inbox followed in 1.24.0. The current pages are Beta. The WQI, dashboard and PDF additions below ship in Games/Biome 1.27.0. Native-wallet funded-payment behavior is not claimed by this documentation. Start with small amounts.

The dedicated build is available at hartiipay.app. It has the same tools. Existing Biome routes are retained, with their own browser records and payment guards. There is no automatic record transfer or cross-domain safety lock: check an outstanding payment on its original domain before starting again. See dedicated HPAY and existing Biome records.

All of them are non-custodial. The payer's wallet signs and the selected asset goes to the request's recipient; Hartii takes no HPAY service fee. WQI uses the pinned existing ERC-20, not a new HPAY contract. QUAI and WQI are never added together. They use HPAY Request v1 and v2. An unknown number is shown as a dash, never as 0.

12 confirmations is a placeholder until finality on Quai has been measured on mainnet. Where a tool lets you change it, the range is given below.

Point of sale

https://hartiibiome.com/hpay/pos is for a shop. It works on a phone or a tablet.

  1. Save your Quai address or Hartii @name once. It is stored on this device only.
  2. In Price currency, choose Dollars → QUAI or Exact WQI. The first uses a checked dollar quote; the second accepts exact token units with up to 18 decimals and no dollar quote. WQI customers need separate QUAI for gas, and the reviewed token deployment must pass its check.
  3. Press Charge for the dollar mode or Create WQI request for exact WQI. The WQI preview discloses the actual requested amount, including its tiny matching adjustment, before creating the link; that adjustment is not a service fee. Each sale gets a tagged request and a 15 minute window. The customer scans the QR code and pays from their own wallet. A note/reference stays in the link; it is not on-chain proof.
  4. The screen says Paid only when the exact asset, recipient, amount and time window match the node-checked payment and the sale's confirmation threshold.

Each sale has its own reference and tag. A QUAI dollar sale gets a fresh quote; a WQI sale uses exact base units and a WQI v2 request. A tag is not reused for 30 minutes after a sale ends, so a late payment to an old sale cannot pay a new one. Nothing can mark a sale paid by hand. HPAY pays the saved recipient wallet; it does not contact or pay a utility or other biller.

Confirmations. In Settings, "Confirmations before a sale shows Paid" is 1 to 12, default 12. Each sale keeps the number it was opened with. A shop can wait for fewer than the customer's own page does, never more.

What the statuses mean:

StatusMeaning
WaitingThe sale is open. No confirmed payment yet.
PaidA payment matched the sale's address, exact tagged amount and time window, and has the required confirmations.
Needs a lookA payment arrived that does not match: a wrong amount, a late or duplicate payment, one that fits more than one sale, or one the node could not confirm. It is never counted. A wrong amount says what was asked, what arrived and how much it is short or over.
ExpiredThe sale's time ran out, and after a 3 minute wait its asset's sources answered with no matching payment: Quaiscan and the Quai node for QUAI, the bounded node scan for WQI.
Not verifiedHartii cannot say whether it was paid: a source stayed down until 30 minutes after the expiry, the sale could not be matched, or the sale was still waiting after a week (it is then not looked for again). Check the address on Quaiscan.

"Expired" is not final while a source is down, the WQI scan has gaps, or QUAI discovery through Quaiscan is more than 60 blocks behind the node. The page then says it cannot say that nothing was paid.

The Sales on this device log can be filtered (All, Paid, Waiting, Needs a look, Expired), searched, sorted and downloaded as CSV. A WQI CSV adds the asset, token contract, exact units and matching adjustment; its USD value is unknown. The POS export deliberately includes the local sale note/reference when present, so treat the downloaded file as private business data. Text a spreadsheet could read as a formula is escaped. The screen is kept awake while a sale is open, where the browser allows it.

Limits to know:

The Biome tools carry the site's optional first-party counter. It sends a page-view message only once visit counting is switched on: the page name, referring host and campaign tag, never an address, query string or fragment. The current release leaves counting off. The static host can still process normal request metadata; that is separate from payment and price reads. The private announcement-review page does not load this counter.

  • One tab per device. A second tab would overwrite the first, so the page freezes Charge when it sees another tab change the data.
  • Sales live on that device only (up to 5,000). Download the CSV for your books. Reset this device clears the address and every sale.
  • The dollar figure is a shop quote for QUAI only. The chain records QUAI; WQI is exact token units with no WQI/USD peg.
  • QUAI price requests send the dollar amount to Hartii's quote Function; chain reads go to the public Quai node and Quaiscan. WQI requests use exact units, read the public node and make no price-service call. These services see the requests and normal network metadata. The page-view beacon is switched off in the current source, so it sends no analytics message. See HartiiBiome analytics.

Dashboard

https://hartiibiome.com/hpay/dashboard ships in Games/Biome 1.27.0. It is separate from the existing incoming-only /hpay/statement.

  • Connect a wallet for its address, or use Open any address (view only). Reading signs and spends nothing.
  • Choose a date range and Asset, then filter direction/type, search and sort the listed rows. QUAI and WQI amounts, totals and chart series stay separate; no combined total or WQI historical USD is calculated.
  • Totals and charts include only node-confirmed canonical rows with at least 12 confirmations. Pending, disputed, unsupported or unknown rows can remain visible but are not counted as confirmed totals. WQI event discovery is bounded; a partial scan or provider gap must be shown as partial, not as a complete history.
  • Its CSV is an explicit user download of the filtered rows, including unconfirmed/disputed statuses where listed. It includes a known_on_device yes/no marker, not local memo/note text or hidden identity/profile fields. Spreadsheet-formula-like strings are escaped.
  • The two-sided Statement PDF groups received, sent, net and self-transfers by asset. Self-transfers do not change net. It reports scan coverage/exclusions and lists at most 1,000 eligible rows; totals cover eligible rows actually read, not unseen chain history. WQI is exact token units with no dollar value. PDFs are local, unsigned chain records, not invoices, tax documents or proof of identity.
  • The PDF uses the selected date range, independently of the list's direction/type/search/status filters; the CSV follows those list filters.
  • The address and date range in the page URL go to the static host; queried addresses also go to the public node (and public indexer for QUAI discovery). Those services see normal request metadata. WQI mode makes no price-service call.

Use Read again to refresh and Check all with the node where verification is still outstanding. Totals cover eligible rows that were actually read, not unseen history. The Known on this device indication is a local record match, not an invoice or proof of identity. Walkthrough: read the Dashboard.

Receipt

https://hartiibiome.com/hpay/receipt?tx=<hash>&req=<request>

A receipt is rebuilt from chain data every time it is opened, and can be printed; this page does not create a server-side payment record. The existing QUAI Download receipt (PDF) saves chain facts as a PDF made in your browser (since 1.26.0; see PDF receipts and your account type). WQI row/receipt PDF additions are shipped in 1.27.0. The PDF is chain-only: it never holds the payee's business name or account type. The page may show those separately as Current profile (Business, Personal or Not selected), read from hartiigames.com when you open a confirmed receipt. It keeps two kinds of fact apart:

  • From the chain: the sender, the recipient, the amount, the block and the confirmations.
  • From the link: the price, the reference and the note. The person who made the link says them. They are labelled not checked, and are never shown in green.

The page compares the payment with the link. A payment that does not match the link is shown in red as This payment does not match the link, and a transaction that is not a payment says so. A transaction that is not in a block shows its checks as "Not checked yet", not "Matches".

req is the request's own fields. conf (1 to 12) is how many confirmations a shop waited for before it showed Paid, so the receipt counts to the same number. It is left out when it is 12. A count taken from a link is labelled "set by the link".

On https://hartiibiome.com/hpay, Create a link can price a request in US dollars.

  1. Choose US dollars next to the amount. A preview shows the QUAI for that price.
  2. Optionally add an Order reference (letters, digits and . _ : -, up to 64 characters) and a memo.
  3. A fresh quote is taken when the link is created. It locks the QUAI amount for 15 minutes into a tagged link and a QR code. The expiry is 15 minutes (price lock).
  4. The result card counts the lock down and turns to Paid by itself when the payment is confirmed.

Payer chooses is not available with a dollar price. A tag is never reused inside the page. If the price sources disagree, the page gives no price.

The request page /pay. For a tagged request, it shows a countdown against a corrected clock (the quote service's time, or the newest block's time, when the device clock is off). Payment is refused in the last 45 seconds and after the expiry. The exact amount is shown in full, because the last digits are the tag: "If you pay from another app, send exactly this amount." Pay is disabled once a payment for the request was already seen. The page says In a block with a count such as "3 of 12 confirmations" and flips to Paid, with the transaction link, when the payment is confirmed. The dollar figure is shown as "the person who made this link says it is worth $X. Nothing here checks that." A link with no dollar label has no creation time, so a payment the matcher accepts may be older than the link, and the page says so.

Pay page

https://hartiibiome.com/pay/@name and https://hartiibiome.com/pay/0x... are public pages to pay a person. Direct WQI support ships in 1.27.0.

  • The name is read from the chain (the HartiiProfiles contract). The person is shown with an address ring drawn from their address; it lights when the name has been confirmed on the chain. A raw 0x address works too.
  • Amounts are $1, $5, $10, $25 or Other (dollars, exact QUAI or exact WQI). A dollar amount uses a 15 minute quote from at least two agreeing sources. If they disagree, the page refuses to quote. WQI has no dollar quote or peg.
  • The page says: "Your wallet sends QUAI straight to this person's wallet. Hartii never holds the money and takes no fee. You pay only the network fee."
  • The payer connects Pelagus (or opens the page in Blip) and sees the steps: check the payment, estimate the network fee, confirm in the wallet, wait for the network, confirmed. For WQI, the wallet reviews a direct token transfer and QUAI gas is separate. A wallet request never carries a chain id.
  • It shows a count such as "3 of 12 confirmations" and says confirmed only at 12.
  • To share: a QR code, a link with the chosen amount and note, and a 1200 by 630 share card as a PNG. Link previews name the person. The activity list stays in your browser.

Split a bill

https://hartiibiome.com/hpay/split

  1. Say who gets paid. In Bill currency, choose Dollars → QUAI or Exact WQI. Enter the total in dollars (up to $1,000,000.00) or exact WQI (up to 18 decimals), and the people (up to 30), each with an optional fixed share. Empty shares split the rest evenly in whole cents for dollars or integer token units for WQI. If you paid the bill and are one of the people sharing it, tick that box: your share is counted and never requested, and you take the extra cents first.
  2. Press Get prices and create the requests for dollars or Create exact WQI requests for WQI. Each person gets one exact, tagged request, a reference and an expiry. QUAI requests hold a 15 minute dollar quote. WQI requests bind the pinned token with v2, without a quote, and disclose the actual requested total and tiny per-request matching adjustment before creating links. Each adjustment is at most 0.000000000000999999 WQI, not a service fee; the recipient must accept WQI and every payer needs separate QUAI for gas.
  3. Who has paid reads the chain every 12 seconds while the page is open. Each person is Waiting, Confirming, Paid, Needs a look, Price expired or Could not check. Wrong, late and doubled payments are listed and never counted.
  4. New prices for everyone who has not paid asks for new QUAI quotes in one step; WQI uses New requests for everyone who has not paid without a dollar quote. The old request is kept, because a payment made inside its window is still valid. A request's window starts 60 seconds before its quote was made. A person can have at most 6 prices.
  5. Show QR code draws a scannable code for that person's request.

Until the first read, the totals show a dash and "Waiting for a block", never a zero. A person whose chain read failed shows "Could not check", not "Waiting". The page's confirmations setting accepts 1 to 60 and defaults to 12. Unlike the point of sale, it is not capped at 12.

The whole split lives in the link, after the #. A bookmark brings it back. Nothing about a split is stored on a server, and anyone who has the link can see the names and amounts. A split opened from a link says so and shows the payee address, and calls the dollar figures "what its maker wrote, not checked". WQI links carry the token identity and raw shares instead. Names, notes and bill references are still the maker's claims, not proof that a utility or other biller was paid. Source gaps remain unknown, never zero paid.

Statement

https://hartiibiome.com/hpay/statement?address=0x...&from=2026-10-01&to=2026-10-31

A statement is an incoming-only view. The current 1.26.1 page lists QUAI payments to an address that Quaiscan and the Quai node list, in a period of up to 400 UTC days, not before 2025-01-01. It lists:

  • direct transfers,
  • QuaiRelay sends,
  • transfers with data (value sent along with a contract call).

It does not list QUAI that other contracts send to the address, such as payouts and swaps. Quaiscan lists no internal transfers on Quai, so the page cannot see them. The page says this in a note, in its description, in the Sources panel ("Not listed") and on the CSV button. Failed transactions, zero-value calls and cross-zone transfers moved no QUAI here, so they are counted aside, not listed.

  • Plain transfers come from Quaiscan. QuaiRelay sends come from Quaiscan's list of the relay's events plus the node's own events for the newest 9,000 blocks (about 12 hours), so a payment the indexer has not listed yet is not missed.
  • Each payment can be checked against the Quai node: the transaction, its receipt and its block. A statement with 60 payments or fewer checks them by itself. A longer one waits for the button. Where the node disagrees, the node wins and the row says so. A payment the node disagrees with is shown, flagged and left out of the totals; it stays in the CSV.
  • A source that fails is named at the top and never read as "no payments".
  • Dollar values use the history endpoint: one source, MEXC QUAIUSDT hourly, labelled. An hour with no price shows a dash on the page and an empty cell in the CSV, and a dollar total is shown only when every counted payment has a price.
  • The CSV is oldest first, with the columns date_utc, time_utc, tx_hash, method, from, to, amount_quai, amount_wei, usd_rate, usd_value, rate_source, rate_hour_utc, block, confirmations and checked_by_node. method is direct, relay or direct+data. Text a spreadsheet could read as a formula starts with an apostrophe.
  • Planned WQI rows add the asset, pinned token contract, exact token amount and raw units; the WQI dollar fields remain empty because HPAY has no qualified historical WQI price. A bounded scan gap is reported, not treated as an empty result.
  • The page's confirmations setting accepts 1 to 60 and defaults to 12.
  • Statement PDF (since 1.26.0) saves the confirmed payments of the period, oldest first, with a total, as a PDF made in your browser; each confirmed row also has its own PDF. A payment the node has not confirmed is not listed or added up, and the file says how many were left out. It lists at most 1,000 payments. It is chain-only (no business name or account type).
  • WQI support ships in 1.27.0: it lists direct transfers received from the pinned token, checked by the node, with bounded coverage and no historical dollar price. The Dashboard is a separate two-sided QUAI/WQI selected-range view; it does not change this incoming-only page. The address in this page URL goes to the static hosting site, Quai node and Quaiscan; those services can associate it with ordinary network metadata. The QUAI history-price service sees the time range, not the address. WQI has no history-price request.

Inbox

https://hartiibiome.com/hpay/inbox and https://hartiibiome.com/hpay/inbox?address=0x... (Games/Biome 1.24.0, Beta). For a walkthrough, see the guide HPAY: read your inbox.

An inbox is the Statement turned both ways. It lists the QUAI payments an address sent and received, newest first, read from public chain data in the visitor's own browser. WQI support ships in 1.27.0. The address is the account: there is nothing to sign up for and no HPAY payment record stored on Hartii's servers.

  • Whose inbox. The connected wallet's (a silent read of the account; the Connect wallet button asks only when you press it, and shares the address only: no signature, chain id or transaction). The page then queries public-chain sources. Or any address, view only, with ?address= or the Open any address box. A ?tab= of received, sent or look picks the tab. Anyone can open any address, because it is public chain data. A Qi address, an address outside Cyprus-1 or an @name is refused.
  • What it lists. Direct QUAI transfers, QuaiRelay sends, and transfers that carry data to a wallet, in both directions, in 30 day windows (the last 30 days first, Load older for the next). Tabs: All, Received, Sent, Needs a look. A payment to the address itself is under All.
  • Checked against the node. Each payment can be read again from the Quai node (transaction, receipt, block). A list of 60 payments or fewer checks itself; a longer one waits for Check all with the node. Where the node disagrees with Quaiscan, the node wins, the row is flagged under Needs a look and is left out of the totals. A row says Checked only after 12 confirmations (the same placeholder as the other tools).
  • New since your last visit. The page counts the payments received since you last marked the inbox read (Mark all read).
  • Where each part comes from. Received and sent plain transfers come from Quaiscan's lists. QuaiRelay sends come from Quaiscan's list of the relay's events plus the node's own events for the newest 9,000 blocks (about 12 hours).
  • Dollar values come from the history endpoint, one source, labelled, asked in pieces of at most 20 days. A payment is valued at the price of its own hour. An hour with no price shows a dash.
  • CSV. Export CSV downloads the windows on screen in the order shown, named like hpay-inbox-<address-prefix>-2026-09-11-to-2026-10-10.csv. WQI rows add asset, token contract and exact units; WQI USD value is unknown. The Dashboard CSV uses a local-known boolean and excludes local note text. Columns: date_utc, time_utc, direction, tx_hash, method, counterparty, from, to, amount_quai, amount_wei, usd_rate, usd_value, rate_source, rate_hour_utc, block, confirmations, checked_by_node. direction is received, sent or self. A payment the node disagrees with stays in the CSV with checked_by_node set to no. Unknown is an empty cell. The Statement's CSV is unchanged.

How to open it. The first entry in the HPAY tools list on /hpay; Your HPAY inbox in the Biome wallet panel once a wallet is connected; See it in your inbox after a payment on /pay and /pay/<name> (a link only: nothing about the payment is passed along, and inside a shop's pop-up it opens in a new tab); or the address bar.

What it cannot do.

  • It cannot tell an HPAY payment from any other QUAI transfer. On the chain a QUAI payment looks the same whether it came from a pay link, a point of sale, a split, a button, Pelagus or Blip. Only QuaiRelay sends have an HPAY shape. So this is a list of QUAI payments, never "all your HPAY receipts".
  • Request references, memos and dollar prices stay in the links. They never reach the chain. Where the same browser holds a record (a paid point-of-sale sale, an entry in your HPAY activity), the row says Known on this device. Another browser or device does not show that.
  • The newest plain transfers may lag. Plain transfers come from Quaiscan's index, which can run behind the node. The page says so when it is behind. QuaiRelay payments of the last 12 hours are read from the node itself.
  • Counted aside, not listed: failed transactions, transactions with no value, cross-zone transfers, and other contract calls that carry QUAI. QUAI that other contracts send to the address (payouts, swaps) is not listed: Quaiscan lists no internal transfers on Quai.
  • No alerts, no refunds, no disputes. The page sends no email, text or push message; it shows what the chain holds when you open it. A refund is a new payment sent by the other person, never a reversal.
  • A source that fails is named at the top and never read as "no payments".

Privacy. The page says it in these words:

This device keeps one thing: for each address you open (at most 20), the time of the newest payment you marked as seen, under the browser key hartii:hpay:inbox:v1. It keeps no payments and no notes, and Forget what this device has seen clears it. A browser that refuses to store anything still works for the visit. The inbox reads, and never writes, the point-of-sale and activity records.

Quai Network mainnet · chain 9 · Cyprus-1. Figures marked "read on" a date were read from the chain that day; re-read before relying on them.