Logo GenukaGenuka Pay
Getting Started

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:

  1. retrieve your secret key
  2. create a payment
  3. check the resulting status
  4. configure a webhook endpoint
  5. prepare the integration for production

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

Create a 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

Payment 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

Fetch Latest 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_id
  • track_id
  • status
  • provider_status
  • amount
  • currency
  • updated_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:

Create a Webhook Endpoint
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?