Skip to main content
MeridianAccountPage is the merchant’s side of billing inside your app: what plan they are on, how much of their allowance they have used, and the controls to change or cancel.
It needs a MeridianProvider ancestor and an embedded Shopify app with App Bridge loaded, and it takes no returnUrl, because nothing on it starts a new subscription.
The page reads fine anywhere, but its two actions (Cancel subscription and Raise cap) require your app to be hosted on Meridian. Hosted elsewhere, they fail with PLAN_BUILDER_UNAVAILABLE.

Props

What it shows

The current plan’s name, and a badge that reads Active or Paused. Paused means Shopify could not take the last payment. The page tells the merchant that Shopify will retry automatically and that they should update their payment method in the Shopify admin. See Merchant subscription.

Usage this period

One row per metered event on the shop’s plan: the event’s name, how much has been consumed against what is included, and a bar. Going over the included quantity turns the row and its bar red and adds an Over limit badge. For an event that actually bills overage, the row also states the overage rate, the unit it applies to, and the monthly cap (“Overage 0.10per10translations,cappedat0.10 per 10 translations, capped at 5.00/mo”), and offers Raise cap. The unit is worded the same way as on the pricing page. A priced usage view states its cap but not its rate (“Overage billed on usage, capped at $200.00/mo”), because its rate can be a percentage.

Raising the cap

Shopify’s usage charges are bounded by a capped amount the merchant approves. Billing stops when they reach it, and raising it needs their approval again. Raise cap opens a dialog pre-filled with double the current cap. The new value has to be greater than the current one (a lower or equal cap is rejected on the field), and confirming sends the merchant to Shopify to approve it.
The dialogs are Polaris modals. window.confirm and window.prompt are silently suppressed inside the embedded admin’s cross-origin iframe, so a flow built on them appears to do nothing.

Cancelling

Cancel subscription asks for confirmation, then cancels right away. The dialog tells the merchant the plan ends now and paid features are turned off. Cancelling clears the shop’s plan, so feature gates stop granting on the next refresh. The page updates itself; onCanceled is for anything else your app needs to do.

When there is no plan

A shop with no subscription gets an empty state instead of the summary. Right after the merchant cancels from this page it reads “Choose a plan to get your features back.” instead of the new-install wording. Both show a View plans button when you passed onChangePlan. A newly installed shop lands here, so pointing onChangePlan at your pricing page completes the upgrade path.

Reading the same data yourself

Everything on this page comes from the snapshot useMeridian exposes: entitlements for the plan, its paused state and per-event usage, and plans for the configured terms. Server-side, getMe and getCustomer return the same payload.
Last modified on October 5, 2026