Skip to main content

Welcome to Fingo Pay

Build reliable payment experiences with a single API. Charge customers via STK Push, disburse funds to wallets, tills, paybills, and bank accounts, and reconcile everything with webhooks.
Base URL (all environments)
https://api.fingopay.io

Authentication

API keys, Bearer tokens, and idempotency.

API Reference

Interactive docs for every endpoint.

Webhooks

Real-time event notifications.

Quickstart

Get up and running in three steps.
1

Set your API key

Get your key from the Fingo Pay Dashboard and export it.
export FINGO_API_KEY=sk_test_***
2

Create a charge

Initiate an M-Pesa STK Push payment.
curl -X POST "https://api.fingopay.io/v1/mpesa/charge" \
  -H "Authorization: Bearer $FINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 46ea80b4-5f6d-43b6-8d69-445d0f9cb33f" \
  -d '{
    "merchantTransactionId": "order_12345",
    "amount": 150000,
    "phoneNumber": "+254712345678",
    "narration": "Order #12345"
  }'
The customer receives an STK Push prompt. Final status arrives via webhook.
3

Handle webhooks

Subscribe your endpoint and process transaction.* events.

Webhook guide

Signature verification, retries, and idempotent handling.

Common operations

curl -X POST "https://api.fingopay.io/v1/mpesa/charge" \
  -H "Authorization: Bearer $FINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "merchantTransactionId": "order_12345",
    "amount": 150000,
    "phoneNumber": "+254712345678",
    "narration": "Order #12345"
  }'

Next steps

Environments

Sandbox vs production and how API keys control routing.

TypeScript SDK

Type-safe SDK with built-in retries and error handling.

Error handling

Error types, codes, and response format.

Data conventions

Amounts, currencies, phone formats, and timestamps.

Enterprise guide

Dedicated shortcodes, sub-merchants, and advanced routing.