Skip to contentSkip to Content
DocumentationQuick start

Quick Start

Get started with the Wakapay Business API in minutes. This guide walks you through your first authenticated API call.

Prerequisites

Before you begin, you’ll need:

  1. A tool to make HTTP requests (curl, Postman, or your favorite programming language)
  2. Your API credentials (sent to your email)

Step 1: Authenticate

First, let’s verify your API key works by authenticating:

curl -X POST https://api.test.wakapay.io/business/auth \ -H "Content-Type: application/json" \ -d '{ "apiKey": "YOUR_API_KEY", "apiSecret": "YOUR_API_SECRET" }'

You should receive a response with an access token:

{ "success": true, "data": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "expiresIn": 3600, "tokenType": "Bearer" } }

Store this token securely. You’ll use it for all subsequent requests.

Step 2: Check Your Balance

Let’s check your account balance:

curl https://api.test.wakapay.io/business/balance \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response:

{ "success": true, "data": { "balances": [ { "currency": "UGX", "available": 1000000, "pending": 50000 }, { "currency": "KES", "available": 250000, "pending": 0 } ] } }

Step 3: Get Current FX Rates

Before making a cross-border payment, check the exchange rates:

curl "https://api.test.wakapay.io/business/rate?from=UGX&to=KES&amount=100000" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response:

{ "success": true, "data": { "from": "UGX", "to": "KES", "rate": 0.0295, "amount": 100000, "convertedAmount": 2950, "fee": 500, "timestamp": "2024-01-15T10:30:00Z" } }

Step 4: Verify a Recipient

Before sending money, verify the recipient’s details:

curl -X POST https://api.test.wakapay.io/business/verify-transfer \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "countryCode": "UG", "phoneNumber": "+256700000001" }'

Response:

{ "displayName": "Amina Mjema", "receiverPhone": "+256700000001", "verified": true }

Step 5: Send a Payment

Now you’re ready to send your first payment:

curl -X POST https://api.test.wakapay.io/business/payout/transfer \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "senderCurrency": "USD", "receiverCurrency": "KES", "amount": 100, "senderFirstName": "Alice", "senderLastName": "Smith", "senderDob": "1985-03-15", "senderIdType": "passport", "senderIdNumber": "AB1234567", "senderNationality": "TZ", "senderTelephoneNo": "+255712345678", "receiverFirstName": "Amina", "receiverLastName": "Mjema", "receiverPhone": "+254700000001", "relationship": "Family", "payoutCountry": "KE", "purposeOfTransfer": "family_support", "sourceOfFunds": "salary", "businessReference": "QUICKSTART-KE-0001", "callbackUrl": "https://partner.example.com/webhooks/wakapay/QUICKSTART-KE-0001" }'

Response:

{ "wakapayReference": "0ad0a4a6-364b-11f1-8c14-0242ac120008", "businessReference": "QUICKSTART-KE-0001", "status": "termination_pending", "senderCurrency": "USD", "receiverCurrency": "KES", "senderAmount": 0.7751937984496124, "receiverAmount": 100, "totalDebited": 0.7906976744186047 }

Step 6: Check Transaction Status

Track your payment using the business reference:

curl https://api.test.wakapay.io/business/transactions/QUICKSTART-KE-0001 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response:

{ "wakapayReference": "0ad0a4a6-364b-11f1-8c14-0242ac120008", "businessReference": "QUICKSTART-KE-0001", "status": "termination_success", "senderCurrency": "USD", "receiverCurrency": "KES", "senderAmount": 0.7751937984496124, "receiverAmount": 100, "createdAt": "2026-06-22T07:00:00Z", "updatedAt": "2026-06-22T07:00:45Z" }

What’s Next?

You’ve successfully made your first Wakapay API calls. Here’s what to explore next:

Code Examples

Node.js

const axios = require("axios"); const wakapay = axios.create({ baseURL: "https://api.test.wakapay.io", headers: { Authorization: `Bearer ${process.env.WAKAPAY_TOKEN}`, "Content-Type": "application/json", }, }); // Send a payment async function sendPayment() { try { const response = await wakapay.post("/business/payout/transfer", { senderCurrency: "USD", receiverCurrency: "KES", amount: 100, senderFirstName: "Alice", senderLastName: "Smith", senderDob: "1985-03-15", senderIdType: "passport", senderIdNumber: "AB1234567", senderNationality: "TZ", senderTelephoneNo: "+255712345678", receiverFirstName: "Amina", receiverLastName: "Mjema", receiverPhone: "+254700000001", relationship: "Family", payoutCountry: "KE", purposeOfTransfer: "family_support", sourceOfFunds: "salary", businessReference: "QUICKSTART-KE-0001", callbackUrl: "https://partner.example.com/webhooks/wakapay/QUICKSTART-KE-0001", }); console.log("Payment sent:", response.data); } catch (error) { console.error("Error:", error.response.data); } }

Python

import requests WAKAPAY_API_URL = 'https://api.test.wakapay.io' WAKAPAY_TOKEN = 'your_access_token' headers = { 'Authorization': f'Bearer {WAKAPAY_TOKEN}', 'Content-Type': 'application/json' } def send_payment(): payload = { 'senderCurrency': 'USD', 'receiverCurrency': 'KES', 'amount': 100, 'senderFirstName': 'Alice', 'senderLastName': 'Smith', 'senderDob': '1985-03-15', 'senderIdType': 'passport', 'senderIdNumber': 'AB1234567', 'senderNationality': 'TZ', 'senderTelephoneNo': '+255712345678', 'receiverFirstName': 'Amina', 'receiverLastName': 'Mjema', 'receiverPhone': '+254700000001', 'relationship': 'Family', 'payoutCountry': 'KE', 'purposeOfTransfer': 'family_support', 'sourceOfFunds': 'salary', 'businessReference': 'QUICKSTART-KE-0001', 'callbackUrl': 'https://partner.example.com/webhooks/wakapay/QUICKSTART-KE-0001' } response = requests.post( f'{WAKAPAY_API_URL}/business/payout/transfer', json=payload, headers=headers ) if response.status_code == 201: print('Payment sent:', response.json()) else: print('Error:', response.json()) send_payment()

Testing

Use the documented TESTENV test recipients. Test payouts begin as termination_pending and later reach a final status. You can use forceStatus to test success, failure, and insufficient-balance handling.

Need Help?

Last updated on