Skip to content

One API. All bills

The API layer for modern payments

Ureh gives developers and businesses one API for airtime, data, cable TV, electricity, education, betting, and insurance payments with wallets, transactions, and webhooks built in, so you can ship bill payments without building the infrastructure yourself.

POST /api/v1/airtime/purchase

Request

Authorization: Bearer sk_••••••••••••c93f
Content-Type: application/json

{
  "client_id": "URH-8F2C91A4D6B0E37F1A",
  "biller": "MTN",
  "recipient": "08012345678",
  "amount": 500,
  "idempotency_key": "5c2f9e2a-6b7a-4b31-9d3a-df2b6c9a4e10"
}

Response 202 Accepted

{
  "status": "pending",
  "code": "PROCESSING",
  "message": "Transaction accepted.",
  "data": {
    "reference": "20246063015832257676576215",
    "recipient": "08012345678",
    "biller": "MTN",
    "amount": 500,
    "channel": "API_GATEWAY",
    "currency": "NGN",
    "created_at": "2024-08-25 14:32:07"
  }
}

Platform

Everything you need to build and ship

One account, one credential, and one integration path, the same eight steps behind every bill payment product Ureh supports.

Product platform

What you can build

Airtime, data, cable TV, electricity, education, betting and insurance payments.

POST /api/v1/airtime/purchase
  • Airtime Programmatic airtime top-ups across major networks.
  • Data Programmatic data bundle purchases.
  • Cable TV Cable subscription payments and renewals.
  • Electricity Prepaid and postpaid electricity bill payments.
  • Education Education-related bill payments.
  • Betting Funding for betting and gaming wallets.
  • Insurance Insurance premium payments and renewals.

Developer journey

From API key to first transaction

  1. 01

    Step 01

    Create account

    Register a developer account in the Ureh Developer Console.

    POST /register
  2. 02

    Step 02

    Generate API credentials

    Issue your public/secret key pair from the API Keys page.

    pk_ / sk_ key pair
  3. 03

    Step 03

    Fund wallet

    Fund your wallet before initiating any paid transaction.

    wallet.credit
  4. 04

    Step 04

    Authenticate API request

    Every request carries your Secret Key as a bearer token.

    Authorization: Bearer sk_…
  5. 05

    Step 05

    Make API request

    Call the product endpoint for the service you want to sell.

    POST /api/v1/airtime/purchase
  6. 06

    Step 06

    Receive transaction response

    The request is accepted and queued for processing.

    202 Accepted · PROCESSING
  7. 07

    Step 07

    Track transaction

    Poll the transaction by its reference at any time.

    GET /api/v1/transactions/status
  8. 08

    Step 08

    Receive webhook event

    Get notified the moment the transaction reaches a final state.

    X-Ureh-Signature verified

API & code

The same request, in your language

Plain HTTP over a bearer token credential no SDK to install. Every example below sends the exact same request to the exact same endpoint.

# Authenticate with your Secret Key
curl -X POST https://api.ureh.io/v1/airtime/purchase \
  -H "Authorization: Bearer sk_••••••••••••c93f" \
  -H "Content-Type: application/json" \
  -d '{
  "client_id": "URH-8F2C91A4D6B0E37F1A",
  "biller": "MTN",
  "recipient": "08012345678",
  "amount": 500,
  "idempotency_key": "5c2f9e2a-6b7a-4b31-9d3a-df2b6c9a4e10"
}'

Response 202 Accepted

{
  "status": "pending",
  "code": "PROCESSING",
  "message": "Transaction accepted.",
  "data": {
    "reference": "20246063015832257676576215",
    "recipient": "08012345678",
    "biller": "MTN",
    "amount": 500,
    "channel": "API_GATEWAY",
    "currency": "NGN",
    "created_at": "2024-08-25 14:32:07"
  }
}

Architecture

One API, one integration surface

Ureh sits between your application and every supported bill payment service you integrate once, against one contract.

Webhooks

Know the moment a transaction settles

Instead of polling /api/v1/transactions/status on a timer, register a webhook endpoint and Ureh notifies your application the moment a transaction reaches success or failed.

  • Every webhook delivery includes an HMAC-SHA256 signature generated from the timestamp and request body.
  • Failed deliveries retry automatically.
  • Every delivery attempt is recorded and viewable in the Developer Console.
POST https://your-app.com/webhooks/ureh

Headers

X-Ureh-Timestamp: 1785373930
X-Ureh-Signature: b254effa849fb3bf232dcaeaef5518da806a456f533982923c32ed7e31841ada
Content-Type: application/json

Body transaction.completed

{
  "event": "transaction.completed",
  "timestamp": "2024-08-25T14:32:10Z",
  "signature_version": "v1",
  "data": {
    "reference": "20246063015832257676576215",
    "status": "success",
    "service_type": "VTU_AIRTIME",
    "amount": 500,
    "token": null,
    "completed_at": "2024-08-25T14:32:10Z",
    "metadata": {}
  }
}

Shown formatted for readability — the signed raw body is compact JSON.

Security & API controls

Access controls that stay with the credential

Every control here is enforced by the API itself, not layered on top of it the same credential is authenticated, rate-limited and, optionally, IP-restricted on every call.

Bearer-token authentication
Every request authenticates with your Secret Key as a bearer token no session, no cookie.
API credentials
A public/secret key pair per account, rotatable from the Developer Console at any time.
Rate limiting
Requests are limited per IP and per API key by default, with a per-request Retry after on the response when exceeded.
IP whitelisting
Restrict your credentials to a set of trusted source IPs enforcement is opt-in per account.
Webhook signing
Every webhook delivery is signed HMAC-SHA256, so you can verify it originated from Ureh.
Signature verification
Test your own verification logic against a real signature from the Developer Console.

Developer Console

Manage every integration in one place

API credentials, wallet, transactions, webhooks, analytics, and your team, all from the same console your API calls use.

app.ureh.io/dashboard
URH-9F2…C41A Airtime · MTN success ₦•••
URH-3B7…88E2 Data · Airtel pending ₦•••
URH-6A1…52F0 Electricity · IKEDC success ₦•••••
URH-4C8…17B9 JAMB · Profile success ₦••••
URH-7D3…94E1 WAEC · Result Checker success ₦••••
URH-2E6…63A7 Cable TV · DSTV pending ₦••••

How it fits together

From this website to production

Developer experience

Integrate in minutes, not days

A simple, well documented API, official SDKs for the stacks you already use, and the tooling to test safely before you go live everything is built to get you from signup to your first live transaction fast.

Official SDKs

Native, idiomatic clients for the stacks you already build in. View SDK status →

  • Node.js First-class support for modern JavaScript and TypeScript backends.
  • PHP An idiomatic client for PHP applications and frameworks.
  • Python An idiomatic client for Python services and data pipelines.
  • Go A lightweight client for high-throughput Go services.
  • Flutter Drop straight into your Flutter mobile app.

Also included

Build your payment experience on Ureh.

One credential, one API, every bill payment service your application needs.