Billing & Pricing¶
This topic explains PyLocket's billing model, pricing tiers, and how charges work.
Billing Model¶
PyLocket is a B2B developer tools platform. Billing is between PyLocket and the developer. PyLocket never processes end-user payments.
Developer ──pays──→ PyLocket (protection + licensing service)
End-User ──pays──→ Developer's Storefront (Stripe, Gumroad, Paddle, etc.)
End-users never see PyLocket branding on their receipts regardless of which path you choose.
Free Tier¶
Every app gets a free tier with no credit card required:
| Feature | Free Tier |
|---|---|
| Account creation | Free |
| App registration | Free |
| Protection builds | Unlimited |
| Build downloads | 10 per app |
| License creation | Up to 10 licenses total across all apps |
The free tier lets you test the complete workflow — protect, download, distribute — before paying anything.
What Happens After 10 Downloads¶
After the 10th build download for an app:
- The app is marked as "published"
- Further download requests return
HTTP 402 Payment Required - Add a payment method in the Developer Portal to continue
- Once a subscription is active, downloads resume immediately
Pricing¶
| Fee | Amount | Frequency | Trigger |
|---|---|---|---|
| Base fee | $9.00 per developer account | Annual | After free tier exhausted |
| License fee | $4.00 per license | Per event, billed monthly | When a new end-user license is created |
| Storage fee | $0.32 per GB | Annual | Based on artifact storage consumed |
Base Fee¶
- Charged annually per developer account (not per app)
- Covers: protection pipeline, licensing infrastructure, delivery pages, CDN hosting
- Billed on the anniversary of your first paid download
License Fee¶
- Charged per end-user license created via any path (Stripe Connect, marketplace API, direct links, delivery page, redemption codes)
- Billed via Stripe metered subscription — consolidated into a single monthly invoice
- Only charged when you create a new license — renewals and extensions are free
Storage Fee¶
- Proportional to artifact storage consumed (
$0.32/GB/year) - Billed as a metered line item on your annual Pro subscription
- A typical 50 MB application costs approximately $0.02/year
Collection paths for the License Fee¶
You have two ways to collect end-user payments when selling your protected application. The $4 License Fee is collected from you (the developer) in both cases — never from the end-user directly. Choose the path that fits your existing workflow.
Path 1 — Bring your own storefront (most common)¶
Use whatever storefront you already use (Gumroad, Paddle, Lemon Squeezy, your own Stripe account, AppSumo, etc.) to collect payment from end-users. After the sale completes, your storefront calls PyLocket's marketplace API to issue a license. PyLocket bills you $4 per license on a monthly invoice.
End-user → Your storefront → Your payment processor → You receive the full sale price
↓
Storefront webhook → PyLocket marketplace API → license issued
→ $4 metered event
→ appears on your next PyLocket monthly invoice
Pros: you control the full checkout flow, receipt branding, tax handling, and refund policy. Works with any storefront that can call a webhook or REST API.
Cons: you're responsible for the integration between your storefront and PyLocket's marketplace API. See Marketplace Distribution for examples.
Path 2 — Let PyLocket broker the Stripe checkout¶
Connect a Stripe account to PyLocket via OAuth. PyLocket generates a hosted Stripe Checkout page for each end-user purchase using your Connect account. The $4 fee is extracted from the charge at sale time via Stripe's application fee mechanism, so it never appears on your monthly PyLocket invoice. See Stripe Connect Setup.
Pros: no custom integration — PyLocket handles the checkout page.
Cons: limited to Stripe as your payment processor; less control over branding and tax handling.
Which path is right for you?¶
| Question | Path 1 (external storefront) | Path 2 (PyLocket Stripe Connect) |
|---|---|---|
| Already using Gumroad / Paddle / Lemon Squeezy? | ✅ Recommended | ❌ Not applicable |
| Already have your own Stripe account for other products? | ✅ Recommended | ⚠️ Possible but adds a second Stripe account |
| Just starting out, no storefront yet? | ⚠️ Need to choose one | ✅ Simplest — one OAuth click |
| Need full control of checkout UX / branding? | ✅ Yes | ❌ Checkout page is Stripe-hosted |
| Want instant $4 collection with zero invoicing risk? | ❌ Invoice-based | ✅ Yes — collected at sale |
FAQ¶
Can I avoid the $4 license fee by distributing license keys manually?¶
No. PyLocket only recognizes license keys that were created through one of its documented API paths. When an end-user tries to activate a license key that isn't in PyLocket's database, the activation endpoint returns a "license not found" error and the protected application won't run. Every working license has gone through a metered path and has been counted toward your monthly invoice.
Does the end-user ever see that I'm using PyLocket?¶
No. In both collection paths, the end-user's receipt shows your own business (in Path 2 via Stripe's statement descriptor on your connected account). The PyLocket delivery page is the fulfillment step after payment — it shows your app's branding and the license key. It does not display PyLocket's name or pricing.
What if my payment method fails on the monthly License Fee invoice?¶
Stripe's standard Smart Retries kick in (multiple automatic retry attempts over 3 weeks). If all retries fail, your subscription status flips to past_due and you'll receive an email. You won't lose existing licenses during this window, but new license creations will be blocked until the invoice is paid.
Can I get a refund on a license I issued by mistake?¶
Yes — contact support with the license ID and reason. Admin staff can credit the $4 license fee back to your account. This is tracked in an audit log for fraud prevention.
Billing Examples¶
Example 1: Small Developer¶
- 1 app, 50 licenses/month
| Item | Cost |
|---|---|
| Base fee | $9.00/year |
| License fees | 50 x $4.00 = $200.00/month |
| Storage (50 MB) | ~$0.02/year |
| Monthly total | ~$200.75 |
Example 2: Growing Business¶
- 3 apps, 500 licenses/month total
| Item | Cost |
|---|---|
| Base fee (per developer, not per app) | $9.00/year |
| License fees | 500 x $4.00 = $2,000.00/month |
| Storage (500 MB) | ~$0.20/year |
| Monthly total | ~$2,000.77 |
Example 3: Testing / Pre-Revenue¶
- 1 app, under 10 licenses, within free tier
| Item | Cost |
|---|---|
| Everything | $0.00 |
Payment Processing¶
All PyLocket-side billing is handled through Stripe Billing:
- You are the Stripe customer
- The License Fee is invoiced monthly (metered subscription)
- The Base Fee + Storage Fee are invoiced annually (flat + metered on a single subscription)
- Payment methods: credit/debit cards
- View invoices in the Developer Portal → Billing
Metered Billing Reliability¶
PyLocket uses a durable meter event queue (outbox) for metered billing events. When you create a license or when artifact storage changes, PyLocket atomically records a billing event in its database alongside the data change. A background worker forwards those events to Stripe with retries and exponential backoff. This guarantees that a transient Stripe outage or network blip can never cause a silently-lost billing event.
A nightly reconciliation job compares PyLocket's license creation counts against Stripe's meter aggregates and alerts platform operators if they diverge. In the unlikely event of a mismatch, contact support with the affected date range.
Managing Billing¶
Developer Portal¶
The Billing page in the Developer Portal shows:
- Current subscription status
- Usage for the current billing period
- Invoice history
- Payment methods
Adding a Payment Method¶
- Go to Developer Portal → Billing → Payment Methods
- Click Add Payment Method
- Enter your card details (handled securely by Stripe)
Viewing Invoices¶
- Go to Developer Portal → Billing → Invoices
- Click any invoice to view line items and download a PDF
Fraud Controls¶
PyLocket includes built-in fraud prevention:
| Control | Description |
|---|---|
| Activation rate limiting | Limits rapid activation requests per license |
| Download rate limiting | Limits rapid download requests |
| Chargeback monitoring | Stripe webhook integration for dispute detection |
| Metered billing idempotency | Duplicate events are not double-charged |
| Reset-activations rate limit | Bounded number of device-reset calls per license to prevent bypass via reset loops |
| Nightly billing reconciliation | Admin alert on any divergence between PyLocket DB and Stripe meter aggregates |
Pricing Adjustments¶
Pricing is managed by PyLocket. If you need custom pricing for high-volume use:
- Contact sales@pylocket.com
- Enterprise pricing is available for teams with 1,000+ licenses/month
Marketplace Licenses¶
Licenses created through third-party marketplace integrations (AppSumo, Gumroad, Paddle, LemonSqueezy, etc.) follow the same $4 per license pricing as direct-channel licenses.
| Method | When Charged | Amount |
|---|---|---|
| Redemption codes (Option A) | When the end user redeems a code | $4 per redemption |
| API provisioning (Option B) | When your backend calls POST /v1/marketplace/licenses |
$4 per license |
There is no charge for generating redemption codes — you only pay when a code is actually redeemed by an end user. This means you can generate thousands of codes upfront for an AppSumo launch and only be billed for the codes that customers actually use.
All marketplace billing events appear on your monthly PyLocket invoice alongside direct-channel license fees.
For the full marketplace integration guide, see Marketplace Distribution.
Key Points¶
- No upfront costs: Start for free, pay as you grow
- No per-seat developer pricing: One developer account covers your whole team
- Base fee is per developer account, not per app
- No charge for protection builds: Only downloads and licenses are metered
- No charge for code generation: Redemption codes are free to create; billing occurs at redemption
- End-user payments are yours: PyLocket never touches end-user revenue
See Also¶
- Distribute Your App — Choose your collection path
- Marketplace Distribution — Third-party marketplace guide
- Stripe Connect Setup — OAuth-based checkout brokering
- REST API Reference — Billing-related API endpoints