Skip to main content Scroll Top

Coming Soon 1

Developer documentation (DEMO)

Welcome to the OrzPay Developer Portal. This documentation explains how to integrate OrzPay payment services into websites, mobile applications, POS systems, and enterprise software.

System Prerequisites

Before initializing integration sequences targeting the OrzPay transaction clearing networks, confirm your application infrastructure ticks all required parameters:

Merchant ProfileRegistered and active account status on the OrzPay platform dashboard.
KYC VerificationBusiness documentation reviews approved by compliance workflows.
API Sandbox KeysSecret cryptographic credential tokens generated from account profiles.
HTTPS EnvironmentProduction websites running secure configurations with active SSL Certificates.
Callback ReceptorsAn active public webhook listener URL up to receive backend status reports.
Core Stack KnowledgeBasic technical experience structuring standard RESTful JSON data payloads.
Secure API Authentication

All secure API interactions targeted at OrzPay processing servers must undergo validation checks. Authentication runs through the standard HTTP Header profiles using private Bearer Secret Tokens.

Required HTTP Headers Configuration
Authorization: Bearer orz_live_secret_key_placeholder_data Content-Type: application/json
Security Architecture Best Practices

To safeguard balance allocations and consumer transaction records across external endpoints, strictly apply these security protection procedures:

  • Keep API Secrets Confidential: Never commit raw secret values into public asset repositories or version control histories.
  • Zero Frontend Exposure: Never bundle private authorization tokens inside client-side components (like JavaScript web bundles). Always execute queries from backend environments.
  • Force Transport Security: Reject inbound non-SSL endpoints. Enforce TLS 1.2 or higher across target payment routes.
  • Routine Token Rotation: Regularly cycle out operational access tokens through dashboards to limit risk exposure boundaries.
  • Use Environment Controls: Inject all private access parameters straight out of secure background server systems (such as .env file structures).
Base URL Routing Routes (Informational)

Target transaction configurations down these respective cluster routes depending on the operational life stage of your digital solution platform:

Staging

Sandbox Mockup Gateway

https://orzpay.com

Live

Production Core Gateway

https://orzpay.com

API Prerequisites

Payments API
Initiate Payment

Creates a payment request using Mobile Money, QR Code, Wallet, or Virtual Card.


Verify Payment

Retrieve the current payment status using a Transaction Reference.


Cancel Payment

Cancel a pending payment before processing is completed.


Refund Payment

Issue full or partial refunds for completed transactions where applicable.


Mobile Money API

Supports direct integration with:

  • MTN Mobile Money
  • Airtel Money

Available Services

  • Collections
  • Disbursements
  • Wallet Payments
  • Merchant Payments
  • Balance Enquiries

Wallet API

The Wallet API enables developers to manage customer wallets.

Available Operations

  • Create Wallet
  • Wallet Balance
  • Transaction History
  • Send Money
  • Receive Money
  • Wallet Statement

QR Payment API

The QR Payment API enables merchants to accept contactless payments.

Available Operations

  • Generate Dynamic QR Code
  • Verify QR Code
  • Receive QR Payment
  • Payment Confirmation

Bill Payment API

Allow customers to pay multiple service providers.

Supported Categories

  • Utility Bills
  • Water Bills
  • Electricity
  • Internet
  • School Fees
  • Television Subscriptions

Remittance API

The Remittance API allows secure domestic and international money transfers.

Supported Features

  • Local Transfers
  • Cross-border Transfers
  • Beneficiary Validation
  • Transfer Status
  • Transfer History

Virtual Card API

Create and manage secure virtual payment cards.

Features include

  • Create Virtual Card
  • Freeze Card
  • Block Card
  • Card Balance
  • Transaction History
  • Card Limits
1. API Reference
1.1 Authentication

All requests directed toward OrzPay APIs must bear your secret key within the HTTP authorization headers header profile structure.

Headers Setup
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
1.2 Initiate Payment

Endpoint used to generate a secure digital collection sequence spanning local infrastructure routing paths.

Endpoint Call (cURL Request)
curl -X POST https://api.orzpay.com/v1/payments \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 50000, "currency": "UGX", "phone": "2567XXXXXXXX", "provider": "MTN", "reference": "ORDER12345", "description": "Payment for order" }'
1.3 Check Payment Status

Interrogate the billing cluster engines directly to capture execution status updates asynchronously.

GET /v1/payments/{transaction_id}
GET https://orzpay.com Authorization: Bearer YOUR_API_KEY
1.4 Send Money (Transfers)
POST /v1/transfers
{ "amount": 25000, "currency": "UGX", "recipient_phone": "25678YYYYYYY", "provider": "AIRTEL", "reference": "TRSF98765" }
1.7 QR Code Payment Pipeline
POST /v1/qr/payments
{ "qr_code": "QR_CODE_STRING_DATA", "amount": 10000, "currency": "UGX", "reference": "REFQR54321" }
1.8 Refund Execution Window
POST /v1/payments/{id}/refund
{ "transaction_id": "TXN123456", "amount": 50000, "reason": "Customer return request" }
2. API Endpoint Navigation Cards
POST

/v1/payments

Initiate a brand new customer payment request via secure localized transaction methods.

Bearer Token Required
GET

/v1/payments/{id}

Retrieve validation and absolute lifecycle confirmation records for specific transactions.

Bearer Token Required
POST

/v1/transfers

Send immediate real-time mobile liquidity settlements directly out to verified target numbers.

Bearer Token Required
POST

/v1/collections

Perform direct requests to settle pending balances directly from consumer digital assets.

Bearer Token Required
POST

/v1/qr/payments

Scan, parse, and confirm consumer retail network intents via encrypted localized optical symbols.

Bearer Token Required
POST

/v1/payments/{id}/refund

Return funds safely back into origin wallets from clear, auditable historic balances.

Bearer Token Required
GET

/v1/transactions

Pull historically processed items using complex parameters such as pagination boundaries.

Bearer Token Required
GET

/v1/wallet/balance

View absolute tracking parameters reflecting net working capital currently active.

Bearer Token Required
POST

/v1/webhooks

Define structural callback receptors to parse event responses in real-time.

Signatures Checked
3. Request Parameters (Initiate Payment)
ParameterTypeRequiredDescription
amountIntegerYesTotal processing value mapped as minor currency units.
currencyStringYesISO-4217 Currency representation matrix designation code (e.g. UGX).
phoneStringYesThe destination mobile subscriber dialing target configuration address.
providerStringYesTelecom switching core processing networks identifier (MTN, AIRTEL).
referenceStringYesUnique string identifier mapped directly from your merchant ledger.
callback_urlStringNoTarget processing URL location hook for asynchronous reporting.
4. Response Status Codes
HTTP CodeStatus TextCore Integration Meaning
200OKThe execution call successfully resolved transactions without logic flags.
201CreatedEntities structurally provisioned into persistence layer records.
400Bad RequestMalformed layout profiles or type validation limits encountered.
401UnauthorizedCryptographic validation checks failed or are completely missing headers.
429Too Many RequestsAPI processing limits triggered. Please apply exponential backoff techniques.
5. Secure Webhooks Engine

OrzPay delivers secure cryptographic payload blocks via webhook endpoints instantly upon resolution of background financial ledger interactions.

payment.success
payment.failed
payment.pending
refund.completed
wallet.credited
wallet.debited
4. Response Codes

OrzPay uses standard HTTP status response codes to signal the outcome of incoming API requests. Codes in the 2xx range indicate success, 4xx range indicate request/validation validation issues, and 5xx range indicate backend system infrastructure errors.

CodeStatusMeaning
200OKRequest completed successfully.
201CreatedTransaction successfully created.
202AcceptedRequest accepted for processing.
400Bad RequestInvalid request parameters.
401UnauthorizedInvalid or missing authentication credentials.
403ForbiddenAccess denied to requested resource.
404Not FoundRequested resource does not exist.
409ConflictDuplicate transaction hash or reference conflict.
422Unprocessable EntityValidation failed on resource payload fields.
429Too Many RequestsRate limit exceeded. Too many operations per window.
500Internal Server ErrorAn unexpected server-side error occurred.
502Bad GatewayUpstream cellular switching service node error.
503Service UnavailableService temporarily unavailable. Retry later.

Transaction Status Codes: Beyond HTTP rules, processing states trace custom lifecycle tracking schemas inside payload data objects:

StatusMeaning
PENDINGTransaction is being processed by the network provider.
SUCCESSTransaction completed and funds settled successfully.
FAILEDTransaction failed or was rejected by the cellular network.
CANCELLEDTransaction was explicitly cancelled by the customer.
REFUNDEDTransaction was successfully reversed and refunded.
EXPIREDTransaction confirmation request timed out.

ERROR HANDLING

The OrzPay API returns meaningful HTTP response codes and descriptive error messages.

Common Errors

Invalid API Key

The supplied API credentials are invalid.


Unauthorized Access

Authentication failed.


Invalid Amount

Payment amount does not meet transaction requirements.


Network Timeout

The payment provider did not respond within the expected time.


Duplicate Transaction

The supplied transaction reference already exists.


Insufficient Balance

Customer wallet balance is insufficient.

6. Error Handling (Demo Layout)

When a request fails, OrzPay returns a standard HTTP status error code paired with a descriptive JSON payload to help developers troubleshoot validation or processing errors.

402 Payment Required JSON Response
{ "error": { "type": "card_error", "code": "insufficient_funds", "message": "The mobile money account has insufficient funds to complete this transaction.", "param": "amount" } }
7. Webhook Signature Verification

To ensure incoming webhook events are sent directly by OrzPay and not tampered with, calculate a digital signature on your server and compare it against the value in the header.

Webhook Header Example
Orzpay-Signature: t=1787143200,v1=9f834af28e3912ca8b47ef1292026ba9823f
5. Webhooks Engine

OrzPay sends secure webhook notifications to your registered endpoint whenever important payment events occur. This ensures your system can update order fulfillment records automatically without manually polling status tracking endpoints.

payment.success
payment.failed
payment.pending
refund.completed
wallet.credited
wallet.debited
Webhook Notification Payload
{ "event": "payment.success", "transaction_id": "TXN123456", "reference": "ORDER12345", "amount": 50000, "currency": "UGX", "status": "SUCCESS", "timestamp": "2026-08-19T10:30:00Z" }
Expected Webhook Response (From Merchant Server)
HTTP/1.1 200 OK Content-Type: application/json { "received": true }
8. Official Client SDKs (Coming Soon)

Accelerate your integration lifecycle. While our native core servers are running final optimization tests, download our pre-release informational boilerplate models:

📦 Node.js v0.1.0-beta
📦 PHP Composer v0.1.0-beta
📦 Python pip v0.1.0-beta
9. Sandbox Environment & Testing

Every developer account grants access to an isolated staging sandbox environment to simulate payments safely without moving real money.

  • Base Sandbox URL: https://orzpay.com
  • Toggle between live keys and sandbox test keys inside your dashboard.
  • Simulate approved payments by using the keyword reference: TEST_SUCCESS.
  • Simulate a declined payment by passing the keyword reference: TEST_DECLINED.
10. Architectural Best Practices

Ensure a highly resilient connection between your merchant platform and our payment confirmation cluster routes:

  • Idempotency Keys: Always include an original transaction reference header to prevent duplicate payments from network retries.
  • Network Timeouts: Configure your HTTP client libraries to wait a minimum of 30 seconds before timing out connection tasks.
  • Webhook Fail-safes: Program your system to return a 200 OK response instantly upon receiving webhooks, before running heavy internal processing tasks.
6. Integration Examples

Review end-to-end processing scenarios below to design robust payment collection pathways on your commercial merchant application infrastructure.

Example 1: Accept a Mobile Money Payment

This workflow shows the complete asynchronous lifecycle of an MTN or Airtel Mobile Money collection call initialized from your customer checkout portal.

1
Customer Intent
The customer selects Mobile Money checkout on the merchant platform and inputs their mobile telephone number.
2
Merchant Core Request
The merchant server targets the /v1/payments endpoint over an authorized security layer with transaction metadata details.
3
OrzPay API Dispatch
OrzPay reads, records, and dispatches processing instructions to the localized target carrier core switching systems (MTN/Airtel).
4
Network USSD Push
A native secure USSD prompt appears on the target user's mobile screen demanding PIN verification to release matching wallet balances.
5
Asynchronous Webhook
Once approved, OrzPay generates a signed background callback request directed instantly to the merchant's configured endpoint asset location.
6
Merchant Balance Update
The merchant server returns an instantaneous HTTP 200 acknowledgment code back to OrzPay, closes active ledgers, and unlocks user purchases.

Example 2: Send Money (Payouts & Transfers)

This workflow explains the architectural sequence used when your merchant platform triggers outbound bulk liquidity transfers directly to a recipient's Airtel or MTN mobile money wallet.

1
Trigger Event
An automated system event (such as a merchant payout request or user withdrawal command) runs on your core server backend.
2
Balance Validation
OrzPay checks your operational escrow wallet balance to confirm there are sufficient funds to cover both the transfer value and routing fees.
3
Carrier Settlement
OrzPay securely drops processing data out onto localized clearing networks, instantly pushing balances to the destination telecom provider.
4
Instant Credit
The telecom network processes the incoming request and instantly credits the recipient's mobile wallet account balance.
5
Webhook Callback
An asynchronous callback message carrying the confirmation state string wallet.debited hits your platform's server listener interface.
Transfer API Payload Data (Informational)
{ "amount": 25000, "currency": "UGX", "recipient_phone": "25678YYYYYYY", "provider": "AIRTEL", "reference": "TRSF98765", "description": "Vendor settlement payout" }

Example 3: Handling Failed Payments & Retry Intervals

This workflow shows how the client application architecture handles common cellular exceptions—like customer rejections or system timeouts—using exponential fallback polling loops.

1
Exception Trigger
A consumer drops the screen input prompt, types an invalid PIN code, or experiences a local telecom network disconnect.
2
State Broadcast
OrzPay catches the provider's rejection message and instantly updates the internal transaction state string to read FAILED.
3
Failure Webhook
The server generates a signed background callback request containing the payment.failed event type down to your merchant platform's listener hook.
4
Failsafe Polling Loop
If your server misses the webhook due to network lag, it checks the transaction status directly using a GET /v1/payments/{id} request before timing out.
5
UI Recovery
The merchant web app catches the failure state, unlocks the checkout page interface, and prompts the user to select an alternate payment method.
Failed Webhook Event Payload Data Object
{ "event": "payment.failed", "transaction_id": "TXN00099988", "reference": "ORDER12345", "status": "FAILED", "failure_reason": "user_pin_timeout" }

Developers should perform all testing using the Sandbox environment before requesting Production access.

Sandbox Features

  • Simulated payments
  • Test callbacks
  • Transaction verification
  • Error simulation
  • Wallet testing
  • QR payment testing

Welcome to the OrzPay Developer Portal. This documentation explains how to integrate OrzPay payment services into websites, mobile applications, POS systems, and enterprise software.

Frequently Asked Questions

How do I obtain API credentials?

Register as a merchant or developer, complete verification, and generate your API keys from the Developer Dashboard.


What payment methods are supported?

OrzPay supports Mobile Money, QR Code payments, Digital Wallets, Virtual Cards, Bank Transfers, and Bill Payments.


Can I test before going live?

Yes. Developers receive Sandbox credentials for testing before Production approval.


How do webhooks work?

Whenever a payment status changes, OrzPay sends an HTTP POST notification to your registered callback URL.


Are API requests encrypted?

Yes. All API communication is protected using HTTPS and industry-standard encryption protocols.


Is there rate limiting?

Yes. API requests may be subject to rate limits to ensure platform stability and security.


Can I integrate multiple payment methods?

Yes. Developers can integrate Mobile Money, Wallet, QR Payments, Virtual Cards, and future banking services within one integration.

Need Help Integrating OrzPay?

Our technical support team is available to help you understand the API, troubleshoot integration issues, and get your application ready for production