Set up recurring billing

- Open a draft plan and make sure it is set to Paid.
- Under Billing cycles, select the recurring intervals you want to offer, such as 28 days, Monthly, 3 Months, 6 Months, or Yearly.
- Enter the price for each interval.
- Click Save.
A 28-day subscription renews every four weeks. It is not the same as a calendar-month subscription. If the 28 days option is not visible for your organization, contact Kelviq support to have it enabled.
Subscription lifecycle
Kelviq handles recurring payments automatically. This includes:- Charging the saved payment method at the end of each billing cycle
- Sending receipts and tax invoices
- Retrying failed card payments
- Applying prorated charges when a customer changes plans during a billing cycle
Change a subscription
By default, plan upgrades and downgrades take effect immediately. As soon as the change is processed, Kelviq applies the new plan and its feature limits. For a paid change, you can wait until payment succeeds before activating the new plan. PasspaymentBehavior: "activate_on_payment" when you update the subscription:
paymentBehavior to keep the default immediate-update behavior.
Control how a change is billed
Proration decides what the customer pays for the rest of the period: charged now (IMMEDIATE_CHARGE), added to the next invoice (PRORATE_NEXT_INVOICE), or skipped (NO_PRORATION). Set your defaults in Settings → Subscription proration, or pass prorationBehavior when you update a subscription.
Proration walks through each option with an upgrade and a downgrade example. The defaults are also available through the API as updateSubscriptionProrationBehavior and migrateSubscriptionProrationBehavior on PATCH /organizations/settings/.
Wait for payment before changing access
activate_on_payment keeps the customer’s current subscription active while payment for the change is pending. This prevents an unpaid plan change from replacing working access.
Card payments that do not require authentication are usually completed during the update request, so the status change can happen immediately. When the payment method requires customer action, continue using the existing subscription until the updated subscription becomes
active.
With
activate_on_payment, the new plan goes live after its payment succeeds. Check the subscription’s plan or the customer’s entitlements before granting access to the new plan.Upgrades
Under the defaultIMMEDIATE_CHARGE proration behavior, Kelviq prorates the price change against the time left in the current billing period. It credits the unused portion of the old plan, charges for the remaining portion of the new plan, and collects the net difference. See Control how a change is billed for the other options.
With activate_on_payment, Kelviq waits for that payment to succeed before activating the upgraded plan.
For example, if a customer moves from a $100 monthly plan to a $200 monthly plan halfway through the period, the approximate calculation is:
The exact amount depends on when the upgrade is processed. Existing usage counters are retained and evaluated against the new plan’s limits.
Downgrades
Under the default payment behavior, downgrades also apply immediately. If the customer has unused value on the higher-priced plan, Kelviq converts it to account credit and applies that credit to future invoices.Cancel a subscription
When cancelling, choose whether the subscription should end immediately or at the end of the current billing period. A plan downgrade and a subscription cancellation are separate actions: the downgrade follows the payment behavior you choose, while the cancellation follows the timing option you select.Pause a subscription
A paused subscription stops billing and stops access. The customer isn’t charged, their entitlements returnhasAccess: false, and plan changes are blocked until the subscription resumes. Cancelling stays available.
When a customer tries to cancel, Kelviq shows the offer you’ve set for the reason they give: a discount, a pause, or a link to your support team. If the offer is a pause and they accept it, they pick a length from the ones you allow: 1, 3, or 6 months. This works in the customer portal and from a Cancel button in your own app. See Retention offers.
A pause has to cover at least one full billing period, so yearly plans can’t be paused. Only an active subscription can be paused, not one on trial, past due, already paused, or scheduled to cancel. Free and manually billed subscriptions can’t be paused.
Resume a subscription
A paused subscription resumes on its own at the end of the pause. Choose what happens on resume in Settings → Retention → Advanced settings:
For a monthly plan billed on the 1st, paused on 10 September and resumed on 20 October, reset charges a full month on 20 October and bills on the 20th from then on. Keep billing day charges nothing and bills on 1 November as before, which gives the customer free access from the 20th to the 1st. A customer who resumes inside a period they’ve already paid for is never charged again, whichever behavior you pick.
On resume, entitlements come back with usage reset to zero and a fresh period.
What changes while paused
The subscription hasstatus: "paused", pausedAt, and pauseResumesAt (null for an open-ended pause). Kelviq sends subscription.paused and subscription.resumed webhooks, whichever surface the change came from. Webhook payloads use snake_case, so the same fields arrive there as paused_at and pause_resumes_at. Renewals that would fall inside the pause are skipped silently, so a paused subscription sends no other events until it resumes.
If you cache entitlement checks, clear them when you receive subscription.paused, otherwise the customer keeps access until the cache expires. Both SDKs have a call for it: client.entitlements.invalidateCache({ customerId }) in Node and client.entitlements.invalidate_cache(customerId=...) in Python.
Retention offers
Before a customer cancels, you can offer them a reason to stay. In the dashboard retention settings, switch retention on and map each cancellation reason to an offer:- Discount: a percentage off for a set number of billing cycles, applied as a single-use coupon.
- Pause: a break of one of the lengths you allow. Billing and access stop, then resume on a renewal boundary.
- Support: a link to a booking page or support form, for reasons a conversation can fix.
cancellationFeedback.
An offer must be the one configured for the reason the customer picked, and eligibility is checked again when it is accepted. The repeat policy you set decides whether a customer who has already taken an offer can be offered it again, so discounts cannot be stacked by reopening the cancellation flow.
Refund a cancelled subscription
When a subscription is canceled mid-period, you decide whether to refund: in full, in part, or not at all. For a usage-based subscription, work out the amount from the customer’s usage and the time left. Then open the corresponding order in the dashboard and issue the full or partial refund there.Failed subscription payments
After a failed card payment, the customer’s authorization stays in place, so Kelviq can retry and bill future cycles. If the customer pays the failed card invoice manually, automatic payments remain active. Kelviq will still use the saved payment method for the next billing cycle.Card payment retries
When an automatic card payment fails, the subscription moves topast_due. Kelviq retries the payment up to eight times over the next 14 days. If recovery is unsuccessful, Kelviq cancels the subscription.
After each failed attempt, Kelviq emails the customer a link to pay the invoice. The customer can also use the Customer Portal to update their payment method.
You do not need to schedule retries, send card payment links, or ask the customer to set up automatic payments again. Kelviq handles this recovery flow.
Card and UPI AutoPay renewals follow this retry schedule. If the payment still hasn’t gone through after 14 days, the subscription is canceled.