Integration Guides
Recurring Billing Guide
Create and manage subscription plans and recurring payment schedules.
Cresora Recurring allows you to create subscription plans and automatically charge customers on a schedule.
Concepts
- Plan — defines the billing interval, amount, and merchant
- Subscription — links a customer's payment method to a plan
- Invoice — a scheduled charge generated from a subscription
Create a recurring plan
curl -X POST https://sandbox-api.cresoracommerce.com/api/v1/recurring/plans \
-H "Authorization: Bearer csk_test_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"merchant_id": "mrch_xxxxxxxxxx",
"name": "Monthly Software License",
"amount": "99.00",
"currency": "USD",
"interval": "monthly",
"interval_count": 1
}'import requests
resp = requests.post(
"https://sandbox-api.cresoracommerce.com/api/v1/recurring/plans",
headers={"Authorization": "Bearer csk_test_xxxxxxxxxxxx"},
json={
"merchant_id": "mrch_xxxxxxxxxx",
"name": "Monthly Software License",
"amount": "99.00",
"currency": "USD",
"interval": "monthly",
"interval_count": 1,
},
)
plan = resp.json() # plan["id"] = "plan_xxxxxxxxxxxx"const resp = await fetch("https://sandbox-api.cresoracommerce.com/api/v1/recurring/plans", {
method: "POST",
headers: {
Authorization: "Bearer csk_test_xxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
merchant_id: "mrch_xxxxxxxxxx",
name: "Monthly Software License",
amount: "99.00",
currency: "USD",
interval: "monthly",
interval_count: 1,
}),
});
const plan = await resp.json();Subscribe a customer
POST /v1/recurring/subscriptions
{
"plan_id": "plan_xxxxxxxxxxxx",
"payment_method": "card",
"card": {
"number": "4111111111111111",
"exp_month": 12,
"exp_year": 2028,
"cvv": "123"
},
"start_date": "2026-06-01"
}Webhook events
| Event | When |
|---|---|
recurring.invoice.upcoming | 72 hours before each charge |
recurring.invoice.paid | Successful charge |
recurring.invoice.failed | Failed charge |
ach.renotification_required | NACHA Reg E re-notification required (ACH plans) |
🔒NACHA Reg E — ACH recurring plans
For recurring ACH subscriptions, NACHA requires re-notification when the debit date or amount changes, or when sufficient time has elapsed since the original authorization. Cresora fires ach.renotification_required when this applies. You must send the re-notification to your customer before the next charge.
Intervals
interval | interval_count | Meaning |
|---|---|---|
daily | 1 | Every day |
weekly | 1 | Every week |
weekly | 2 | Every 2 weeks |
monthly | 1 | Every month |
monthly | 3 | Every quarter |
yearly | 1 | Annually |