Article

Billing and credits

How pricing, credits, subscriptions, and order history fit together in the SvelteKit template.

ZShip uses credits as the product-level spending unit and plans as the commercial packaging around those credits.

What users can do

  • Compare plans on /pricing
  • Review current balance from the dashboard credits surfaces
  • Inspect active subscription status and previous purchases through pay-service BFF routes

How the flow works

1. The visitor chooses a plan on the pricing page. 2. Checkout is created through the SvelteKit pay-service proxy (src/routes/api/pay/*). 3. Successful payment updates subscription state and the credit ledger. 4. Dashboard pages read the latest balance and order records from the same backend state.

What to validate before launch

  • Pricing labels and descriptions match the plans configured in the pay service.
  • Credit amounts are easy to understand from a user perspective.
  • Refund expectations are documented and linked from support.
  • The support team knows which cases should go through tickets versus payment provider portals.

Common launch questions

When should I send users to pricing?

Send users to pricing when they run out of credits, need a higher plan, or want to understand what each tier unlocks.

Where should refund requests go?

Use the support flow documented in Support and refund. Order history should expose enough context for a product-level refund request.

Previous Next