Partner Onboarding
This page walks through everything that happens between first contact with Regini and your first live API call.
Overview
Onboarding is a one-time setup process handled jointly by you and Regini. It covers legal agreements, treasury setup, program configuration, and integration testing. Most partners complete it in one to two weeks.
Step 1 — Agreement and KYB
Regini is a compliance-focused financial platform. Before access is granted you will need to:
- Sign a Partner Agreement covering data handling, AML responsibilities, and acceptable use.
- Complete a KYB (Know Your Business) review, Regini will request standard business registration documents, director identification, and AML policies.
Regini handles the review. You will be notified once your organisation is approved.
Step 2 — Treasury setup
Regini provisions dedicated infrastructure for your tenant as part of onboarding. This setup is handled entirely by Regini, there is nothing you fund or configure directly.
Fiat wallet (Kotani Pay)
Each tenant receives a dedicated Kotani Pay fiat wallet. This wallet is used for:
- Deposits — collecting KES from your users via M-Pesa STK push.
- Withdrawals — paying KES out to your users via M-Pesa B2C.
Your tenant's Kotani Pay wallet is isolated from all other partners. Regini reconciles payment confirmations against this wallet and writes ledger entries atomically.
On-chain treasury (Turnkey)
Each tenant is provisioned a dedicated Turnkey sub-organisation containing a Solana wallet used for USDC treasury movements (deposits in, withdrawals out, yield operations).
Turnkey is a non-custodial signing service backed by hardware security modules (HSMs). Private keys are never accessible in plaintext at rest, and all signing is scoped to your sub-organisation. Regini operates these wallets on your behalf.
Each partner tenant has a dedicated ledger view of their users' USDC, balances are tracked separately per tenant and are never commingled at the accounting level.
Float visibility
The partner portal and the GET /summary API endpoint surface your users' aggregate USDC balance (aum_usdc), the USDC held in your treasury (treasury_balance_usdc), and the difference (float_surplus_usdc). These are informational, Regini manages float cover operationally.
Step 3 — Program and tenant configuration
Regini configures tenant-level feature flags at this stage. These act as a tenant-wide ceiling, individual accounts cannot opt in to a feature that is disabled at the tenant level:
| Flag | Description |
|---|---|
| Yield enabled | Whether accounts on your tenant can earn yield on held USDC (Phase 2). When enabled, accounts default to yield-on at provisioning, you can opt individual accounts out by passing yield_enabled: false on POST /accounts. When disabled, yield is off for all accounts regardless of what you pass. |
| Group accounts enabled | Whether group savings accounts can be provisioned for your tenant. |
These flags are set by Regini during onboarding and can be adjusted on request.
Regini also configures your program, which defines the terms under which your users save:
| Setting | Description |
|---|---|
spread_bps |
Regini's base FX margin: 75 bps (0.75%). Applied on top of the mid-market rate on every deposit and withdrawal. |
lock_days |
Optional minimum holding period for funds |
allocation_type |
Personal or group accounts |
You can add your own spread on top of the Regini base via PATCH /programs/{id}/spread (see Rate Quotes & Spread). For Phase 2 yield programs, Regini charges a 15% performance fee on gross yield before crediting accounts.
You receive a program_id once configured. Every account you provision must be enrolled in a program via the program_id field on POST /accounts. Most partners start with a single program.
Step 4 — Sandbox testing
Once your program is configured, Regini provides you with a sandbox API key (rk_test_*). The sandbox is a full simulation of the production environment:
- Account creation, deposits, and withdrawals execute immediately with no real money or M-Pesa calls.
- Webhooks are delivered to your registered endpoint exactly as in production.
- Ledger entries are written exactly as in production.
Test the full flow, account provisioning, a deposit, a withdrawal, and webhook receipt, before requesting production access. See Sandbox for details.
Step 5 — Go live
When you have validated the integration in sandbox, contact Regini to request production access. Regini will:
- Issue your live API key (
rk_live_*) via the partner portal. - Confirm your treasury wallet is funded.
- Enable your program for live traffic.
Your live key works immediately. The first real POST /accounts call provisions a live user account.
After go live
- Monitor the dashboard in the partner portal for real-time AUM, transaction volume, and float surplus.
- Set up webhooks to receive
deposit.completedandwithdrawal.completedevents so your system stays in sync with Regini. - Rotate API keys periodically or immediately if a key is ever exposed.