Shopify Billing API: How to Decide App Pricing
How should you price your Shopify app? A decision framework for recurring, usage-based, and trial models for developers and founders.
- shopify
- billing-api
- monetization
- app-pricing
- development
When you build a Shopify app for the App Store, pricing is a separate product decision: subscription or usage-based? How long is the trial? Shopify does not officially support in-app payments outside the Billing API; direct Stripe or PayPal collection violates App Store policy.
Who is this for?
App developer / founder: Monetizing your first public app; model choice directly affects revenue and churn.
Agency: Building a custom app for a client; you need to explain the "added to Shopify invoice" flow correctly.
Store owner (evaluation mode): Understanding pricing structure and cancel/trial terms for apps you install.
The decision problem: Is your value measured by usage, feature set, or setup/migration? The wrong model breaks both conversion and support load.
The concrete problem: Billing API charge types
Billing API offers three main charge types:
Recurring Application Charge — Fixed monthly or annual subscription. Most common model for feature tiers (Basic / Pro).
Usage-Based Charge (with cap) — Variable fee by order volume, API calls, or transaction count; monthly cap gives store owners predictability.
One-Time Application Charge — Single setup, migration, or premium module unlock.
Free Trial — Trial before subscription starts; approved charge activates when trial ends (unless cancelled).
Flow always requires store owner approval: app creates charge → Shopify admin approval screen → added to Shopify invoice each billing period.
Decision framework and checklist
Business model fit
- Value is ongoing and tied to feature set → recurring tier
- Value scales with volume (orders, syncs, reports) → usage + cap
- One-time project/service revenue → one-time charge
- Low entry barrier + upsell → freemium or short trial + paid plan
Store owner perspective
- Price is clear; no hidden fees (visible on approval screen)
- Trial duration and automatic transition clearly stated
- Plan downgrade/cancellation available from admin
- Warning before usage cap exceeded (app-side)
Technical implementation
- Charge creation + charge ID stored after approval
-
app_subscriptions/updatewebhook listens for status changes - Access control tied to charge status (trial ended, payment failed)
- No data loss on plan change; only feature gates change
Policy compliance
- No off-App-Store payment
- Billing API required unless specific exception scenarios apply
Early decision
- Billing designed early, not "we'll add it after MVP" (late migration is painful)
Summary: Standard SaaS → recurring + trial. Variable volume → usage + cap. Project-based revenue → one-time.
Billing flow (developer side)
Billing API implementation typically follows:
- Create charge during install or plan selection (recurring, usage, or one-time)
- Redirect store owner to Shopify approval screen
- Store charge ID and status in database after approval
- Capture cancel, freeze, or plan changes via
app_subscriptions/updatewebhook - Enable/disable features based on charge status
Shopify CLI and App Remix template provide much of this scaffold; the real product decision is plan count, trial duration, and usage cap definition. From the store owner perspective, the flow is transparent: plan name and amount appear on approval screen, charge appears on Shopify invoice, cancellation happens from admin.
If considering freemium, define upfront what is free vs paid. Automatic transition at trial end should be reminded via email and in-app banner; surprise invoices are a top churn driver.
Do not over-design tiers: three clear plans (entry, growth, advanced) suffice for most B2B SaaS. Each new tier increases support and documentation load. In usage-based models, cap must be visible on the approval screen.
Common mistakes
Accepting off-App-Store payment. Policy violation; app can be delisted.
Cutting access abruptly when trial ends. Creates data loss perception; consider grace period or downgrade plan.
Not stating usage cap. Store owners get invoice shock; churn and negative reviews increase.
Checking charge status only via polling. Without webhooks, subscription cancellation is detected late; access and data become inconsistent.
Deleting data on plan change. Correct apps change feature access only; settings are preserved.
Designing pricing after development. Billing API integration ties to auth and webhook architecture; late addition requires refactor.
Frequently asked questions
Where does the store owner see app charges?
On the Shopify admin invoice, alongside other Shopify line items. No separate card payment or direct transfer to developer is required.
What happens if the app is removed before trial ends?
If no approved recurring charge was created, no charge applies. Removal during active trial is generally free.
Can you offer annual plans?
Yes. Billing API supports annual recurring charges; discounted annual pricing is a common tactic to reduce churn.
Is Billing API required for custom apps?
Required for public App Store apps. If you build a custom app for one store and bill outside App Store, different commercial arrangements apply — still check Shopify policies.
Next step
Pricing model is part of product-market fit; it should be clarified as early as technical integration. To evaluate Billing API and subscription flow for your project, write to info@murattanriover.com.tr.