← NotesTR
4 min read

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/update webhook 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:

  1. Create charge during install or plan selection (recurring, usage, or one-time)
  2. Redirect store owner to Shopify approval screen
  3. Store charge ID and status in database after approval
  4. Capture cancel, freeze, or plan changes via app_subscriptions/update webhook
  5. 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.