Documentation Index
Fetch the complete documentation index at: https://docs.spotflow.one/llms.txt
Use this file to discover all available pages before exploring further.
Mobile Money Subscriptions
Spotflow supports recurring billing through mobile money, allowing you to charge customers using their Mobile Money (MoMo) wallets on a set schedule without requiring them to re-authorise each payment manually. This page covers how mobile money subscriptions work, how they differ from card subscriptions, and how to set them up.How MoMo Subscriptions differ from Card Subscriptions:When a customer subscribes with a credit card, future charges happen automatically in the background without the customer doing anything.Mobile Money networks do not allow silent background charges. Because of telecom safety rules, the customer needs to approve the recurring payment.
What Spotflow automates:
- Automatic reminders: Sent to customers via email before their next billing due date.
- Renewal checkout links: Built into reminder emails so customers can log in and pay early.
- Direct phone prompts (STK Push): Sent directly to the customer’s phone on the exact due date for instant PIN approval.
- Smart retries: Automated follow-ups if the due-date payment fails.
- Webhooks: Real-time system notifications sent directly to your server when states change.
How It Works
When a customer pays via mobile money for the first time on a subscription plan, Spotflow initiates a mandate request. A mandate is the customer’s standing permission to debit their mobile money wallet on a recurring basis. The customer receives a prompt on their phone to approve the mandate. Once they approve it, Spotflow can charge their wallet automatically on each billing cycle without requiring them to take any action again. If the mandate is declined or expires, the subscription will not renew until a new one is authorised.How This Differs from Card Subscriptions
Card subscriptions on Spotflow use card tokenisation—after the first successful payment, a secure token replaces the card details for future charges. Mobile money subscriptions work differently:| Card Subscriptions | Mobile Money Subscriptions | |
|---|---|---|
| How recurring charges work | Card token stored after first payment | Mandate approved by customer |
| Customer action required | First payment only | Mandate approval on sign-up |
| Renewal trigger | Automatic via stored token | Automatic via active mandate |
| Failure scenario | Card decline or expiry | Mandate declined, expired, or insufficient balance |
| Supported currencies | USD, NGN, GHS, and others | Dependent on mobile money provider and region |
Supported Regions and Providers
Mobile money subscriptions are available in the following regions:| Country | Provider |
|---|---|
| Ghana | MTN Mobile Money, Vodafone Cash, AirtelTigo Money |
| Kenya | M-Pesa |
Support for additional providers and regions is being rolled out. Contact support@spotflow.one to check availability for your region.
The Subscription Lifecycle
The step-by-step process below shows how a subscription moves from start to finish:Create a Subscription Plan
Create a plan the same way you would for card subscriptions. There is no difference at the plan level. Before you can subscribe a user, you must create a Plan that sets the price, currency, and frequency (See Create Subscription Plan for the full API reference.
weekly, monthly, or yearly).Collect the First Payment
The customer authorizes the initial payment. Once successful, their active subscription cycle officially begins. When initiating the first charge, include the
planId and set the payment channel to mobile money. Spotflow will trigger the mandate request automatically.Receive Renewal Reminders
Before the next billing period ends, Spotflow automatically sends out reminder emails containing a secure checkout link:
- Weekly Plans: Reminders are sent 3 days before expiry.
- Monthly & Yearly Plans: Reminders are sent 1 week before expiry, and again 3 days before expiry.
Approve the Due Date Prompt
If the customer has not manually renewed early via the checkout link, Spotflow triggers an automatic request on the exact due date. A payment prompt pops up directly on the customer’s mobile phone screen asking them to enter their mobile wallet PIN.
Handle Retries or Cancellation
If the transaction fails (e.g., phone turned off, insufficient funds, or prompt timed out):
- Spotflow sends a retry email containing a fresh checkout link every 3 days past the due date.
- If no payment is completed by the 4th day after the due date, the system automatically changes the subscription status to
cancelled.
Subscription Statuses
As a subscription progresses, it will reflect one of these four system statuses:| Status | Description |
|---|---|
active | The subscription is healthy, and the customer is waiting for their next billing cycle prompt. |
failed | The recurring billing cycle failed completely after exhausting all automatic retry updates. |
completed | The subscription successfully reached its maximum number of set cycles. |
cancelled | The subscription was stopped manually by you, by the customer, or dropped due to non-payment. |
Subscription Management Endpoints
Manage existing subscriptions using these standard REST routes:| Method | Endpoint | Description |
|---|---|---|
GET | /subscriptions | Returns a paginated list of all customer subscriptions. |
GET | /subscriptions/{subscription-id} | Returns information for a single specific subscription record. |
GET | /subscriptions/count/{plan-id} | Returns a summary breakdown of totals grouped by status (active, cancelled, etc.). |
POST | /subscriptions/{subscription-id}/activate | Instantly reactivates a previously cancelled subscription profile. |
POST | /subscriptions/{subscription-id}/cancel | Immediately cancels an active subscription and halts future prompts. |
Webhooks & Events
Spotflow sends an HTTPPOST webhook notification payload to your server whenever a subscription changes state. All subscription webhooks share the exact same JSON format structure.
Webhook Payload Structure
Mandate Expiry and Renewal Failures
If a customer’s mandate expires or a charge fails after renewal reminders, Spotflow will not automatically retry. You have two options: Re-initiate the mandate Send the customer back through the payment flow with the sameplanId. This will trigger a new mandate request.
Cancel the subscription
If the customer no longer wishes to continue, cancel their subscription via the Cancel Subscription endpoint.
Cancelling a Mobile Money Subscription
Cancellation works the same way as card subscriptions.- Cancel a single customer’s subscription: Cancel Subscription
- Cancel the entire plan: Cancel Plan — this cancels all active mandates and subscriptions under the plan
- Reactivate a cancelled subscription: Activate Subscription
Best Practices
- Always collect the customer’s phone number at enrolment. Spotflow needs it to route the mandate request to the correct wallet.
- Communicate the mandate clearly. Tell customers they will receive a prompt to approve recurring charges before they start the payment flow. Unexpected prompts lead to declines.
- Handle mandate failures gracefully. Build a re-enrolment flow for customers whose mandates expire or are declined, so they can re-authorise without losing their subscription.
- Test in test mode first. Use Spotflow’s test environment to simulate mandate approvals, declines, and renewal failures before going live.

