Skip to content

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:

  1. The app is marked as "published"
  2. Further download requests return HTTP 402 Payment Required
  3. Add a payment method in the Developer Portal to continue
  4. 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

  1. Go to Developer Portal → BillingPayment Methods
  2. Click Add Payment Method
  3. Enter your card details (handled securely by Stripe)

Viewing Invoices

  1. Go to Developer Portal → BillingInvoices
  2. 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