Skip to main content

Recurring Revenue. Automated.

Customers subscribe. We handle billing cycles, failed payments, and lifecycle management. You focus on your product.

How It Works

Customer subscribes → Billing cycle → Auto-charge → Repeat
Failed payment? The subscription enters past_due status until the payment situation is resolved.

Subscription States

StatusDescription
pendingAwaiting first payment
activeLive and billing normally
trialingIn free trial period
past_duePayment failed, awaiting resolution
canceledWill not renew after current period
pausedBilling paused temporarily

Billing Intervals

IntervalFrequencyBest For
WeeklyEvery 7 daysUsage-heavy products
MonthlyEvery monthStandard SaaS
QuarterlyEvery 3 monthsB2B software
YearlyEvery 12 monthsCommitted customers

Failed Payments

When a payment fails, the subscription transitions to past_due status. The customer is notified via email to update their payment method.

Managing Subscriptions

Cancel

Cancellation is always effective at the end of the current billing period. The customer retains access until the paid period ends.
POST /v1/actions/subscription-order/cancel-order
{
  "orderId": "550e8400-e29b-41d4-a716-446655440000"
}
Response includes currentPeriodEnd so you know when access expires.
There is no immediate cancellation option. Customers always retain access through the end of their paid period.

Upgrade/Downgrade

ScenarioBehavior
Upgrade mid-cycleTakes effect immediately
Downgrade mid-cycleTakes effect at the end of the current billing period
POST /v1/actions/subscription-order/change-tier
{
  "orderId": "550e8400-e29b-41d4-a716-446655440000",
  "newTierVersionId": "tier-version-uuid"
}

Metrics

MRR (Monthly Recurring Revenue)

Weekly subscription:    $10 × 4.33 = $43.30 MRR
Monthly subscription:   $29 × 1 = $29 MRR
Annual subscription:    $290 ÷ 12 = $24.17 MRR

Key Metrics

MetricWhat It Tells You
MRRMonthly recurring revenue
Churn% subscriptions canceled
LTVCustomer lifetime value
ARPUAverage revenue per user

Webhooks

Subscribe to subscription lifecycle events via webhooks. Configure webhook endpoints in Settings —> Webhooks.
Specific webhook event names are not listed here as they may change. Refer to the webhook configuration in your Dashboard for the current list of available events.
Webhook payloads use standard Waffo Pancake conventions:
  • IDs are UUID v4 format
  • Amounts in smallest currency units
  • Timestamps in ISO 8601 UTC
  • Billing frequency uses the billingPeriod field (e.g., monthly, yearly)

Customer Portal

Let customers manage their own subscriptions:
  • View details
  • Update payment method
  • Change plans
  • Cancel
  • Download invoices

Customer Portal

Self-service subscription management.

Best Practices

15-20% off yearly = lower churn + better cash flow.
Failed payment ≠ instant cancellation. Give time to update card.
Trial ending. Upcoming charge. No surprises.