Hartii Biome docs

Guides

HPAY: PDF receipts and statements

This guide explains the HPAY PDF receipt and statement files in Games/Biome 1.27.0: what the public chain confirms, what a payment link only claims, and what each file cannot prove.

Who it's for: a shop or person who wants a local record of a payment, and anyone comparing a payment link with the transaction the Quai node reports. A PDF is not a biller's receipt or a tax document.

Download a receipt

  1. Open hartiibiome.com/hpay/receipt, or open a payment from the Inbox or the incoming Statement.
  2. Wait until the Quai node confirms the transaction with the confirmations required by that page. Pending, confirming, failed, unknown, unsupported or mismatched payments do not have an eligible receipt download.
  3. Press Download receipt (PDF) on the receipt page or PDF on an eligible row. The file is assembled in your browser and downloaded to your device; it is not uploaded by the PDF generator.

The existing /hpay/statement is an incoming-only Statement. Its WQI support and Statement PDF remain incoming-only. The separate Dashboard Statement PDF uses the selected date range and includes sent and received rows; it does not change the incoming-only Statement or follow the Dashboard list's direction/type/search/status filters.

What a PDF contains

The chain portion records a confirmed transaction hash, block number and time, payer, recipient, exact amount, network, transfer kind and confirmation count. A WQI receipt identifies the pinned WQI token contract and exact WQI units; it has no WQI dollar value, QUAI conversion or peg claim. QUAI dollar estimates, when present, are labelled approximate and tied to their hourly source.

If a receipt was opened with a matching payment link, its reference or note may appear in a separate section marked From the payment link (not checked on the chain). A mismatched link's claims are left out. Link text is not chain evidence and does not prove that a utility or other biller received payment.

The two-sided Dashboard Statement PDF groups received, sent, net and self-transfer totals by asset. It does not combine QUAI and WQI or assign WQI a dollar value. It reports scan coverage and exclusions; an incomplete scan is not a complete account history. It can list at most 1,000 eligible payments, oldest first. When more qualify, totals still cover all eligible rows read, while the file says that only the first 1,000 are listed. Choose a shorter date range for a shorter file. If discovery was partial, totals cover only eligible rows actually read, not unobserved payments.

Each file is generated in the browser without a signature or transaction. It omits mutable business/profile names, handles, local device labels and notes. Its footer says: Record of an on-chain Quai transaction. Not an invoice, tax document or proof of identity.

Current profile on the receipt page

The receipt page may separately show a wallet owner's self-selected Current profile. That profile can change and is not included in a PDF. It is a label, not proof of identity or business status.

Say whether you are a business or a personal account

  1. Open hartiibiome.com/profile and press Connect wallet.
  2. A card asks Is this a business or personal account? Neither answer is pre-selected. Choose one. A business may add a public name of 2 to 48 characters.
  3. Press Save with one signature and approve the message in your wallet. The message names the site, the chain, your wallet, your choice, the name and the version of the data it was made against.
  4. The profile page shows your choice as a badge. Decide later hides the card for this visit; nothing in HPAY waits for it.

A wallet that has not chosen reads Not selected. Nobody is made a personal account for them.

You can change your choice once every 7 days. If it was changed somewhere else since you opened the page, the page tells you and shows the current choice instead of overwriting it.

What people see

  • On the HPAY receipt page of a confirmed payment, under the headline: Current profile: Business, Current profile: Personal or Current profile: Not selected.
  • On your profile page, as a badge.
  • Never in a PDF.

The business name is set by the wallet owner and not verified by Hartii. Anyone can type any name, so treat it as a label, not proof of who is behind a wallet. Names that pass for Hartii, Quai or their products, or for roles like "support" or "official", are refused. The Hartii admin wallet has no public name at all.

It costs nothing

The signature only proves the wallet is yours. It cannot move your QUAI or your tokens, works once, for one action, for five minutes, and no transaction is made.

If something goes wrong

What you seeWhat to do
No PDF buttonThe payment is not confirmed yet (it needs the confirmations the page asks for, 12 by default) or is not a payment. Open the receipt again later.
You declined the signatureNothing was saved. Press Save with one signature again.
"You can change your account type again on ..."The 7-day wait has not passed. Nothing changed.
"Your account type changed since you opened this page"Another tab or device changed it. The page now shows the current choice. Choose again if you still want to change it.
"That name is reserved"Pick a different business name.
"Account type storage is unavailable"Try again later. Nothing changed, and HPAY keeps working.

For developers

The service lives on hartiigames.com under /api/account-type. Reading is public. Writing needs a wallet signature.

Method and pathAuthReturns
GET /api/account-type/nonce?wallet=<address>none{ nonce, expiresAt }, valid for 5 minutes, single use
POST /api/account-type/setwallet signature{ ok, wallet, type, businessName, revision, setAt, changeableAt }
GET /api/account-type/<wallet>none{ wallet, type, businessName, revision, setAt, changeableAt }, or { wallet, type: null, revision: 0 } when nothing was chosen

type is "business" or "user". Wallets must be Cyprus-1 Quai-ledger addresses. revision is 0 when there is no choice, 1 for the first choice and goes up by one at each change. To set a choice: ask for a nonce, sign the message below with personal_sign (EIP-191, hex-encoded UTF-8), then POST JSON { "wallet", "type", "businessName"?, "revision", "nonce", "signature" }. revision is the value the GET returned (0 if none) and is part of the signed text. The server rebuilds the message itself, spends the nonce and writes the choice in one database transaction, and refuses a signature made against an older revision with 409 revision_conflict.

text
Hartii account type
Version: 2
Site: hartiigames.com
Chain: Quai Cyprus-1 (chain 9)
Action: set
Wallet: <wallet, lowercase>
Type: <business | user>
Business name: <the cleaned name, or none>
Expected revision: <revision, 0 if none>
Nonce: <nonce>
Expires: <expiresAt, as returned>

Signing proves you own this wallet. It does not send a transaction or cost gas.

Lines end with LF and there is no trailing newline. Errors are { "error", "code" }: 400 (bad_wallet, bad_type, bad_revision, bad_business_name, name_reserved, name_not_public), 401 (bad_nonce, bad_signature), 403 (origin_not_allowed), 409 (revision_conflict), 429 (rate_limited, cooldown with retryAt) and 503 (storage_unavailable: a failed read is never reported as "no choice"). Browser calls are allowed from hartiigames.com, hartiibiome.com and hartiilabs.com.

If your own code asks the wallet to sign, ask once. Fall back to another signing method only when the wallet answered that the method is not supported; a decline, a locked wallet or any other failure ends the attempt.

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.