Regini Partner API
Base URL: https://api.regini.finance/partner/v1
Note: This documentation is subject to change. Endpoints, request/response fields, and behaviours may be updated as the platform evolves. We will communicate breaking changes to partners in advance.
What Regini is
Regini is a stablecoin savings platform. We give people in Kenya a way to move KES into USDC (a dollar-pegged digital asset) via M-Pesa, hold it in a segregated on-chain account, and withdraw back to M-Pesa at any time. Users benefit from USD stability and, in Phase 2, dollar-denominated yield.
The Partner API is how you embed this into your own product. Your users interact with your frontend. Your backend calls Regini. We handle everything below the surface.
Who does what
| Your responsibility | Regini's responsibility |
|---|---|
| User identity and KYC verification | Opening and custodying the USDC account |
| Your frontend and UX | KES ↔ USDC conversion at the live FX rate |
| Calling the Partner API from your backend | M-Pesa STK push (deposits) and M-Pesa payout (withdrawals) |
Storing the account_id we return |
Sending signed webhooks to notify your system |
| Reconciliation against your own records | Maintaining the immutable transaction ledger |
Fund segregation
Each partner has a dedicated, segregated treasury: a separate on-chain wallet that holds only your users' funds. There is no commingling with Regini's own pool or with any other partner's funds.
You can query your treasury balance, AUM, and float surplus at any time via GET /summary. These are informational, Regini monitors and manages float cover operationally.
How the integration works
Your backend is the only system that ever talks to Regini. Your users never call our API directly, and they never need to know Regini is involved.
A typical deposit flow:
1. POST /accounts → provision a Regini account for your user
2. GET /accounts/{id}/deposit-quote → show the user the rate and fee
3. POST /accounts/{id}/deposits → trigger the M-Pesa STK push to their phone
4. Receive deposit.completed webhook → funds are credited, update your own records
Phase 1 / Phase 2
| Phase | What's live |
|---|---|
| Phase 1 (now) | Account creation, KES deposits via M-Pesa, KES withdrawals via M-Pesa, webhooks |
| Phase 2 (upcoming) | Dollar-denominated yield on held balances |
Yield is not active in Phase 1. Accounts provisioned today will automatically participate in Phase 2 once it goes live for your program, with no re-integration required.
Fees
| Fee | Rate | Applies to |
|---|---|---|
| FX spread | 0.75% (75 bps) on the mid-market rate | Every deposit and withdrawal |
| Performance fee | 15% of yield generated | Phase 2 only, applied to gross yield before crediting user accounts |
The FX spread is built into the quoted rate, users see the all-in rate in every quote response, not a separate line item. Your program can add an optional additional spread on top (see Rate Quotes & Spread).
Sections
| Section | Description |
|---|---|
| Partner Onboarding | Steps from first contact to going live |
| Partner Portal | Web portal, monitoring, configuration, and admin |
| Platform Overview | Architecture, tech stack, and system design for technical evaluation |
| Security & Compliance | Security posture, data handling, and audit trail |
| Authentication | API key setup and scopes |
| Accounts | Provisioning and retrieving accounts |
| Deposits | KES → USDC via M-Pesa |
| Withdrawals | USDC → KES via M-Pesa |
| Balance & Transactions | Per-account balances and bulk transaction history |
| Rates, Summary & Programs | FX rates, financial summary, and program listing |
| Webhooks | Event notifications and signature verification |
| Rate Quotes & Spread | How FX rates and spreads work |
| Sandbox | Testing without real money or M-Pesa flows |
| Error Reference | All error codes |
| API Reference | Interactive OpenAPI explorer |