About billing
Billing
Here are short answers to the most common billing questions. Click any question to expand the answer.
Think about how your customers actually use your product and what they value most. If you’re selling a tool where usage varies dramatically - like API calls or storage - go with usage-based pricing so customers only pay for what they consume. For products where value comes from access to features rather than consumption, subscription pricing makes more sense. Kinde lets you mix these models within a single plan, so you could have a $20 base subscription plus $0.10 per extra API call.
Start simple with one model and add complexity as you grow - your customers will thank you for not overwhelming them upfront. Explore pricing models | About billing concepts
Metered features are the ones you can put a number on - monthly active users, API calls, storage gigabytes, support hours. These can be chargeable (customers pay per unit) or non-chargeable (included in their plan up to a limit). Unmetered features are more like switches - either customers have access to your advanced analytics dashboard or they don’t. Think of metered features as “how much” and unmetered as “yes or no.” Most SaaS businesses use a mix of both to create clear upgrade paths without making pricing too complicated. About plans and features | Billing concepts guide
Plan groups are how you separate B2B and B2C offerings without creating a mess. Each group is tied to either individual users or organizations, never both. So you might have a “Professional” group with individual plans for freelancers and consultants, and a separate “Enterprise” group with team-based pricing for companies. You can create multiple pricing tables from one group, but each table can only show plans from a single group. This keeps your offerings clean and makes it easier for customers to find the right fit. Plan groups management | Billing concepts
Unless you’re excited about spending months building subscription management, dunning logic, proration calculations, and tax compliance - spoiler alert: you’re probably not - Kinde’s billing saves you from that headache. We handle the messy bits like Stripe integration, plan upgrades, usage tracking, and invoice generation, so you can focus on building features your customers actually care about. Plus, you get a self-serve portal out of the box, which means fewer support tickets about billing issues. About billing plans | Self-serve portal setup
We abstract away the most technical parts. Once you connect to Stripe (we create a new account for you automatically), everything syncs seamlessly. Plan changes, usage tracking, proration, invoice generation - it all happens behind the scenes. Your customers get a smooth experience upgrading or downgrading, and you can set up webhook notifications when important billing events happen. The only thing you need to worry about is building great features and deciding how to price them. Stripe integration guide | About billing plans
Draft plans are your work in progress - you can tweak pricing, add features, change everything without affecting anyone. Once you publish a plan, it syncs to Stripe and becomes available for actual customers to subscribe to. Here’s the catch: once someone subscribes to a published plan, you can’t change it anymore, only version it (though plan versioning isn’t available yet). This protects your existing customers from surprise pricing changes, but it means you need to think things through before hitting publish. About plans lifecycle | Billing concepts
This is actually a Stripe requirement for third-party integrations like ours, not something we chose. They want to ensure security and compliance by controlling how connected accounts are set up. The good news? You can transfer your existing business information during the Stripe onboarding process, so you’re not starting from scratch. We’re working on a migration strategy to make this smoother, but for now, the new account approach keeps everyone secure and compliant. Stripe connection setup | Manage Stripe connection
Don’t worry - this just means Stripe needs a bit more information from you to complete the setup. Usually it’s business details like contact information, tax info, or identity verification (they might ask for ID upload). The connection won’t work for live payments until this is sorted, so customers won’t be able to subscribe to paid plans yet. Jump into your Stripe dashboard through the “Update Stripe information” button in Kinde to see what’s missing. Once everything’s complete, the status should change to “Connected” and you’re good to go. Stripe connection troubleshooting | Connect to Stripe guide
Switch to your non-production environment in Kinde - this automatically creates a test Stripe account that won’t process real payments. You can create plans, test the whole customer journey, even simulate failed payments, all without touching real credit cards. This is perfect for making sure your billing flow works before going live. Just remember to switch back to your production environment when you’re ready to accept real payments. Stripe integration setup | About billing plans
Create a clear progression where each plan builds on the previous one. Start with a generous free plan that gives users real value, then add features and remove limits as they upgrade. Instead of completely different feature sets, use metered features to give everyone a “taste” - maybe 100 API calls on Free, 1,000 on Pro, unlimited on Enterprise. This way upgrades feel like growth, not switching to something completely different.
Keep plan names simple and descriptive - “Starter,” “Professional,” “Enterprise” beats “Bronze,” “Silver,” “Gold” every time. About pricing models | Plan management guide
This is where unmetered features shine. Instead of cramming every possible feature into every plan, gate advanced capabilities behind higher tiers. Use unmetered features as “gates” - advanced reporting might only be available on Business plans, while API access could be Professional and up. For features with variable usage, use metered features with different limits per plan. This way customers self-select into the right plan based on what they actually need, and you avoid feature bloat in your lower tiers. Feature planning strategy | Billing concepts
Be upfront about how the math works and give concrete examples. If you charge $0.50 for the first 10 API calls, then $0.30 for calls 11-50, show them: “If you make 25 API calls, you pay $5 for the first 10, then $4.50 for the next 15 = $9.50 total.” Most customers appreciate transparency over surprises. Consider setting reasonable limits on lower plans instead of unlimited usage-based charging - it makes budgeting easier for them and upgrade paths clearer for you. Mke sure your pricing table is descriptive and clear about metered or package prices. This can be tricky. Pricing models explained | Build a pricing table
Think about what’s fair for both you and your customers. By default, Kinde forgives unpaid usage when customers downgrade and doesn’t refund unused subscription days - this is pretty industry standard and avoids messy proration calculations. But you can change these policies if needed. For example, if someone on your $100/month plan cancels mid-month, you might choose not to refund the remaining days but also not charge them for any metered usage that month. Find the balance that feels fair and stick with it consistently. Plan policies configuration | Billing setup guide
Less is more when it comes to pricing tables. Stick to your 3-4 core plans (Free, Pro, Business works great), highlight which plan is most popular, and focus on benefits rather than features. Use the custom features section to highlight your best selling points for each plan, and don’t just copy your technical feature list. Test different approaches, but remember - confused customers don’t buy anything. If your product is complex or has a lot of features, you might want to create a custom designed table. Build effective pricing tables | Pricing table customization
Depends on your product and customer type. For simple tools where the value is obvious upfront, showing pricing during signup can work well - especially if you have a generous free tier. For complex products where users need to understand the value first, let them sign up and experience your product before presenting upgrade options. You can control this in Kinde by toggling the “Show pricing table when customers sign up” option. Test both approaches if you’re unsure - the data will tell you what works for your audience. Pricing table display options | Billing integration guide
Start by trying to fit them into your existing plans with some creative metered feature limits - you’d be surprised how often this works. If they truly need something custom, you can manually adjust metered usage for specific customers through the Kinde API after they subscribe. For true enterprise deals with annual contracts or bank transfers, those arrangements are available but you’ll need to work with Kinde’s enterprise team. Most customers who think they need custom pricing actually just need a slightly modified version of your top tier. API billing management | Enterprise billing options
Think of it as your billing support team that never sleeps. Customers can update their payment details, view billing history, upgrade plans, and manage organization settings without creating support tickets. You control exactly what they can self-manage - maybe you want them handling payment updates but prefer to manage plan changes yourself. The portal generates one-time secure links, so you can add “Manage Billing” buttons throughout your app that take users directly to the right section.
Less support tickets means more time building features that matter. Self-serve portal setup | Portal configuration options
It’s better to start with more restrictions and expand, than start with too many that you might have to remove. Most organizations want their admins to manage payment details and view billing history, but you might not want every team member changing subscription plans. Kinde provides some pre-defined roles with varying portal access - so that the right people can change the right things. The permissions map directly to Kinde’s system permissions like org:write:billing
, so you can be granular about who can do what.
Portal permissions setup.
You’ve got two options depending on your setup. If you’re using Kinde for authentication, use the SDK to generate portal links on the fly - perfect for “Account Settings” buttons in your app. If you’re handling auth yourself or need server-side generation, hit the Kinde Management API with an M2M token. You can specify which section of the portal to open (billing, profile, etc.) and where to redirect users when they’re done. The links are one-time use for security, so generate them fresh each time. Portal link generation | Management API integration
Use the Account API to check what features and usage limits a signed-in user has access to. The API returns billing entitlements along with roles and permissions, so you can gate features based on their current plan. For organization-level billing data (which is more sensitive), use the Management API instead. Set up webhooks for billing events like plan changes or usage updates, so your app stays in sync automatically. Don’t try to cache billing data for too long - things change, and you want accurate limits. Account API for billing | Billing webhooks
Set up dedicated API endpoints to receive billing webhooks and verify the JWT signatures - this is how you know the requests actually come from Kinde. Handle key events like subscription changes, payment failures, and usage updates to keep your app in sync. Always respond with a 200 status code when you successfully process a webhook, or Kinde will keep retrying with backoff logic. Use the webhook request ID as an idempotency key to avoid processing the same event twice if there are retries. Webhook implementation | Webhook setup guide
Use URL parameters to direct customers to specific plans or pricing tables when they’re ready to upgrade. For example, ?plan=pro_monthly
can take them straight to your Pro plan signup. This is super useful for email campaigns, in-app upgrade prompts, or landing pages. You can also override which pricing table displays using parameters, so different marketing campaigns can show different plan combinations. The SDK handles most of this automatically, but manual URL construction gives you more control.
Billing URL integration | Pricing table configuration
If you see “price not synced” status, it usually means the plan isn’t published yet - only published plans sync to Stripe. Mixed sync status (some features synced, others not) typically happens when some features are already in a published plan while others are new additions. Try publishing or re-publishing the plan to trigger a sync. If it’s still not working, check that your Stripe connection status shows “Connected” rather than “In progress” or “Connecting.” Plan publishing process | Stripe connection status
Start by checking the billing history in their organization’s portal - this shows exactly what they were charged and when. Look for things like mid-month plan changes (which can cause proration), metered usage overages, or failed payment retries. Most “billing errors” are actually just confusing timing - customers might see charges for last month’s usage appearing on this month’s invoice. If you genuinely find an error, Kinde’s support team can help resolve it, but having the billing details handy speeds things up. Billing history access | Support resources
Currently, Kinde only supports monthly billing (no annual), doesn’t have free trial periods built-in, and plan versioning isn’t ready yet. For customers who need annual billing, you could manually create annual plans with different pricing. For free trials, you could start them on a free plan and set up automated emails to encourage upgrades. Give us feedback about your billing experience with Kinde by reporting bugs and making feature suggestions. We genuinely are listening. Current billing limitations | Alternative approaches
Start by setting up your billing plans and pricing tables in a non-production environment to get everything perfect. Create a grandfathering strategy for existing users - maybe they keep their current access levels for a certain period before needing to choose a plan. When you’re ready to go live, communicate the changes clearly with plenty of notice. Consider starting with just new signups on the new billing system, then migrating existing users in batches. This gives you time to iron out any issues without affecting your entire user base at once. Billing setup strategy | Plan management
Pricing decisions can be really hard. Start with generous free tiers that let customers experience real value, then use usage limits to create natural upgrade triggers. If your app gets more valuable with heavier usage, price metered features aggressively low or even free up to reasonable limits. The goal is to make customers successful enough that upgrading feels like a no-brainer rather than a burden. Watch your unit economics closely - some features cost you more to provide than others, so price accordingly. Metered pricing strategies | Feature management
Set up webhooks for payment failures and usage pattern changes, then create automated workflows to reach out before customers hit walls. If someone’s approaching their usage limits, send them upgrade prompts with specific benefits rather than just warnings. Use billing data to identify your best customers (high usage, consistent payments) and make sure they’re getting white-glove treatment. Failed payments aren’t always churn signals - sometimes cards expire or customers need payment method updates. Billing webhooks setup | Usage tracking
Keep it simple with clear value differences between tiers. Three to four plans usually hit the sweet spot - more than that and customers get paralyzed by choice. Use the “good, better, best” psychology: make your middle plan the obvious choice by giving it the best value ratio. Include some metered features as “freebies” in higher plans to justify the price jump. And please, test your pricing table with real humans before launching - what seems obvious to you might be confusing to customers who see it fresh. Pricing table best practices | Plan strategy guide