1. Register a User
Create a new user and receive default Ethereum + TRON wallets. Each wallet is provisioned with zero balances for native (ETH/TRX), USDT, and USDC on that network.user and wallets with initialized balances (USDT, USDC, and native token per wallet).
2. Authenticate
Use login (or login-pin if you set a PIN) to get an access token:access_token and refresh_token from the response.
3. Call Protected Endpoints
Use the access token for authenticated requests:4. Create an Order (On-Ramp)
Create an order to buy USDT with KES. Production flows require a matching offer and pricing (pricing_profile_id + fx_rate_quote_id) created by an admin — see Pricing and FX.
OFF_RAMP_SELL), add payout_phone and use a customer wallet whose address matches the escrow network (TRON T... vs Ethereum 0x...) — see Orders and payments.
5. Initiate Payment
Trigger mobile money STK push for the order:Additional wallet provisioning
UsePOST /api/v1/auth/wallets/for-owner with a Bearer token to add a custodial or treasury-multisig wallet tied to a users row (owner_type: customer, vendor, merchant, sub_merchant, or treasury). Each new wallet gets zero balances for native, USDT, and USDC on the chosen network.
- Retail (
customer): non-admin callers must setuser_idto their own id and have role customer or user. A master vendor may also usecustomerwith their ownuser_idfor an extra wallet. vendor: same as a master merchant — senduser_idequal to the vendor’s user id (alternative tomerchant+merchant_id).- Admin: may use
owner_typecustomerwith anyuser_id. Usemerchant/sub_merchantwhen the id field should be explicit.
Next Steps
Authentication
Understand refresh tokens and PIN-based login