Developers
Mobile Money payments, from your code
A REST API, signed webhooks, SDKs and a test mode with test Mobile Money numbers. Here is a payment, from the request to the webhook.
curl https://api.notchpay.co/payments \
-H "Authorization: $NOTCHPAY_PUBLIC_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"currency": "XAF",
"customer": { "email": "client@example.com" },
"reference": "order_1042",
"callback": "https://example.com/orders/1042"
}'Designed to be boring in production.
Clear conventions, explicit errors and test tools that behave like the real thing, so launch day is uneventful.
- REST and JSON
- Resource-oriented endpoints for payments, transfers, customers, beneficiaries and webhooks, with consistent JSON responses.
- Test mode
- Test keys and test Mobile Money numbers let you simulate successful, failed, expired and cancelled payments.
- Scoped API keys
- A public key to create payments, a private key to move money and a separate hash key for webhooks.
- Operator pre-selection
- Use locked_channel to send customers straight to MTN MoMo or Orange Money when you already know how they pay.
Check that each webhook really comes from us.
Notch Pay signs each webhook with your endpoint’s hash key using HMAC SHA-256. Compare it with the x-notch-signature header and you know the event really came from us.
import crypto from 'node:crypto'
import express from 'express'
const app = express()
app.post('/webhooks/notchpay', express.raw({ type: 'application/json' }), (req, res) => {
const expected = crypto
.createHmac('sha256', process.env.NOTCHPAY_HASH_KEY)
.update(req.body)
.digest('hex')
const received = req.get('x-notch-signature') ?? ''
const valid = received.length === expected.length
&& crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected))
if (!valid) return res.sendStatus(403)
const event = JSON.parse(req.body)
// Handle the event, then acknowledge it
res.sendStatus(200)
})SDKs and plugins
JavaScript
For Node.js backends and modern JavaScript apps.
$ npm install notchpay.js
PHP
For PHP applications, with a dedicated Laravel integration.
$ composer require notchpay/notchpay-php
Python
For Django, Flask, FastAPI and scripts.
$ pip install notchpay
WooCommerce
Add Mobile Money to your WooCommerce store without code.
wordpress.org/plugins/wc-notchpay
GiveWP
Accept donations on WordPress with the GiveWP plugin.
wordpress.org/plugins/notchpay-give
Flutter
Mobile SDKs for iOS, Android, Flutter and React Native.
developer.notchpay.co/sdks/mobile
Resources
Get your test keys in minutes.
Create your account and make your first test payment with your test keys.
- Test keys as soon as you sign up
- Verification of your business documents
- Live payments, credited to your balance