Recurring Payment Service

Overview

The Recurring Payment Service enables you to process subscription billing and manage recurring payment mandates using the Node.js SDK. Once a customer has set up a mandate (through the Payment Service's setupRecurring), this service handles subsequent charges without requiring customer interaction.

Business Use Cases:

  • SaaS subscriptions - Charge customers monthly/yearly for software subscriptions

  • Membership fees - Process recurring membership dues for clubs and organizations

  • Utility billing - Automate monthly utility and service bill payments

  • Installment payments - Collect scheduled payments for large purchases over time

  • Donation subscriptions - Process recurring charitable donations

Operations

Operation
Description
Use When

Process a recurring payment using an existing mandate. Charges customer's stored payment method for subscription renewal without requiring their presence.

Subscription renewal, recurring billing cycle, automated payment collection

Cancel an existing recurring payment mandate. Stops future automatic charges when customers end their subscription or cancel service.

Subscription cancellation, customer churn, mandate revocation

SDK Setup

const { RecurringPaymentClient } = require('hyperswitch-prism');

const recurringClient = new RecurringPaymentClient({
    connector: 'stripe',
    apiKey: 'YOUR_API_KEY',
    environment: 'SANDBOX'
});

Common Patterns

SaaS Subscription Billing Cycle

Process monthly subscription renewals using stored mandates.

spinner

Flow Explanation:

  1. charge (recurring) - When a subscription billing cycle triggers, call the charge method with the stored mandateReference from the initial setupRecurring.

  2. Subsequent charges - For each subsequent billing cycle, repeat the charge method call with the same mandateReference.

  3. revoke on cancellation - When a customer cancels their subscription, call the revoke method with the mandateReference to cancel the mandate.

Next Steps

Last updated

Was this helpful?