Plain-English answers about zero-knowledge proofs, privacy, refunds, and what happens if things go wrong. If you're a developer integrating the SDK, the Docs have a separate technical FAQ.
zkLicensing is a general-purpose licensing primitive on the Mina blockchain. A vendor lists what they want to license at a price they set. A buyer pays with one on-chain transaction and receives a proof.json file — a zero-knowledge proof that a valid license exists on chain, with a given expiry. Whatever the license unlocks verifies the proof in milliseconds against a snapshot of the on-chain state, without learning who bought it.
Device binding, when enabled, ties a license to a specific set of devices — but confirming that this device is one of them typically needs network access.
You'll see the word "app" throughout the site — it's the most common case, but the same primitive works for anything you'd sell access to:
The buyer's guarantees are the same across all of them: 14-day on-chain refund escrow, no email or account required, and non-custodial refunds and renewals that only the buyer can trigger. Developer integration guide: Docs.
Devnet MINA (tMINA) is free and takes about a minute to obtain:
Mainnet MINA is a separate asset and is only needed for real mainnet purchases and mainnet app deployments. You buy it from a reputable exchange — Kraken, Binance, and Coinbase all list MINA.
Yes. Registering an app requires a registered business — the marketplace collects the vendor's legal name, billing address, invoice email, and company registration details (and VAT ID where applicable) at registration time. This is a compliance requirement for a marketplace that processes on-chain payments and produces vendor-facing tax receipts under EU consumer- and distance-selling rules. Any registered business qualifies, from a one-person self-employed setup to an incorporated company; a personal wallet address on its own does not.
Buying a license as an end user does not require a company — only vendors listing apps do.
A ZK proof — short for zero-knowledge proof — is a small piece of cryptographic data that proves a statement is true without revealing the underlying secret that makes it true. The classic analogy: imagine proving you know the password to a vault without ever saying the password.
For zkLicensing, the statement is: "a valid license purchase exists on Mina for this app, with this expiry." The proof file you give to the app reveals only the license's validity and expiry — not your passphrase, not your wallet address. The app verifies it in milliseconds against its public verification key, offline, and unlocks.
What is still public. Every on-chain transaction on Mina — including your license purchase, renewal, and refund — is visible to anyone who looks at the blockchain. The transaction shows your wallet address, the price you paid, and the license hash. The proof file itself doesn't expose any of that, but the underlying chain record does. If your wallet address is otherwise tied to your identity, that link is recoverable. Use a fresh wallet for stronger pseudonymity.
Because we don't need it. A license is a cryptographic object, not an account. The proof file itself is the license — there's nothing to "send to your inbox." No password reset flow, no marketing list, no off-chain user database to breach. What you should protect: your proof.json file and your license passphrase — the passphrase is what proves ownership when the app unlocks. Refunds and renewals are authorised by the license's wallet, so neither needs the passphrase.
As long as you still have the Mina wallet you used to buy the license and the passphrase you chose at purchase time, you can regenerate the proof. Open the My Licenses page, connect your wallet, find the license, and click "Re-download proof". The service will rebuild the proof from the on-chain record.
If you lose both the proof file and the passphrase, the license is unrecoverable. There is no recovery email or support flow that can bypass this — the passphrase is required by the zkApp circuit itself. Treat the passphrase like a wallet seed phrase.
Yes — by default, the proof file is portable and works on any machine that has the app installed. Copy proof.json to your laptop, desktop, or another device you own and the app will accept it. This is intentional: the proof is a bearer credential and the public output doesn't reveal the buyer's wallet.
Vendors can optionally set a device cap at registration (up to 5 slots). When a cap is set, each new device binds itself to a free slot on-chain — the app's SDK signs a bind transaction with the passphrase-derived ownership key, your wallet pays the fee, and the slot is filled. Adding a device past the cap requires unbinding an old one first; unbinding stamps a per-slot cooldown so a cap can't be trivially rotated to seat an unbounded number of devices. Both bind and unbind require the passphrase-derived ownership signature, so the platform can't add or remove devices on your behalf and unbinding a lost or sold device works from any of your other devices — a remote log-off with no server-side account. Slots are cumulative-with-cooldown, not real-time concurrent: an app that syncs the on-chain root often behaves near-concurrent; an app that hasn't synced still sees the last-known slot set.
Yes — the pattern is buy on the web, unlock in the app. The browser purchase flow works from both desktop and mobile (Auro on mobile connects through WalletConnect). Once paid, you transfer your proof.json file into the mobile app, and the app verifies it against the hosted verify endpoint. After the 14-day refund window closes, the app can cache the verification result and run fully offline from there.
Within 14 days of purchase, yes — a full refund, no questions asked. Your MINA sits in the zkApp's escrow during this window, not in the vendor's wallet. Visit the Refund page, connect the same Auro wallet you used to buy, pick the license, and sign — no passphrase needed. The contract returns the funds to your address. After 14 days, the funds are released to the vendor and the license becomes non-refundable. Renewals are also non-refundable — they bypass escrow entirely. This is enforced by the smart contract, not by a policy we could choose to bend.
Open the Renew page, connect your wallet, paste in your existing proof.json, and pay the vendor's renewal price. The service generates a new proof with an extended expiry; you download it and replace your old proof.json. Apps will accept the new file automatically — the expiry is embedded in the proof itself.
If you renew within 7 days of expiry, the new term extends from the original expiry date. After that, it extends from today.
A one-time purchase that never needs renewal. Vendors can offer Perpetual alongside the Monthly / Yearly / 5-Year tiers; under the hood it's a very long fixed term (1000 years) — long enough that it will never expire in practice while the vendor is around.
Vendor sunset. If a vendor stops selling their app, they can announce a sunset: at least 30 days' notice, published on their listing. During that window the license keeps working normally; after the sunset date the vendor is no longer obliged to keep serving the app. This is a policy commitment the vendor makes on the marketplace, not a smart-contract action — the on-chain license itself doesn't change.
Refunds. The same 14-day refund window applies as with any other tier — no refund at sunset (the same as when a monthly or yearly license expires normally).
The long-term catch. Every few years the Mina blockchain upgrades itself. When that happens, the vendor has to move the app to the new version — a one-time job that carries every existing license across for free. If the vendor doesn't, the app you've already installed keeps working, but installing on a new device (or moving your license to a new machine) may stop working from that point on. Perpetual is a one-time purchase with the understanding that the vendor stays engaged with those long-term upgrades.
Your license keeps working until its expiry, regardless of what the vendor does. The proof is verified locally against a public verification key embedded in the app — the vendor's servers aren't in the loop. Even if the vendor's company shuts down tomorrow, every already-purchased license continues to validate for its full term.
What you lose if the vendor disappears: the ability to renew at the end of the term and any support channel they provided. The app itself keeps running for paid users.
The long-term catch, especially for Perpetual licenses: keeping the app current across blockchain upgrades is a vendor job, not something the platform can guarantee — see the note in the Perpetual answer above.
It depends on which verification path your app uses and when the outage hits:
New purchases, renewals, and refunds always pause during Mina downtime, since they all write on-chain.
Because payment, refund authorization, and renewal all happen as on-chain transactions signed by your wallet — there's no payment processor in the middle. The Mina blockchain is the system of record. We recommend Auro Wallet as a browser extension (Chrome / Firefox). Getting a Mina wallet and a small amount of MINA is a one-time setup.
You don't have to trust us — you can verify. An independent security audit of the zkApp circuit is planned (work-in-progress), and the SDK source is available for review today. On mainnet, buy / renew / refund all happen on the vendor's own branded page rather than here, so the visual polish of the site you're on doesn't tell you much. What does: before signing a purchase, copy the destination address from your wallet popup, open a public Mina explorer (minascan.io), and check its verification-key hash against the value on our Trust anchor page. A match proves the on-chain contract holding your funds is the genuine zkLicensing circuit and not a lookalike — no matter what the vendor's page claims. The proof file you receive can also be inspected, verified by any independent tool that runs the Mina verifier, and re-checked against the on-chain Merkle root any time.
The pieces you'd need to trust to "fake" a license are: (a) the Mina blockchain itself (open, audited, ~100+ validators), and (b) the math of the underlying zero-knowledge proof system. Neither is something zkLicensing.com controls or could compromise unilaterally.