Skip to main content
Cresora Commerce
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
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
  }'
Python
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"
Node.js
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

EventWhen
recurring.invoice.upcoming72 hours before each charge
recurring.invoice.paidSuccessful charge
recurring.invoice.failedFailed charge
ach.renotification_requiredNACHA 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

intervalinterval_countMeaning
daily1Every day
weekly1Every week
weekly2Every 2 weeks
monthly1Every month
monthly3Every quarter
yearly1Annually