Unified Payments
Reevit Payments allows you to accept funds from customers globally via a single API. We abstract away the technical debt of integrating multiple Gateways, Mobile Money providers, and Bank Transfer systems into one standardized flow.
🏆 The Reevit Advantage
🏢 For Business Growth
- Maximized Acceptance: If a card fails on one provider, we instantly retry on another. Never lose a sale to a gateway outage again.
- Optimized Fees: Route transactions to providers with the lowest processing fees based on the customer’s region.
- Unified Reporting: View your consolidated revenue across Hubtel, Paystack, and Stripe in a single dashboard.
💻 For Engineering Velocity
- Standardized Lifecycle: No more mapping “Success” from paystack to “Completed” from Hubtel. Every transaction follows a unified state machine.
- Developer-First SDKs: Use our typed libraries to handle payment intents, idempotency, and error handling out of the box.
- One Integration: Add a new country or payment method by simply toggling a switch in the dashboard—no code changes required.
🔄 The Transaction Lifecycle
Every payment on Reevit follows a secure, 5-step lifecycle:- Intent Created: Your server requests a Payment Intent.
- Smart Routing: Reevit selects the optimal connection based on your Routing Rules.
- Customer Action: The customer completes the required action (OTP, PIN, or 3DS).
- Transaction Finalized: The PSP confirms success to Reevit.
- Verified Webhook: Your application receives a standardized notification to fulfill the order.
🛠️ Implementation
Creating a Payment Intent
To start a transaction, use thecreateIntent method in the SDK. This reserves the payment and returns a client_secret if frontend action is needed.
Reevit automatically injects the correlation metadata needed for PSP webhooks. Use
metadata for your own fields like order IDs or cart IDs.Handling Next Actions
If a payment requires user input (like a 3D Secure redirect or a Mobile Money prompt), the status will berequires_action.
- Redirect: For cards, the SDK provides a URL to redirect the user to finish the secure check.
- Asynchronous (MoMo): For mobile money, the payment stays in a
processingstate until the customer approves the prompt on their phone.
✅ Best Practices
- Always use Idempotency: Provide an
idempotency_key(like an Order ID) to prevent double-charging customers during network retries. - Fulfill on Webhooks: Never fulfill an order based solely on a frontend redirect. Wait for the
payment.succeededwebhook event. - Use Test Mode: Develop your integration using
pfk_test_...secretkeys to simulate different success and failure scenarios.

