Quick Start
Create your first payment, verify the status flow, and prepare for webhook-based production usage.
Introduction
This guide walks through the shortest credible Genuka Pay integration path:
- retrieve your secret key
- create a payment
- check the resulting status
- configure a webhook endpoint
- prepare the integration for production
Get Credentials
Retrieve and manage your application secret key from the dashboard.
Create a Payment
Start with a minimal payment request in sandbox mode.
Track Status
Validate how your backend will observe transaction state changes.
Configure Webhooks
Replace production polling with asynchronous event delivery.
Step 1: Retrieve Your Secret Key
Start in the dashboard, not with a raw API endpoint.
Open the API Keys page from the dashboard.
From there, your team can:
- reveal the current
secret_key - copy credentials securely
- rotate the key when needed
- inspect recent key rotation history
Important
Store the secret_key server-side only. Never embed it in browser code,
mobile apps, or public repositories.
Step 2: Create Your First Payment
curl -X POST "{{BASE_URL}}/api/v1/payments" \
-H "X-Public-Key: YOUR_PUBLIC_KEY" \
-H "X-Timestamp: UNIX_TIMESTAMP" \
-H "X-Signature: HMAC_SHA256_SIGNATURE" \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"currency": "XAF",
"payer_phone": "677001122",
"external_id": "order_10001",
"metadata": {
"description": "Premium subscription"
}
}'If operator_code is omitted, the backend may auto-detect it from the payer phone number when possible.
Example Response
{
"data": {
"id": "01HR...",
"amount": 1000,
"currency": "XAF",
"type": "PAYIN",
"track_id": "TRX_01HR...",
"status": "PENDING",
"operator_code": "MTN_CM",
"payer_phone": "677001122",
"metadata": {
"description": "Premium subscription"
},
"created_at": "2026-04-01T10:00:00Z"
}
}Step 3: Check the Payment Status
curl -X GET "{{BASE_URL}}/api/v1/payments/status/TRX_01HR..." \
-H "X-Public-Key: YOUR_PUBLIC_KEY" \
-H "X-Timestamp: UNIX_TIMESTAMP" \
-H "X-Signature: HMAC_SHA256_SIGNATURE"Typical fields returned here include:
transaction_idtrack_idstatusprovider_statusamountcurrencyupdated_at
Step 4: Configure a Webhook Endpoint
Do not rely only on polling once you move beyond initial tests.
Open the Webhooks page from the dashboard.
Provisioning by API is still available for infrastructure or internal tooling:
curl -X POST "{{BASE_URL}}/api/v1/webhook-endpoints" \
-H "X-Public-Key: YOUR_PUBLIC_KEY" \
-H "X-Timestamp: UNIX_TIMESTAMP" \
-H "X-Signature: HMAC_SHA256_SIGNATURE" \
-H "Content-Type: application/json" \
-d '{
"name": "Production backend",
"target_url": "https://merchant.example.com/webhooks/genuka",
"events": ["transaction.success", "transaction.failed"],
"is_active": true
}'Production recommendation
In production, treat webhook delivery as the source of truth for final status changes, and use status polling only as a recovery or reconciliation mechanism.
Step 5: Prepare for Live Operations
Before you enable real traffic:
- complete your KYC flow
- verify supported currencies and markets
- keep your secret key in a secrets manager or environment store
- configure production webhooks
- start with low-risk amounts and observe end-to-end settlement behavior
Next Steps
How is this guide?