Mona Collections allows you to set up recurring payments and subscriptions with flexible scheduling options. Whether you need weekly, monthly, or custom intervals, our collections system handles the complexity of recurring billing while providing your customers with transparent control over their payment schedules.The system supports both fixed amount and variable collections with flexible scheduling options including weekly, monthly, and quarterly frequencies. Customer consent management ensures transparent terms, while automatic and merchant-triggered debit options give you control over collection timing. Real-time status tracking and webhook notifications keep you informed throughout the collection lifecycle.


Collection Types
Scheduled Collections
Perfect for installment payments with predetermined amounts and dates. Customers see exactly when and how much will be debited.Subscription Collections
Ideal for recurring services with consistent billing cycles. Set up once and let the system handle ongoing collections.Debit Types
MONA (Auto-scheduled)
Mona automatically handles the scheduling and execution of debits based on your configuration.MERCHANT (Manual trigger)
You have full control over when collections are triggered, perfect for event-driven billing. You still cannot debit more than the consented amount or before the intervals your customer agreed to—you simply control the exact timing of collection execution within those boundaries.How It Works
The collections process follows these key steps:- Create Collection: Use the create collection endpoint to set up a recurring payment schedule
- Initialize SDK: Set up the Mona Collections SDK in your app with your merchant key
- Request Consent: Use the collection ID (accessRequestId) to request user consent for the collection
- Monitor Status: Handle consent responses and collection lifecycle events
Platform Integration
Installation
Usage
Collection Lifecycle
1. Create Collection (Backend)
First, create a collection on your backend using the API:2. Request User Consent (SDK)
Use the returned collection ID to request user consent through the SDK.3. Monitor Collection Status
Track collection status through webhooks or polling:NOT_STARTED
- Collection created, awaiting consentACTIVE
- Collection consented and activePAUSED
- Collection temporarily pausedCOMPLETED
- All scheduled payments completedCANCELLED
- Collection cancelled
State Management
Collection Events
Event Description | Web | React Native | Flutter |
---|---|---|---|
Collection consent successful | Not yet documented | Success callback in useCollections | Success callback in createCollection() |
Collection consent failed | Not yet documented | Error callback in useCollections | Error callback in createCollection() |
Initialize consent flow | Not yet documented | initiate(accessRequestId) | collectionsConsent() |
Operation in progress | Not yet documented | loading boolean | SDK state streams |
User authenticated | Not yet documented | - | AuthState.loggedIn |
Platform-Specific APIs
React Native Hooks:useCollections()
- Main hook for collection managementloading
- Boolean indicating if operation is in progresserror
- Error object if operation fails
authStateStream
- Monitor user authentication statussdkStateStream
- Monitor overall SDK state
Next Steps
- Design Collection Schedule: Plan your recurring payment frequency and amounts
- Implement Backend: Set up the create collection endpoint
- Integrate SDK: Choose your platform and implement the consent flow
- Test Thoroughly: Test the complete collection lifecycle in sandbox
- Monitor Collections: Set up webhooks to track collection status changes