Skip to main content
A static checkout URL is a shareable link for one published product. You can use the link exactly as Kelviq generates it, or add query parameters to control what the customer sees when checkout opens. Static links work well on pricing pages, in emails, and behind a purchase button. If the checkout needs data that only your backend knows, use the Checkout API instead.

Copy the checkout URL

  1. Open Product Catalog → Products.
  2. Select a published product.
  3. Click Get link or Copy checkout link.
  4. Choose the plans and default billing period.
  5. Copy the generated URL.
Production links use this format:
Sandbox links include /sandbox/:
The product UUID is part of the copied link. Do not replace it with the old product identifier.

Available query parameters

The dashboard adds the plan, billing-period, and discount options you select. You can add customer_id and success_url when your integration needs them. Use these values for charge_period: The selected plan must support the selected period. If you use enabled, include the value from plan_identifier in that list. Use ? before the first query parameter and & before each additional parameter:
Using URL and URLSearchParams is safer than joining strings by hand. It handles characters that must be encoded:
The resulting URL is equivalent to:

Common configurations

Select a plan and billing period

Show the Starter and Pro plans, with Pro monthly selected when checkout opens:

Hide discount-code entry

discounts_enabled defaults to true.

Apply a discount code

The discount must be active and valid for the selected product, plan, currency, and date. Learn how checkout discounts work →
Use the stable, unique customer ID from your application. When the customer record already has an email address, Kelviq can prefill it at checkout.
A customer-specific URL should not be published as a general checkout link. Query parameters can appear in browser history, analytics, and server logs. Use an opaque customer ID and never put an email address, API key, or secret in the URL.

Redirect after successful checkout

Encode the full destination URL. In JavaScript, URLSearchParams does this for you. In other environments, use the standard URL-encoding function provided by the language or framework.
A visit to success_url is not proof of payment. Customers can open that page directly. Confirm payment through checkout.completed, the resulting subscription or order, or a current entitlement check.

Static URL names and API names

Static checkout links use snake_case query parameters. The Checkout API and backend SDKs use camelCase request fields. Do not put camelCase names into the URL. For example, successUrl belongs in an API request; success_url belongs in a static checkout URL.

When to use the Checkout API

Use the Checkout API or a backend SDK when you need per-session options that are not part of the static URL contract, including:
  • a cancellation URL;
  • feature quantities;
  • location-based pricing through the customer’s IP address;
  • custom amounts, currency, or tax behavior;
  • a locked email or default billing country; or
  • checkout metadata for webhook correlation.
The API creates a short-lived checkout session and returns checkoutUrl and checkoutSessionId. Keep the server API key on your backend. Create a checkout session with the API →
  1. Enter sandbox mode and copy a sandbox checkout link.
  2. Add one customization at a time.
  3. Open the link and confirm the visible plans, selected period, discount behavior, and customer details.
  4. Complete a sandbox checkout.
  5. Confirm the success redirect and the checkout.completed webhook.
Keep sandbox products, customers, discounts, and API credentials together. A live customer ID or discount code will not work against a sandbox checkout.

Troubleshooting