Cassette

Cassette Developer Distribution Agreement

Last updated: TODO: publish date

This agreement is between you (the "developer") and Delegas Labs, S.L. ("we", "us"), NIF B27530849, Paseo de la Castellana 257, 28046 Madrid, Spain, which runs Cassette. It applies when you create a developer profile, list a game on Cassette, create a storefront through our factory for games you list on Cassette, or claim a community listing, whether you do it yourself or through an agent acting for you. You also accept our Terms of Service and Content policy. If you act for a company, you confirm that you can bind it.

The short version

  • Cassette is a discovery platform. You host your game yourself and sell it directly to players, from your own storefront contract, on your own terms of sale. You are the seller.
  • Your storefront belongs to you. We have no role in it: we can't pause it, change it, take money from it or refund from it.
  • We list your game, show it in a frame on Cassette, and pass players' payment requests to their wallet in plain words. We don't approve, deliver or refund sales.
  • On sales that come through Cassette, your storefront pays us the referral fee you accepted. It is 0% as a launch offer. We expect to introduce a fee later, possibly 30% or more. We'll give 30 days' notice, it only applies once you accept it in your storefront, and you can stop listing on Cassette if you don't.
  • Your taxes are yours. If a tax authority ever makes us pay tax on your sales, you reimburse us (section 7).
  • Your game must be yours to sell, legal and safe. We can remove games that break the rules from Cassette, and we tell you why.

1. Your profile, storefront and keys

Profile. Your developer profile is a record on our Profiles contract on Polygon. It and the games you list are public. Creating one is free.

Your storefront. To sell, you create a storefront contract from our StorefrontFactory, signing with your own wallet, which becomes its owner. The factory and storefront code is public and admin-less: there is no owner, upgrade or pause key, and nobody but you holds a role in your storefront. A storefront can't be changed after it's created; a new version of the code means creating a new storefront. Your storefront keeps working whether or not your game is on Cassette, and whether or not Cassette exists.

Who controls what. Your owner wallet controls the payout address, operators, refund policy and per-wallet refund decisions, the referral terms, the seller record, refunds and ownership. Operators you authorise, such as your coding agent, can create and update listings and prices. Anything an operator does counts as done by you. Payments to the payout address you set are final; if you set a wrong address or lose its keys, nobody can recover the funds.

2. What you give us

You keep all rights in your game. You grant us a worldwide, non-exclusive, royalty-free licence, for as long as your game is listed on Cassette, to:

  • index your game: its pointer, build hash, storefront address, seller record and the addresses and hashes of your documents;
  • show your game inside Cassette, loaded in a frame from your own hosting, and pass it the platform features players use (identity, the wallet bridge);
  • use its name, cover, screenshots, short clips, description and your developer name to list and promote it on Cassette, in search engines, on social media and in our marketing about Cassette, and cache and resize those images and clips;
  • show and analyse public data about your storefront, such as listings, prices and sales, to build players' libraries, receipts, rankings and your statistics.

We don't host, cache, proxy or mirror your game's build. You can remove your game from Cassette at any time.

3. Hosting and listing your game

You host it. Host your game in an account you control, for example Cloudflare Pages, Netlify, Vercel, GitHub Pages or your own server. You are responsible for following your host's terms. To be shown inside Cassette, your host must allow framing by cassette.gg.

Your pointer. You list a game by publishing a signed record of it, with its address, build hash, storefront and documents, at /.well-known/cassette.json on your site, and registering it with us. Keep it accurate. If your game stops being reachable, or its build no longer matches its hash, we may mark it or hide it until you fix it.

4. Selling through your storefront

You are the seller. Each sale is a contract between you and the player. Your paywall (adapted from the reference file we publish, paywall.js) runs inside your game on your own site and asks the player's wallet to pay your storefront. Your storefront issues the licence or item in the same transaction. We aren't a party to the sale and never receive or hold the price. Cassette names you as the seller on your game pages, in the payment request and on every receipt ("Sold by [you] · Cassette is the platform"). Don't present your games as sold by Cassette or by us.

You set the terms. You decide what you sell, prices, supply, whether tokens can be transferred, your refund policy and your terms of sale. Each listing records the address and hash of the terms of sale it is sold under, and every sale records them. You can write your own documents or have your agent generate them from our templates and then adopt them. Either way they are your documents, and you are responsible for them and for their complying with the law. Your agent must show you the full text and record your approval before using them.

What Cassette's wallet does. Cassette Wallet shows payment requests for every storefront created by the factory, in the same way for every developer. We don't approve or refuse individual sales. The wallet refuses a storefront only for security (for example malicious code), sanctions or a legal order. Each refusal has a recorded reason, and we'll tell you unless the law prevents it. We don't score, limit, discount or delay purchases for commercial reasons.

Network fees. Cassette Wallet pays the Polygon network fee for its users' transactions with our contracts and with every storefront created by the factory, as a free feature of the wallet, within uniform daily limits per wallet. It covers buying, self-refunds, releasing escrowed funds, your listing updates and your own refunds alike. We may change or end this for everyone, never for one developer. Players can always pay the fee themselves.

Random rewards. If anything in your game that players pay for (with money, or with paid items or currency) gives a random result, show the exact odds in the game before the player spends anything. Paid random rewards must not be transferable tokens. No prize gambling: no game may pay out money or anything of monetary value based on chance, and no paid tournaments with cash or crypto prizes.

5. Your seller details

Before you sell, publish in your seller record and documents, and tell us:

  • whether you sell as a business or as a private individual. If you sell regularly, for profit or as part of a trade, business, craft or profession, you're probably a business under EU consumer law. You're responsible for getting this right;
  • if you sell as a business: your legal name, geographic address, email and, if you have one, VAT number;
  • in every case: a contact players can use for purchase questions, cancellations and refunds.

We show your status, and for a business your legal name, address and email, on your game pages and in payment requests, as EU consumer law requires of us. Keep these details accurate and up to date. If they are missing or clearly wrong, we may stop showing your paid games on Cassette until they are fixed.

6. The referral fee

What it is. When you create your storefront, you accept a referral partner (Cassette's company address) and a rate. Your storefront pays that rate to us only on sales that came through Cassette, where Cassette is named as the referrer. Sales made anywhere else pay us nothing. The fee is taken from the price when the sale's funds are released to you, so a sale refunded while still in escrow pays no fee. A fee already paid isn't returned by the contract if you refund a sale later.

Launch offer: 0%. During our launch period, the rate is 0%. This is an introductory offer, not a permanent price. We expect to introduce a fee later, and it may be substantial, for example 30% or more of each referred sale, in line with other game stores. Today, storefronts cap the rate at 30%; a higher rate would need a new version of the storefront code.

Changing it. We'll announce a new rate on Cassette, and to your profile's listed contact if you've given one, at least 30 days before it applies. It takes effect for your games only when you accept it by updating the referral terms in your storefront, and only for sales after that. If you don't accept it by the effective date, we may stop showing your games on Cassette and stop sending you players. Your storefront, your sales elsewhere and your buyers are unaffected.

VAT on the fee. We account for VAT on our fee, and when it is above 0% we'll invoice you for it. For an EU business with a VAT number, the reverse charge applies.

7. Taxes

Yours. As the seller, you are responsible for all taxes on your sales and income: VAT or sales tax on what you sell to players, income tax, and any tax registration you need. That applies from your first sale, including during the launch period. In the EU, VAT on digital content sold to consumers is generally due in the buyer's country, and sellers established outside the EU may have to register from their first sale (for example through the One-Stop Shop). Your paywall runs on your own site, so you can collect the buyer's country as evidence yourself. We don't calculate, collect or pay taxes on your sales, and we can't give you tax advice.

If we're held liable for tax on your sales. Tax authorities may treat a platform like Cassette as liable for VAT or other taxes on sales made through it, even though you are the seller. If an authority makes us pay tax on your sales, or the law requires us to account for it:

  • we'll tell you, with the decision or legal basis and how we worked out the amount for your sales;
  • you reimburse us that tax, plus any interest or late surcharges charged on it. You don't pay penalties caused by our own fault;
  • you pay it in USDC within 30 days of our request. On request, we'll agree reasonable instalments. We can't take it from your storefront;
  • we may add a handling charge of up to 5% of the amount recovered;
  • if you've already paid that tax yourself on the same sales, we'll work with you so it isn't paid twice, for example by supporting your refund claim.

If the law requires us to account for tax on future sales, we'll tell you at least 30 days ahead, unless the law requires it sooner, and propose referral terms that cover it. If you don't accept them, we may stop showing your paid games on Cassette.

Information. Where the law requires us to report information about sellers or sales, we'll use your seller details and may ask you for more.

8. Your duties to players

As the seller, you are responsible to players for what you sell: the game or item, its description, that it works as described, your terms of sale, refunds, the right to cancel and, if you sell as a business, the legal guarantee.

Refunds. Your storefront's refund policy sets the self-refund window (0 to 14 days; 6 hours in our template), can cap self-refunds per wallet across Cassette storefronts, and can use our abuse registry. Each sale keeps the window it was sold under. Listings with a supply cap (limited editions) never have a self-refund window. Inside the window, the buyer can refund themselves and the payment comes back from escrow. After it, anyone can release the funds to your payout address. You can refund any sale at any time from your owner wallet; after release, that refund is paid from your own wallet. Refunds are for the full price the player paid: any referral fee already paid to us on that sale isn't returned (section 6), so after release it is your cost. Every refund removes the sale's tokens from the player's wallet. Gifts (bought by one wallet for another) can't be self-refunded; only you can refund them, to the wallet that paid.

Right to cancel. If you sell as a business, your paywall asks players to request immediate delivery and to acknowledge that they then lose their 14-day right to cancel. Before the game starts, you must also give them a confirmation of the purchase on a durable medium, such as a file they save: your details, what they bought, the price, your terms of sale and their consent. A flag on the sale alone is your record, not their confirmation. Our standard paywall does all of this. Without the confirmation, the player keeps the right to cancel and owes nothing for what they played. If a player still has a right to cancel and uses it, refund them in full within 14 days.

Answer players. Reply to purchase questions, cancellations and refund requests within 14 days, including those we pass on to you.

What we do and don't do. We pass players' messages on and may follow up. We don't decide disputes between you and players, we don't refund your sales, and we hold no key that can. If you don't deal with requests you owe under the law or your terms, we may take your games off Cassette.

9. The self-refund abuse registry

You can choose to use our abuse registry in your storefront's refund policy. If you do:

  • wallets we restrict under our published criteria can't self-refund at your storefront while restricted. They can still buy from you, play, keep what they bought and ask you for a refund;
  • your own per-wallet decision always beats the registry, in either direction;
  • a person reviews every case before a restriction, each restriction ends within 90 days and is renewed only after a new review, and appeals are decided by someone not involved in the decision within 14 days;
  • we never use the registry to block buying or playing, or against a developer, and it can't touch your own refunds.

If we stop maintaining the registry, restrictions simply expire. You can stop using it at any time, for future sales.

The one power you give us by opting in. Unlike your storefront, the registry contract can be upgraded by Cassette's admin wallet. Your storefront honours only answers that end within 90 days, and only for self-refunds. But a faulty, misused or compromised version could keep restricting wallets, and so stop self-refunds at your storefront, including on sales already made while they were sold under the registry; switching it off only covers later sales. It can never affect buying, play, transfers, items being used, your own refunds or your funds, and you can always set AlwaysAllow for any buyer to let their self-refunds through. If that happens, we'll tell you and fix it; meanwhile, use AlwaysAllow or refund the buyers yourself. If you don't accept this, don't opt in.

10. Your promises

You confirm, for everything you list and sell:

  • you made it or have all the rights needed, including for third-party code, art, music, fonts and AI tools, and you comply with their licences;
  • it doesn't infringe anyone's rights or break the law where it's offered;
  • your game page, screenshots, device labels, item descriptions and seller details are accurate;
  • your game contains no malware, crypto mining, hidden tracking or anything that tricks players into approving payments or signatures;
  • you follow our Content policy, including its rules on mature content.

If a claim against us arises because one of these isn't true, or from your sales to players, you will cover our reasonable costs and losses, to the extent the law allows.

11. Player data

What you receive. When a signed-in player plays your game on Cassette, Cassette tells your game who they are: their @username and wallet address. Use it only to run your game: to recognise players, read what they own from your storefront, save their progress and run multiplayer.

Your sales. You are an independent data controller for your sales, your hosting and anything your game collects itself (accounts, cookies, analytics, ads, chat). Comply with data-protection law and publish a privacy notice on your site; our template is a starting point. We pass on purchase questions and requests players send us, with the details they give; use them only to deal with the request.

Play statistics. Don't put personal data (names, emails, free text typed by players) in custom statistics events your game sends us. We show you aggregated statistics only.

12. Keeping paid games available

Players pay you for lasting access. Keep each paid game playable for its buyers for as long as your terms of sale and the law require (our template says two years after each purchase). Keep your hosting running, and don't let updates take away the substance of what players paid for. We don't host builds, so if your host goes down, we can't keep the game available for your buyers. Consider an IPFS mirror.

13. Our API, reference code and platform

Reference code. The paywall reference file and the code examples in our agent instructions are licensed to you under the MIT licence. That licence governs the code. This section governs your use of our hosted services through it.

Ownership checks. The paywall reads ownership from your storefront through public blockchain nodes. Our API can speed that up, but it is never the decision. Session tokens from Cassette identify the player; they don't grant access. Checks running in the browser can be bypassed by determined users. For real protection, check the chain from your own server (our instructions show how). We don't guarantee that any check stops piracy.

Platform services. Stay within published rate limits, and don't use our services to harm players or us.

Agents. Our agent instructions and API let coding agents set up and run your seller side for you. You are responsible for what your agents do under your profile and storefront. Some steps need you personally: signing your storefront's creation and adopting your documents.

14. Community listings and claims

Listings. We list browser games we find on public sources (such as GitHub, Hacker News, js13kGames and Ludum Dare), using only basic facts: title, links, author handle, licence, a short description and a cover. See the Content policy for how listings work and how to remove one.

Claiming a listing. If a listed game is yours, sign in, request a claim, and prove you control the game's site or repository by adding the claim code we give you:

  • as <meta name="cassette-claim" content="CODE"> on the game's page;
  • in /.well-known/cassette.json on its site; or
  • in a cassette.json file at the root of its repository.

A claim proves control of the site or repository, not authorship. By claiming, you confirm you are the author or are authorised by them. If someone shows a better right to a listing, we may move or undo a claim.

Publishing a claimed game. You can then list it as your own release under your profile, and sell it through your own storefront, with its old listing page redirecting to it. From then on, this agreement applies to it.

15. Removal from Cassette and other restrictions

We may restrict your games, items or profile on Cassette when they break the law, this agreement or our Content policy: hiding a game from the store or search, removing it from Cassette, or suspending your profile's access to our services. These measures affect Cassette only. We can't change or stop your storefront, your sales elsewhere, your hosting or your buyers' tokens. A removal may be recorded in our public game registry with a short reason, which never includes personal data. For each restriction we send you a statement of reasons: what we did, why, the facts and rules involved, whether automated tools were used, and how to contest it.

For business developers, we give 30 days' notice before ending our services to you entirely, unless the law requires immediate action, the content is illegal or harmful, or the breaches are repeated or serious.

You can contest any decision by replying to it or writing to [email protected]. A person who wasn't involved in the original decision reviews it, and we reverse it if we got it wrong.

16. How we rank games

Where games appear on Cassette depends mainly on:

  • plays, players and how many come back;
  • how recent the release is;
  • whether the game supports the visitor's device;
  • what the player has played and owns;
  • our editorial picks, which we mark as such.

The referral rate you accept doesn't affect ranking. Nobody can pay for ranking today. If we ever offer paid placement, it will be labelled.

17. Ending this agreement

You can end this agreement by removing your games from Cassette and asking us to close your profile's access to our services. Your storefront stays yours, and section 8 still applies to sales you made. We may end it as described in section 15, or with 30 days' notice for any reason.

18. Liability between us

We provide Cassette as it is and as available. We don't guarantee sales, referrals, uninterrupted service or the behaviour of the Polygon network, the wallet provider or your host. The factory and storefront code is provided under its licence; we have it reviewed, but nobody can fix a deployed storefront.

Each party is fully liable for damage caused intentionally or through gross negligence. Otherwise, except for your duties under sections 7, 8, 10 and 12, neither party is liable for indirect losses or lost profits, and our total liability to you is limited to the fees you paid us in the 12 months before the claim, or €100 if greater. If you are an individual acting outside your trade or profession, these limits apply only as far as consumer law allows.

19. Changes, law and contact

Changes. We may update this agreement. We'll announce changes on Cassette at least 15 days before they apply (30 days for the referral fee, section 6), unless the law requires otherwise. If you don't accept them, you may end this agreement before they apply.

Law. Spanish law governs this agreement, and the courts of Madrid, Spain have jurisdiction. If you are an individual acting outside your trade, the mandatory consumer protections and courts of your country of residence still apply to you.

Contact. Delegas Labs, S.L., Paseo de la Castellana 257, 28046 Madrid, Spain. [email protected].