https://app.kulmipay.com/api/v1/subscriptions/plans/
The POST endpoint performs an upsert: if a plan with the given name already exists on your account, the request updates it instead of creating a duplicate. Plan names are unique per business account.
Create or update a plan
POST /api/v1/subscriptions/plans/
Request parameters
The plan name. This is the unique key — if a plan with this name already exists on your account, the request updates it. Alphanumeric characters only, up to 32 characters.
The billing amount per cycle, as a decimal string, for example
"2999.00".The currency for billing. One of:
KES, USD, EUR, GBP.The number of
frequency_unit intervals between billing cycles. For example, a value of 1 with frequency_unit M means charge every 1 month.The unit of billing frequency. One of:
D— dailyW— weeklyM— monthly (default)Y— yearly
The total number of times the customer should be billed. After
billing_cycles successful charges, the subscription moves to COMPLETE. Defaults to 11.Your internal reference ID for this plan, up to 45 characters.
A URL to redirect the customer to after they complete card setup for a subscription on this plan. Can be overridden per subscription.
cURL
List plans
GET /api/v1/subscriptions/plans/
Returns all billing plans on your account, ordered by creation date (newest first).
Retrieve a plan
GET /api/v1/subscriptions/plans/{plan_id}/
Returns a single plan by its plan_id (alias ID).
Plan object
The plan alias ID. Use this value as
plan_id when creating a subscription.The plan name.
The billing amount per cycle.
The billing currency.
The number of
frequency_unit intervals between billing cycles.The billing frequency unit. One of
D, W, M, or Y.The total number of billing cycles before the subscription completes.
Your internal reference ID.
A hosted Kulmi Pay page for this plan. You can share this URL with customers to let them subscribe directly without a custom integration.
The URL customers are redirected to after card setup.
ISO 8601 timestamp of when the plan was created.
ISO 8601 timestamp of the last update to this plan.
Example response
Changing the
amount or currency on an existing plan takes effect for the next billing cycle on all active subscriptions linked to it. Subscribers are not notified automatically — communicate pricing changes to your customers before updating a live plan.