POST /subscription-plans{
"name": "Premium Plan",
"description": "Full access to all premium features",
"metadata": {
"features": ["unlimited_api_calls", "priority_support"]
}
}POST /subscription-plans/{planUid}/prices{
"amount": "2999",
"currency": "NGN",
"interval": "month",
"intervalCount": 1,
"trialPeriodDays": 14
}POST /subscription-checkout-sessions{
"priceUid": "price_abc123",
"billingMode": "FIXED",
"customer": {
"email": "customer@example.com",
"firstName": "John",
"lastName": "Doe"
},
"successUrl": "https://yourapp.com/success",
"cancelUrl": "https://yourapp.com/cancel"
}POST /subscription-checkout-sessions{
"billingMode": "METERED",
"targetPrice": {
"targetCurrency": "NGN",
"targetAmount": "5000.00"
},
"customer": {
"email": "customer@example.com",
"firstName": "Jane",
"lastName": "Smith"
},
"successUrl": "https://yourapp.com/success",
"cancelUrl": "https://yourapp.com/cancel"
}approvalUrl in the response. Direct your customer to this URL where they will:successUrl{
"sessionUid": "session_abc123",
"approvalUrl": "https://checkout.kuvarpay.com/approve/session_abc123",
"status": "pending"
}GET /subscriptions/{subscriptionUid}PATCH /subscriptions/{subscriptionUid}{
"status": "PAUSED",
"cancel_at_period_end": true,
"metadata": {
"reason": "Customer requested pause"
}
}DELETE /subscriptions/{subscriptionUid}{
"cancel_at_period_end": false,
"reason": "Customer cancellation"
}GET /subscriptions/{subscriptionUid}/invoicesPOST /subscriptions/{subscriptionUid}/invoices/metered{
"amount": "150.00",
"currency": "NGN",
"usage_description": "API calls for January 2024",
"due_date": "2024-02-15T10:00:00Z",
"charge_schedule": "scheduled",
"metadata": {
"period": "2024-01",
"service": "api"
}
}immediate: Charge the invoice immediately upon creationscheduled: Charge at the specified due_date (or 24 hours if not provided){
"amount": "750.00",
"currency": "NGN",
"usage_description": "Premium API usage - urgent billing",
"charge_schedule": "immediate"
}{
"amount": "2000.00",
"currency": "NGN",
"usage_description": "Monthly data processing usage",
"due_date": "2024-02-01T09:00:00Z",
"charge_schedule": "scheduled"
}POST /subscription-invoices/{invoiceUid}/charge{
"amount": "15000",
"currency": "NGN"
}subscription.created - New subscription createdsubscription.updated - Subscription details changedsubscription.cancelled - Subscription cancelledsubscription.activated - Subscription became activesubscription.trial_ended - Trial period endedsubscription.payment_failed - Payment attempt failedsubscription_invoice.created - New invoice generatedsubscription_invoice.paid - Invoice successfully paidsubscription_invoice.payment_failed - Invoice payment failed/openapi.yaml.| Endpoint | Method | Description |
|---|---|---|
/subscription-plans | POST | Create subscription plan |
/subscription-plans/{planUid} | GET | Get plan details |
/subscription-plans/{planUid}/prices | POST | Create price for plan |
/subscription-checkout-sessions | POST | Create checkout session |
/subscriptions/{subscriptionUid} | GET | Get subscription |
/subscriptions/{subscriptionUid} | PATCH | Update subscription |
/subscriptions/{subscriptionUid} | DELETE | Cancel subscription |
/subscriptions/{subscriptionUid}/invoices | GET | List invoices |
/subscriptions/{subscriptionUid}/invoices/metered | POST | Create metered invoice |
/subscription-invoices/{invoiceUid}/charge | POST | Charge invoice |
/subscription-currencies | GET | List supported currencies |
webhooks.mdc