Skip to content

nkap: a unified payment SDK for african developers #60

Description

@pythonbrad

Nkap — A Unified Payment SDK for African Developers

The Problem

Mobile money is the backbone of digital payments across Africa. With over 780 million registered mobile money accounts on the continent (GSMA, 2023), services like MTN Mobile Money, Orange Money, Wave, and Moov have become the primary financial tools for hundreds of millions of people. Yet for a developer in Cameroon, Senegal, Côte d'Ivoire, or Nigeria, integrating even two of these payment providers into a single app is a painful, repetitive, and time-consuming experience.

Each aggregator ships its own API, its own authentication model, its own webhook format, its own error codes, and its own SDK — when it even ships one at all. A fintech team building a product that targets users in francophone West Africa and Central Africa today has to read five different docs, maintain five different integration layers, and debug five different failure modes. That cost is not theoretical — it is one of the real reasons African startups move slower than they should on payments.


What Nkap Is

Nkap (the word for money in Cameroonian Pidgin) is an open-source, unified payment SDK that gives African developers a single, consistent interface to work with the most widely used payment aggregators and mobile money operators on the continent.

Instead of learning each provider's quirks individually, a developer calls one SDK, configures their credentials, and gets a normalized API for:

  • Initiating payments
  • Checking transaction status
  • Handling webhooks
  • Processing refunds

— regardless of whether the underlying provider is MTN MoMo, Orange Money, Wave, CinetPay, Monetbil, PayDunya, or others.


Why Rust

The choice of Rust is deliberate and practical. Rust compiles to native binaries with no runtime dependency, which means the core logic can be compiled once and exposed to virtually any programming language through FFI (Foreign Function Interface). This directly serves the African developer ecosystem, where language fragmentation is real — teams building with PHP, Python, JavaScript/Node.js, Dart (Flutter), Kotlin, and Swift all deserve first-class support without the SDK team having to rewrite everything six times.

Rust also brings:

  • Memory safety without a garbage collector
  • Predictable performance under load
  • Strong async support through Tokio

All of which matter when you are handling financial transactions where reliability is non-negotiable. Projects like Mozilla, Cloudflare, and the Linux kernel have already validated Rust for systems-level work at scale.


The Broader Context

Africa's payment landscape is fragmented by design — operators are country-specific, regulatory environments differ, and API standardization is largely absent. Organizations like the GSMA and the African Union have pushed for interoperability frameworks, but at the developer level, the tooling has not caught up.

Nkap is not trying to replace aggregators or become a financial intermediary. It sits cleanly at the developer tooling layer — the same way Stripe's libraries abstract card networks, Nkap abstracts African payment rails.

The goal is simple: a developer should be able to go from zero to a working payment integration in under an hour, in the language they already know.


Resources and Prior Art

Resource Description
GSMA Mobile Money API The closest thing to a standard that exists today, adopted partially by some operators
MTN MoMo Developer Portal One of the most mature provider APIs, but still complex to work with
CinetPay Popular aggregator in francophone Africa with a REST API
PayDunya Widely used in West Africa, supports multiple payment methods
Monetbil Widely used in Central Africa, especially Cameroon
UniFFI by Mozilla The toolchain that makes exposing Rust to Kotlin, Swift, and Python realistic without manual binding work

Who This Is For

Nkap is for the developer in Douala building a delivery app, the team in Dakar launching a savings product, and the startup in Abidjan that just needs payments to work — without spending weeks on integration before they can ship.

Relevant Technology

Rust, FFI, API design, Cross language interoperability

Complexity

  • Beginner - This project requires no or little prior knowledge of the technolog(y|ies) specified to contribute to the project
  • Intermediate - The user should have some prior knowledge of the technolog(y|ies) to the point where they know how to use it, but not necessarily all the nooks and crannies of the technology
  • Advanced - The project requires the user to have a good understanding of all components of the project to contribute

Required time

  • Little work - A couple of days
  • Medium work - A week or two
  • Much work - The project will take more than a couple of weeks and serious planning is required

Categories

  • Mobile app
  • IoT
  • Web app
  • Frontend/UI
  • AI/ML
  • APIs/Backend
  • Voice Assistant
  • Developer Tooling
  • Extension/Plugin/Add-On
  • Design/UX
  • AR/VR
  • Bots
  • Security
  • Blockchain
  • Futuristic Tech/Something Unique

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions