Overview

P2P (person-to-person) transfers allow you to send funds from your RohoPay wallet to another RohoPay user’s wallet instantly and without provider fees. Funds move internally — no mobile money network is involved. Rate limit: 20 transfers per minute per IP.

Step 1: Find the Recipient

Before transferring, look up the recipient’s wallet by email address:
GET /dashboard/wallets/lookup?query=recipient@example.com
Cookie: session={your_session}
{
  "success": true,
  "data": {
    "wallet_id": "wlt_abc123",
    "user_id": "usr_xyz789",
    "name": "Jane Mukasa",
    "email": "recipient@example.com",
    "currency": "UGX",
    "handle": "RHP-ABC1234"
  }
}

Step 2: Send the Transfer

POST /dashboard/transfers
Cookie: session={your_session}
Content-Type: application/json

{
  "receiver_wallet_id": "wlt_abc123",
  "amount": 50000,
  "note": "Freelance payment – July invoice",
  "idempotency_key": "transfer-uuid-here"
}

Response

{
  "success": true,
  "data": {
    "id": "trf_01j2k3",
    "sender_wallet_id": "wlt_sender",
    "recipient_wallet_id": "wlt_abc123",
    "sender_name": "John Doe",
    "recipient_name": "Jane Mukasa",
    "amount": 50000,
    "currency": "UGX",
    "note": "Freelance payment – July invoice",
    "status": "successful",
    "internal_reference": "RHP-TRF-2024-001",
    "created_at": "2024-07-15T12:00:00Z"
  }
}
P2P transfers are synchronous and instant — the status is always successful in the response (there is no pending state for internal transfers unless a system error occurs).

Transfer History

GET /dashboard/transfers
Cookie: session={your_session}
Returns all transfers (sent and received) for the authenticated user.

Use Cases

Pay Freelancers

Send earnings to contractors or remote workers instantly.

Split Bills

Split shared expenses between team members.

Team Petty Cash

Distribute small budgets to team members for field purchases.

Business Settlements

Settle inter-company accounts within the RohoPay ecosystem.

Limits

LimitValue
Minimum transferUGX 500
Maximum single transferUGX 10,000,000
Rate limit20 per minute
RecipientMust be a registered RohoPay user
CurrencyUGX (both parties)

Frontend Integration (Dashboard Quick Transfer)

The dashboard includes a Quick Transfer widget that supports:
  1. Search by email or wallet handle
  2. Enter amount and optional note
  3. Confirm with one click
  4. Real-time balance update after transfer
// Using the dashboard data hook
import { lookupWallet, createWalletTransfer } from "@/app/lib/dashboard-data";

const { wallet_id } = await lookupWallet("recipient@example.com");
const transfer = await createWalletTransfer(
  wallet_id,
  50000,
  "Freelance payment",
  crypto.randomUUID()
);