<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jovan Mwesigwa</title>
    <description>The latest articles on DEV Community by Jovan Mwesigwa (@joova).</description>
    <link>https://dev.to/joova</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3537143%2Fd35ec4e7-04c1-491d-ab0a-1b84c5095d02.webp</url>
      <title>DEV Community: Jovan Mwesigwa</title>
      <link>https://dev.to/joova</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joova"/>
    <language>en</language>
    <item>
      <title>Why Can’t I Access Mobile Money API Docs Without Compliance?</title>
      <dc:creator>Jovan Mwesigwa</dc:creator>
      <pubDate>Wed, 01 Oct 2025 09:50:54 +0000</pubDate>
      <link>https://dev.to/joova/why-cant-i-access-mobile-money-api-docs-without-compliance-2gm3</link>
      <guid>https://dev.to/joova/why-cant-i-access-mobile-money-api-docs-without-compliance-2gm3</guid>
      <description>&lt;p&gt;We’ve all been there. You’re exploring providers for your next project, trying to decide which payment solution works best for your use case. Then you hit a wall: &lt;strong&gt;you can’t even view the documentation without going through weeks of compliance hoops&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is one of the most frustrating realities of building with mobile money in Africa.&lt;/p&gt;




&lt;h2&gt;
  
  
  Compliance Before Discovery
&lt;/h2&gt;

&lt;p&gt;Across MTN, Airtel, M-Pesa, and others, it’s surprisingly common that you &lt;strong&gt;cannot access even the bare minimum of their API docs&lt;/strong&gt; without first completing compliance and KYC.&lt;/p&gt;

&lt;p&gt;Think about that. Imagine if &lt;strong&gt;Stripe&lt;/strong&gt; or &lt;strong&gt;PayPal&lt;/strong&gt; hid their documentation behind a “government and business KYC” process before you could decide whether their API was a good fit. Sounds crazy, right? Yet here, it’s normal.&lt;/p&gt;

&lt;p&gt;And it creates real problems for developers and product teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Hurts Developers
&lt;/h2&gt;

&lt;p&gt;When you’re an early-stage technical team, you don’t have months to burn. You need to make decisions quickly, and that means evaluating a provider’s API against a checklist like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation quality&lt;/strong&gt;: Is it robust and developer-friendly?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stack compatibility&lt;/strong&gt;: Does it support our language/frameworks?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Webhook handling&lt;/strong&gt;: How does it notify us of payments?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support&lt;/strong&gt;: Can we reach a developer team if we’re stuck?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;: What are their fees and rates?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;: How often is their API down?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transaction limits&lt;/strong&gt;: What’s the min/max per transaction?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But if you can’t even see the docs, you’re left &lt;strong&gt;choosing blindly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This leads to wasted time, wrong integrations, and sometimes having to rip everything out and start again with a different provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Broken Onboarding Experience
&lt;/h2&gt;

&lt;p&gt;This isn’t just inconvenient. It slows down innovation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prototyping becomes impossible:&lt;/strong&gt; You can’t test before choosing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stakeholder buy-in is harder&lt;/strong&gt;: No working demos for your team or investors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dead ends cost time&lt;/strong&gt;: You realize too late that the API won’t work for your use case.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result? African fintech teams move slower than they should, and developers burn months on bureaucracy instead of building.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Approach
&lt;/h2&gt;

&lt;p&gt;This is exactly why &lt;a href="https://fundkit.dev" rel="noopener noreferrer"&gt;&lt;strong&gt;FundKit&lt;/strong&gt;&lt;/a&gt; exists.&lt;/p&gt;

&lt;p&gt;Instead of waiting weeks for compliance just to explore, FundKit gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instant sandbox access&lt;/strong&gt;: Test MTN, Airtel, and M-Pesa APIs immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Virtual mobile money network&lt;/strong&gt;: Use our phone emulator to simulate real user flows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smart routing&lt;/strong&gt;: FundKit auto-picks the cheapest, most reliable provider in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unified SDK&lt;/strong&gt;: One integration works across multiple providers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prototype in &lt;strong&gt;minutes&lt;/strong&gt;, not months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Show stakeholders working demos early.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Switch providers easily without rewriting your stack.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Independence That Scales With You
&lt;/h2&gt;

&lt;p&gt;The best part of FundKit is that it’s &lt;strong&gt;independent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once your compliance team is done with the paperwork and the provider has approved you, you can simply &lt;strong&gt;swap your sandbox API keys for production keys&lt;/strong&gt; and FundKit will keep working with zero code changes.&lt;/p&gt;

&lt;p&gt;Want to add another provider later? Just drop in their production keys, and FundKit will handle them the same way. No rewrites, no provider lock-in, no wasted development cycles.&lt;/p&gt;

&lt;p&gt;This means your integration grows with you as your business expands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;When developers have to wait for compliance just to &lt;em&gt;start building&lt;/em&gt;, it kills momentum.&lt;/p&gt;

&lt;p&gt;By flipping the order build first, compliance later FundKit makes it possible for teams to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Validate faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate smarter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch quicker.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Compliance is important. No one is arguing against it. But &lt;strong&gt;forcing developers to commit before discovery is backwards&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;FundKit is here to fix that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.fundkit.dev" rel="noopener noreferrer"&gt;FundKit Docs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fundkit.dev" rel="noopener noreferrer"&gt;Sign up for FundKit&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mobilemoney</category>
      <category>mpesa</category>
      <category>mtnapi</category>
      <category>airtelapi</category>
    </item>
    <item>
      <title>Is MTNAPI Free? (And What You Should Know Before Integrating)</title>
      <dc:creator>Jovan Mwesigwa</dc:creator>
      <pubDate>Tue, 30 Sep 2025 15:32:33 +0000</pubDate>
      <link>https://dev.to/joova/is-mtnapi-free-and-what-you-should-know-before-integrating-618</link>
      <guid>https://dev.to/joova/is-mtnapi-free-and-what-you-should-know-before-integrating-618</guid>
      <description>&lt;h1&gt;
  
  
  Is MTN API Free?
&lt;/h1&gt;

&lt;p&gt;If you're a developer or fintech team looking to integrate &lt;strong&gt;MTN Mobile Money&lt;/strong&gt;, one of the first questions you probably ask is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Is MTN API free?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The short answer: &lt;strong&gt;Yes, but not really.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Official MTN API Cost
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No upfront fees&lt;/strong&gt;: MTN typically provides API access for free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revenue share / transaction fees&lt;/strong&gt;: You (or your client) pay fees on every transaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance requirement&lt;/strong&gt;: To access the real MTN API, you need to go through an onboarding and compliance process, which can take &lt;strong&gt;weeks or even months&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So while the API itself doesn’t have a price tag, the &lt;strong&gt;time cost&lt;/strong&gt; is significant.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Hidden Costs Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Developers often discover that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You &lt;strong&gt;can’t see MTN API docs&lt;/strong&gt; until compliance is approved.&lt;/li&gt;
&lt;li&gt;There is &lt;strong&gt;no sandbox or testnet&lt;/strong&gt; → you can’t prototype without touching real money.&lt;/li&gt;
&lt;li&gt;You burn &lt;strong&gt;development time&lt;/strong&gt; waiting on paperwork.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means the &lt;em&gt;real&lt;/em&gt; cost is developer hours lost.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What If You Just Want to Start Building?
&lt;/h2&gt;

&lt;p&gt;That’s where &lt;strong&gt;FundKit&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;With FundKit, you don’t need to wait for MTN’s compliance approval to begin development:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PaymentClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@fundkit/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PaymentClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FUNDKIT_SANDBOX_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sandbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mtn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mtn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;currency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;UGX&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;accountNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+256700000000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Test MTN payment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Payment:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;payment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Works just like MTN’s live API.&lt;/li&gt;
&lt;li&gt;Includes a &lt;strong&gt;phone emulator&lt;/strong&gt; → simulate what your users will see.&lt;/li&gt;
&lt;li&gt;Test collections, payouts, and even error scenarios.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. When You’re Ready to Go Live
&lt;/h2&gt;

&lt;p&gt;Once compliance is cleared with MTN, you simply swap in your &lt;strong&gt;production keys&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PaymentClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sk_live_your_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;production&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;mtn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your_mtn_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No refactoring required.&lt;br&gt;
Your prototype → becomes production-ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Final Answer
&lt;/h2&gt;

&lt;p&gt;So, &lt;strong&gt;is the MTN API free?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technically, yes.&lt;/li&gt;
&lt;li&gt;But the &lt;strong&gt;real cost&lt;/strong&gt; is time, compliance, and lack of a sandbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With FundKit, you start coding &lt;strong&gt;immediately&lt;/strong&gt;, without waiting on compliance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.fundkit.dev" rel="noopener noreferrer"&gt;FundKit Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fundkit.dev/blog/integrate-airtel-mtn" rel="noopener noreferrer"&gt;How to integrate Airtel + MTN in 5 minutes with FundKit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fundkit.dev/blog/mobile-money-testnets" rel="noopener noreferrer"&gt;Why mobile money APIs don’t have testnets (and what we did about it)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>mobilemoney</category>
      <category>mpesa</category>
    </item>
    <item>
      <title>Why MTN and Airtel make you sign contracts before seeing their API docs (and how to start building without waiting)</title>
      <dc:creator>Jovan Mwesigwa</dc:creator>
      <pubDate>Tue, 30 Sep 2025 14:55:59 +0000</pubDate>
      <link>https://dev.to/joova/why-mtn-and-airtel-make-you-sign-contracts-before-seeing-their-api-docs-and-how-to-start-building-3g4i</link>
      <guid>https://dev.to/joova/why-mtn-and-airtel-make-you-sign-contracts-before-seeing-their-api-docs-and-how-to-start-building-3g4i</guid>
      <description>&lt;h1&gt;
  
  
  The Compliance Gate Problem
&lt;/h1&gt;

&lt;p&gt;If you've ever tried to integrate mobile money payments in Africa, you know the drill:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find the provider's API documentation&lt;/strong&gt; (if it exists)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get redirected to a compliance form&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wait weeks for approval&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finally get access to docs that are... underwhelming&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the reality for developers trying to work with MTN, Airtel, M-Pesa, and other African mobile money providers. But why does this happen, and more importantly, how can you start building without waiting?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Providers Gate Their Documentation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Regulatory Compliance Requirements
&lt;/h3&gt;

&lt;p&gt;African mobile money providers operate under strict financial regulations. They need to ensure that anyone integrating with their systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has proper business registration&lt;/li&gt;
&lt;li&gt;Complies with anti-money laundering (AML) requirements&lt;/li&gt;
&lt;li&gt;Meets know-your-customer (KYC) standards&lt;/li&gt;
&lt;li&gt;Has appropriate financial licenses&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Risk Management
&lt;/h3&gt;

&lt;p&gt;Mobile money involves real money transactions. Providers need to vet potential partners to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prevent fraud and money laundering&lt;/li&gt;
&lt;li&gt;Ensure proper transaction monitoring&lt;/li&gt;
&lt;li&gt;Maintain system security and integrity&lt;/li&gt;
&lt;li&gt;Protect their reputation and regulatory standing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Resource Allocation
&lt;/h3&gt;

&lt;p&gt;API documentation and support are expensive to maintain. Providers want to focus their resources on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verified, serious businesses&lt;/li&gt;
&lt;li&gt;Partners who will generate significant transaction volume&lt;/li&gt;
&lt;li&gt;Companies with proper compliance infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Developer's Dilemma
&lt;/h2&gt;

&lt;p&gt;This creates a classic chicken-and-egg problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You need to see the API&lt;/strong&gt; to understand if it fits your use case&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need to build a prototype&lt;/strong&gt; to get stakeholder buy-in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need to test integration&lt;/strong&gt; to estimate development time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;But you can't do any of this&lt;/strong&gt; without compliance approval&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The FundKit Solution
&lt;/h2&gt;

&lt;p&gt;This is exactly why we built FundKit. Here's how we solve the compliance gate problem:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Unified API Documentation
&lt;/h3&gt;

&lt;p&gt;We provide comprehensive, always-available documentation for all major African mobile money providers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// MTN Mobile Money API&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mtnPayment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mtn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;currency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;UGX&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;accountNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+256700000000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Airtel Money API&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;airtelPayment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;airtel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;currency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;UGX&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;accountNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+256700000000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Sandbox Environment
&lt;/h3&gt;

&lt;p&gt;Test with virtual mobile money without any compliance requirements:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PaymentClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sk_test_your_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sandbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mtn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;airtel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mpesa&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Real Provider Integration
&lt;/h3&gt;

&lt;p&gt;When you're ready for production, simply switch your API keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PaymentClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sk_live_your_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;production&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- change variable to production &lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;mtn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your_mtn_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;airtel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your_airtel_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Getting Started Today
&lt;/h2&gt;

&lt;p&gt;Ready to start building without waiting for compliance approval?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sign up for FundKit&lt;/strong&gt; (free, no compliance required)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get your sandbox API key&lt;/strong&gt; (instant access)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start building&lt;/strong&gt; with our comprehensive documentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with virtual mobile money&lt;/strong&gt; in our sandbox&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy to production&lt;/strong&gt; when you're ready&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.fundkit.dev" rel="noopener noreferrer"&gt;View our API documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fundkit.dev/" rel="noopener noreferrer"&gt;Try our sandbox environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.fundkit.dev/guides" rel="noopener noreferrer"&gt;Read our integration guides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The future of mobile money integration shouldn't be gated behind compliance paperwork. Start building today with FundKit.&lt;/p&gt;

</description>
      <category>api</category>
      <category>discuss</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
