Kaspa Escrow
Applies to the kaspaforge.org escrow pages (starting at /escrow-index.html) and its installable PWA (Kaspa Escrow / Kaspa Гарант). This is the escrow service; the vault at kaspaforge.org has its own policy. Effective: July 6, 2026. Operator: OfficeForge (contact: kaspa@officeforge.co).
Kaspa Escrow is non-custodial and account-less. Your deal keys (deal, funding and chat keys) are generated and used only in your browser and are never transmitted to us. The deal chat is end-to-end encrypted — the server relays ciphertext it cannot read. The one deliberate exception is a dispute: to let the arbiter judge, you may reveal your chat key (never your escrow key), and only then can the revealed conversation be decrypted for the arbiter. No sign-up, no advertising, no third-party analytics SDKs.
The private keys for your side of the deal — the escrow key that signs release/refund/dispute, the funding key (buyer), and the chat key — plus your service token. They live in this browser's local storage (in your encrypted master key file) and can be removed with "Forget this deal". Back up the master key file from your Desk (Export key file); it is the only copy of these keys, and we never receive it.
All on-chain transactions and covenant balances are public data on the Kaspa blockchain by design.
For OTC deals, any crypto counter-leg fixes the chosen method, the currency label (for an "other crypto" pick like XMR), the expected amount and the buyer's receiving address as server-side deal fields — visible to the server and both sides outside any dispute — whether it's a supported network (Tron, Ethereum/BSC/Polygon/Arbitrum/Base, Bitcoin, Litecoin — see the network picker in the deal wizard) or an "other crypto" pick like Monero. Only supported networks get live verification: the server checks the seller's declared txid automatically instead of waiting for a dispute, using the same information anyone could already read on that public blockchain if they knew the txid. For "other crypto," there's no server-side txid check — the paid-txid claim stays in the end-to-end chat only. Fiat legs (bank transfer, card, cash) are the sole fully end-to-end category: no server fields at all, only the encrypted deal chat (the "payment details" / "paid" messages).
The server keeps a snapshot of the last check (amount, recipient, confirmations, time) so both sides see the same status badge. When the deal closes, the buyer's address, the declared txid and that snapshot are erased — only the chosen method and the final verification outcome remain (anonymized). Verification is a signal, not an action — it never moves funds by itself. Release is always the buyer's own signature made in the browser; nothing on this page or in this check can release, refund or otherwise spend the escrowed coins.
Each side of a deal gets one random token (192-bit, generated in your browser at create/join) that the panel sends with every request instead of a login. The server checks only that it matches a side's slot — it is a capability, not proof of who you are. It lives inside your encrypted master key file, next to your keys (back it up from the Desk).
With the token alone, its holder can:
The token alone cannot:
/dispute/reveal, additionally verifies that the key it's given actually derives that side's on-record chat public key — a token can't substitute for the key.We don't have token re-issuance yet — if you believe your master key file leaked, the token inside it leaked with it, and there is currently no way to invalidate just the token. See Recover a deal for what that actually means in practice: since spend paths are capped to the buyer/seller/fee triangle above, a leaked token (or even a leaked deal key) can't be used to steal your coins outright — the real exposure is someone reading your ciphertext-only chat access or acting a little early on your side.
Until a dispute, the server holds only ciphertext and no one can read your chat. In a dispute, resolution needs evidence, so a party may deliberately reveal their chat key (sent to /dispute/reveal) — this is the only time a key leaves your device, and a chat key can never move funds. On reveal, the server decrypts that side's thread and stores the plaintext transcript for the arbiter only, alongside media the arbiter can decrypt with the keys carried inside the revealed messages. The AI mediator reads this to propose a non-binding outcome; a human arbiter reads it only if the case escalates. The revealed transcript is erased when the deal closes, and encrypted media blobs are deleted 24 hours after the deal closes. The on-chain ciphertext remains (it is the tamper-evident record), but without a revealed key it is unreadable.
Your escrow, funding or chat private keys, seed phrases or recovery sheets (we never ask for them); names, documents or KYC (there are no accounts); contacts, location or files beyond the media you attach to a deal; advertising identifiers.
Website fonts load from Google Fonts (your IP is visible to Google on load). The support chat widget uses Cloudflare Turnstile (Cloudflare processes the challenge). Telegram delivers deal notifications if you opt in. The AI mediator runs on a third-party LLM provider, which receives only the deal terms, the revealed transcript and the claims — never any private key. The Kaspa network is public infrastructure. We do not sell or share data with anyone else.
A deal's records exist so the deal can run and be watched. The revealed chat transcript is wiped at close; media blobs are deleted 24 hours after close — save anything you need, including a purchase you received, before then. To delete a deal's remaining records (including any Telegram link), write to kaspa@officeforge.co naming the deal. On-chain data cannot be deleted by anyone — that is the nature of a blockchain.
Updates to this policy are published on this page with a new effective date.