Remove refund copy from public docs

Keysat has no refund functionality — refunds are handled out-of-band in the
payment processor (the v0.3 revoke-on-refund webhook hook is currently a
no-op). Drop refund mentions so the docs do not describe a flow the daemon
does not implement.
This commit is contained in:
Keysat
2026-06-13 06:58:12 -05:00
parent 23681bc05e
commit 3f1fbe0f3b
4 changed files with 4 additions and 5 deletions
+1 -2
View File
@@ -17,8 +17,7 @@ This repo is a static HTML site. No build step. The deployed version lives at
own software. Code examples for the TypeScript, Python, and Rust SDKs; own software. Code examples for the TypeScript, Python, and Rust SDKs;
entitlement-gating patterns; offline verification. entitlement-gating patterns; offline verification.
- **[operate.html](./operate.html)** — Day-to-day operations. Managing - **[operate.html](./operate.html)** — Day-to-day operations. Managing
licenses, suspending / revoking, search, audit log, discount codes, refund licenses, suspending / revoking, search, audit log, discount codes.
flows.
- **[wire-format.html](./wire-format.html)** — Specification of the signed - **[wire-format.html](./wire-format.html)** — Specification of the signed
license key format (LIC1 envelope, base32 alphabet, Ed25519 signature license key format (LIC1 envelope, base32 alphabet, Ed25519 signature
scheme). Useful for porting the SDK to a new language. scheme). Useful for porting the SDK to a new language.
+1 -1
View File
@@ -168,7 +168,7 @@ curl https://your-keysat-host/v1/admin/licenses?status=active \
<pre><code>curl -X POST $KS/v1/admin/licenses/$LICENSE_ID/revoke \ <pre><code>curl -X POST $KS/v1/admin/licenses/$LICENSE_ID/revoke \
-H "Authorization: Bearer ks_..." \ -H "Authorization: Bearer ks_..." \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"reason":"refund issued"}'</code></pre> -d '{"reason":"customer request"}'</code></pre>
<p>Idempotent. The next online validate from the buyer's app returns <code>reason: revoked</code>.</p> <p>Idempotent. The next online validate from the buyer's app returns <code>reason: revoked</code>.</p>
<p><em>Scope required: <code>licenses:write</code>.</em></p> <p><em>Scope required: <code>licenses:write</code>.</em></p>
+1 -1
View File
@@ -138,7 +138,7 @@
<p>You have three options:</p> <p>You have three options:</p>
<ul> <ul>
<li><strong>Don&rsquo;t support revocation at all.</strong> Many indie developers do this. Once a key is sold, it stays valid. Refunds are still possible. You send sats back via BTCPay; the key still works but the customer agreed to stop using it.</li> <li><strong>Don&rsquo;t support revocation at all.</strong> Many indie developers do this. Once a key is sold, it stays valid.</li>
<li><strong>Periodic online check.</strong> Your app fetches a small revocation list from your Keysat (or a CDN you point at it) once a week / month. Adds a "soft-online" requirement.</li> <li><strong>Periodic online check.</strong> Your app fetches a small revocation list from your Keysat (or a CDN you point at it) once a week / month. Adds a "soft-online" requirement.</li>
<li><strong>Short-lived licenses with renewal.</strong> Issue 30-day licenses; the app fetches a fresh signed token before expiry. Recurring renewals are first-class in v0.2: define a policy with <code>is_recurring=true</code> + <code>renewal_period_days</code> and Keysat handles the cycle (invoice → settle → re-sign → webhook).</li> <li><strong>Short-lived licenses with renewal.</strong> Issue 30-day licenses; the app fetches a fresh signed token before expiry. Recurring renewals are first-class in v0.2: define a policy with <code>is_recurring=true</code> + <code>renewal_period_days</code> and Keysat handles the cycle (invoice → settle → re-sign → webhook).</li>
</ul> </ul>
+1 -1
View File
@@ -238,7 +238,7 @@ result = verifier.<span class="f">verify</span>(license_key_from_user)
<div class="callout"> <div class="callout">
<i data-lucide="key-round"></i> <i data-lucide="key-round"></i>
<p><strong>You decide the policy.</strong> Many indie developers ship no revocation at all. Once a key is sold, it stays valid. Refunds happen offline via BTCPay. That&rsquo;s perfectly reasonable.</p> <p><strong>You decide the policy.</strong> Many indie developers ship no revocation at all. Once a key is sold, it stays valid. That&rsquo;s perfectly reasonable.</p>
</div> </div>
<h2 id="api">Admin API</h2> <h2 id="api">Admin API</h2>