Axnify
For software developers

An ecommerce platform built for selling software licenses

License key generation. Per-license activation limits. Trial-to-paid conversion. Validity periods with grace windows. Customer license portal where buyers can deactivate machines and view their key library. All native — no Gumroad fees, no FastSpring 8.9%, no custom licensing layer to build.

Why selling software is fundamentally different from selling physical goods

Selling a t-shirt and selling a £200 desktop app share roughly nothing operationally. The t-shirt has a SKU, a stock count, a shipping weight and a return policy. The desktop app has a license key, an activation server, a machine-count limit, a validity period, a grace window after expiry, a trial-to-paid conversion path, an upgrade ladder (individual → team → enterprise), and a customer portal where buyers manage active installations across their devices. None of those concepts exist on a generic ecommerce platform's product model.

The platforms that DO understand software — Gumroad, FastSpring, Paddle, Lemon Squeezy — exist because of this gap. They get the licensing primitives right but they charge for it. Gumroad takes 10% on every sale on the free tier and 8% even on paid. FastSpring takes 8.9% as the merchant-of-record. Paddle is similar. On a £100 license, that's £8–£10 to the platform — repeat across 1,000 licenses sold and you've handed over £8,000–£10,000 to Gumroad for the convenience of not building your own checkout. That's enough to fund a couple of months of your indie dev runway.

Axnify is a third option: ecommerce platform fees (1.5% on Starter, dropping to 0% on Enterprise) with the license-selling primitives built in. Native license product type. Configurable max activations per license. Validity period with grace days. Trial period before billing kicks in. Auto-renewal toggle. Self-service upgrade pool. Webhooks on every license event (purchase, activation, deactivation, expiry, renewal) so you can integrate your own license server, signing service or feature-flag system however you want. You keep your checkout, your branding, your customer relationship and 99%+ of the revenue.

Why software developers leave Gumroad / FastSpring / Paddle

Platform fees compound across the entire customer lifecycle

Initial sale: 10% to Gumroad. Renewal a year later: 10% again. Upgrade from individual to team: 10% on the difference. Across a customer's lifetime, you might lose 30%+ of their LTV to platform fees alone. Most indie devs don't model this and are surprised when they do.

License key generation is usually a custom job

Most ecommerce platforms have no concept of a license key. Selling software means writing your own key generation, machine activation, validity tracking and customer portal — every dev who's done this knows it's a month of work that has nothing to do with the actual product.

Trial-to-paid conversion is broken

Generic platforms either don't support trials, or only support 'free shipping trial' for physical goods. Selling a £49 plugin with a 14-day trial means a separate trial-management system, separate email workflow, separate license issuance — all things you build instead of shipping features.

Refunds and license revocation get messy

Customer requests refund 25 days after purchase. Their license key is still in their app, still works. On most platforms, refund flows don't trigger license revocation — that's a separate operation you have to remember to do, and forgetting means you've effectively given the software away for free.

What you get with Axnify

Native license-selling primitives — built into the core product model, not bolted on as an app.

Native `license` product type

Set the product type to `license` and the admin reveals license-specific fields: max activations, validity days, grace period, trial days, auto-renew flag, upgrade pool. Same product list as your other products; same theme editor; same checkout. Software is just another product type.

Max activations per license

Configure how many machines a single license can be installed on (1 for personal, 3 for typical, unlimited for site licenses). Activations track via your license server hitting our webhook on each install; we count against the limit and refuse activation beyond it.

Validity periods with grace days

Set a license to be valid for N days from purchase (e.g. 365 for a yearly license) plus a grace period after expiry (default 7 days). Customer gets reminder emails before expiry. Software keeps working through the grace period to avoid breakage during renewal payment retries.

Trial period before billing

Free trial for X days before the first charge. Customer enters card upfront; the platform doesn't charge until trial ends. Cancel during trial = clean record, no charge. Convert to paid = first charge on trial-end day, license issued.

Recurring or one-time licenses

Pair the `license` product type with the `subscription` interval (monthly/yearly) for JetBrains-style recurring licenses. Or sell perpetual licenses with no interval. Same product model, both modes supported.

Self-service upgrade ladder

Individual → Team → Enterprise. Define which products are valid upgrade targets per license; customer sees them in their portal with prorated upgrade pricing. Old license deactivates, new license activates, no support ticket needed.

Customer license portal

Customer logs into their account, sees all active licenses, current activation count per license, can deactivate a machine (e.g. they got a new laptop) to free up an activation slot, view payment history, change card on file, cancel auto-renew.

Webhooks on every license event

license.created, license.activated, license.deactivated, license.expiring (7 days out), license.expired, license.renewed, license.upgraded, license.refunded. Hit your own license server or signing service on whichever events matter to you.

Architecture: how Axnify integrates with your existing license server

Most indie devs already have a small license server — usually a tiny Go/Node/Python service that holds the source of truth on which keys are active, which machines they're bound to, and what feature flags they unlock. The question when adopting an ecommerce platform is: how do these two systems talk?

Axnify takes the webhooks-and-API approach. On purchase, Axnify fires `license.created` with the customer email, product ID, license type, max activations and validity period. Your license server receives the webhook, generates a key (whatever format and signing scheme you prefer), stores it against the customer, and returns the key in the response. Axnify stores the key on the order, sends it to the customer email and exposes it in their portal.

From the customer's app, activation calls go to your license server (you stay in control of the runtime path). When a machine activates, your server can ping Axnify's API to increment the activation count and check the limit. When a machine deactivates, same flow in reverse. License expiry and grace-period logic can live on either side; we recommend keeping the dates on Axnify (single source of truth for billing) and letting your server query the API for status. If you don't have a license server yet, Axnify can also be the source of truth on its own: generate HMAC-signed keys natively, track activations through the API, and call `license.activated` / `license.deactivated` webhooks on your in-app activation events. Good starting point for indie devs who want to ship in a week rather than build licensing infrastructure for a month; you can graduate to your own license server later by switching the activation endpoint without re-issuing keys.

What developers are selling on Axnify

Desktop applications

Mac, Windows, Linux apps. License key issued on purchase, validated by your in-app activation. Max 3 machines per personal license, unlimited for team. Trial-to-paid conversion with 14-day free trial.

Plugins and extensions

Figma plugins, VSCode extensions, Sketch plugins, Photoshop actions, Lightroom presets. Often sold as one-time perpetual licenses with optional 1-year update access at a renewal discount.

Themes, templates, fonts

WordPress themes, Shopify themes, Notion templates, font families. Tiered licensing (single-site / 5-sites / unlimited; personal / commercial / extended). The license type determines which downloads the customer can access.

Self-hosted SaaS

Sell a license for an on-premises version of your SaaS. License validates each install via your activation server; expiry stops feature updates but keeps the existing install working (typical 'perpetual fallback' model).

1.5% platform fee on Starter vs 10% on Gumroad

On a £100 license, you keep £98.50 on Axnify Starter vs £90 on Gumroad. At 100 licenses sold a month, that's an £850 monthly difference — enough to fund significant dev time. At Enterprise tier (0% platform fee, £299/mo subscription) you're effectively paying Axnify a flat rate regardless of volume.

See full pricing

Common questions from software developers

How are license keys generated?

Two options. (1) Built-in: Axnify generates HMAC-signed keys in a configurable format (UUID, hex, custom prefix). (2) Bring your own: Axnify fires a webhook on purchase with the customer + product details, your license server generates the key in your chosen format and signing scheme, returns it via the webhook response. Either way the key surfaces to the customer in the same delivery flow.

Can I integrate my own license server?

Yes — that's the recommended path for any non-trivial software. Subscribe to license.created and license.refunded webhooks for issuance and revocation. Use the Axnify API for activation-count increment/decrement from your in-app activation flow. If you don't have a license server yet, Axnify's built-in HMAC-signed key generation and activation tracking are enough to ship — you can move to your own server later without re-issuing keys.

What happens when a license expires?

Configurable. The license enters a grace period (default 7 days) where the software keeps working but the customer gets renewal-reminder emails. After the grace period, license.expired fires. Your software (via the activation server) can then decide: full lock-out, read-only mode, downgrade to free tier, or keep working with no updates. Many indie devs choose 'keep working but no updates' for goodwill.

Can customers deactivate a machine to install on a new one?

Yes — built into the customer portal. They see active activations (with machine fingerprints / OS where you've reported them), can revoke any of them, which frees up the activation slot. license.deactivated fires so your license server can invalidate the revoked key locally.

Do you support floating or concurrent licenses?

Not natively yet — `max_activations` is total seats, not concurrent. Floating-license enforcement (only N active simultaneously, others queued) is a roadmap item. If it's a hard requirement for your product today, you can implement the concurrent-check in your own license server using the activation webhooks, but the Axnify admin won't surface it as a first-class concept yet.

What's the platform fee on software sales?

Same as everything else: 1.5% on Starter, 0.75% on Pro, 0.25% on Business, 0% on Enterprise. Stripe's processing fees apply on top regardless of platform. On a £100 license you net £97 after both fees on Starter — vs £88-£91 on Gumroad / Paddle / FastSpring.

Can you help me move my data from another platform?

Absolutely. Email support@axnify.com with the export file from your current platform — we accept Shopify, WooCommerce, Etsy, Squarespace, Big Cartel, Gumroad, Sellfy and most other common formats. Our team handles the migration of your products, variants, customers and orders end-to-end, free of charge for standard imports.

Stop paying 10% to sell your software

Start free. Native license keys, activation tracking, trial-to-paid conversion — all on day one.