Industry
Use Case
Favorite Feature
A service converts documents (PDF to Word, scans to searchable PDF) and collects e-signatures. Since launch it sold credit packs: one credit per conversion, five per signature request. Revenue came in bursts and was hard to plan. Teams that used the service daily kept running out of credits in the middle of a job and had to stop and buy more.
The company decided to offer monthly plans with an included volume, and to sell extra volume on top. Two constraints made it tricky. Existing customers had paid for credits they hadn’t used yet and had to keep them. And the switch had to happen without a big-bang migration.
Each customer team is a licensee. The product gets a new Pricing Table module, and the credit packs stay as they were:
Product: DocFlow (licenseeAutoCreate = true)
├── Module "Plans" – Pricing Table
│ SKUs: CONVERSIONS (quota, per month), SIGNATURES (quota, per month), TEMPLATES (feature)
│ Starter TIMEVOLUME 1 MONTH CONVERSIONS=200 SIGNATURES=20 TEMPLATES=false
│ Team TIMEVOLUME 1 MONTH CONVERSIONS=1000 SIGNATURES=100 TEMPLATES=true
│ Business TIMEVOLUME 1 MONTH CONVERSIONS=5000 SIGNATURES=500 TEMPLATES=true
├── Module "Credits" – Pay-per-Use (the existing credit packs)
│ └── 100 credits, 500 credits, 2000 credits
└── Module "Promotions" – Discount
└── SWITCH30: 30% off the order, valid until the end of the campaign
The Pricing Table plans set the monthly allowance for each team. NetLicensing returns the limits. The service counts each team’s conversions and signatures per billing month in its own database and compares them with the limits.
When a team goes over its allowance, the service doesn’t stop. It switches to the Pay-per-Use credits, which are now the overage. Existing customers’ unused credits sit right there, so nothing had to be migrated. The credit licenses they bought before simply stay on their licensee.
The service validates a team when a job starts and reports credit use in batches:
curl -u apiKey:YOUR_API_KEY -H "Accept: application/json" \
-d "productNumber=DOCFLOW" \
-d "productModuleNumber0=M-CREDITS" -d "usedQuantity0=14" \
https://go.netlicensing.io/core/v2/rest/licensee/TEAM-1180/validate
The response returns the current plan with its SKU values and the remaining credits (remainingQuantity). If a team has neither allowance nor credits left, the job editor shows two buttons: “Buy credits” and “Upgrade plan”.
Credit customers see a banner: “Switch to a monthly plan and keep your credits.” The link opens the NetLicensing Shop from a shop token for their team. At checkout they enter the Discount promo code SWITCH30 for 30% off the order. The code has an end date, so the offer closes on its own.
New customers get a free 14-day Team plan (an automatic, hidden TIMEVOLUME plan at price 0) and drop to credits-only use afterwards, unless they subscribe.
Plan reminders use warning levels: a monthly plan turns yellow when 80% of its time is used, and a WARNING_LEVEL_CHANGED webhook triggers the renewal email.
Thinking about moving from credits to plans? Read Usage-based software licensing or talk to us.

B2B SaaS: From Stripe-Only to Licensing-as-a-Service
How a B2B SaaS vendor can keep Stripe Billing for payments and use NetLicensing as the single source of truth for subscriptions, trials and add-on features.

Wordpress Plugin: DigiPass
How Labs64 built DigiPass, a WordPress plugin that puts posts and pages behind a paywall using the NetLicensing Subscription model and NetLicensing Shop.