curl -X POST "https://api.fingopay.io/v1/mpesa/charge" \
  -H "Authorization: Bearer sk_test_***" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "+254712345678",
    "amount": 10000,
    "narration": "Invoice #1234",
    "merchantTransactionId": "mtx_123",
    "webhookUrl": "https://example.com/webhooks/fingo",
    "metadata": {"orderId": "ORD-987"}
  }'

Welcome to Fingo Pay

Build reliable payment experiences with Fingo Pay’s unified payments API. Charge customers via STK Push (C2B), disburse funds to wallets (B2C), fetch balances, and reconcile transactions with webhooks.
Fingo Pay developer overview

Accept M‑Pesa payments and automate payouts

Accept payments

Accept payments with Fingo Pay

C2B checkout

Developer-first API

Fingo Pay developer API

Simple, consistent APIs

Quickstart

1

Add your API key

Use your secret key as a Bearer token in the Authorization header.
curl -X GET "https://api.fingopay.io/v1/balance?account=collections" \
  -H "Authorization: Bearer sk_live_***"
You should receive a 200 response with your balance.
2

Make a C2B charge (STK Push)

Create a payment request to the customer’s device. Final status arrives via webhook.
curl -X POST "https://api.fingopay.io/v1/mpesa/charge" \
  -H "Authorization: Bearer sk_test_***" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "+254712345678",
    "amount": 10000,
    "narration": "Invoice #1234",
    "merchantTransactionId": "mtx_123",
    "webhookUrl": "https://example.com/webhooks/fingo",
    "metadata": {"orderId": "ORD-987"}
  }'
{
  "status": "success",
  "message": "Transaction initiated successfully",
  "data": {
    "merchantTransactionId": "mtx_123",
    "transactionId": "txn_01j7b6f9p5y9h"
  }
}
3

Handle webhooks

Verify signatures with HMAC SHA‑256 using your webhook secret and process event types such as transaction.succeeded and payout.succeeded.
Respond with 2xx in under 10 seconds. We retry with exponential backoff for up to 24 hours.