OPay website screenshot

OPay

OPay is a Nigerian mobile money and fintech super-app operated by Blue Ridge Microfinance Bank (OPay Digital Services Limited) and majority-owned by Opera Limited with backing from SoftBank Vision Fund 2, Sequoia China, DragonBall Capital, and 9F Group. Launched in 2018 and headquartered in Lagos, OPay serves tens of millions of Nigerian consumers, merchants, and agents with wallet accounts, free interbank transfers, the OPay Debit Card, OWealth (daily-interest savings powered by OPay Microfinance Bank), bill payments, airtime/data top-ups, BNPL (OBuy / OPay Easy Buy), and the OPay POS / agent banking network. For developers and merchants, OPay exposes the OPay Cashier / OPay Checkout API — a REST API for accepting payments via 3DS bank cards, bank transfer, USSD, bank account, POS, OPay wallet QR, and reference codes, with hosted Express Checkout, server-to-server APIs, callback webhooks, refund and query operations, a PHP gateway SDK, and a WooCommerce plugin. Sandbox and production environments are available at testapi.opaycheckout.com and liveapi.opaycheckout.com, with HMAC-SHA512 signature authentication and per-merchant public/private key pairs issued from the OPay merchant dashboard.

1 APIs 15 Features
PaymentsMobile MoneyFintechSuper AppNigeriaAfricaWalletSavingsBNPLBank TransferCard PaymentsUSSDAgent BankingPOSBill PaymentsAirtimeCashierCheckoutMerchant Acquiring

APIs

OPay Cashier API

The OPay Cashier API is the primary merchant payment API behind OPay Checkout. It exposes a hosted Express Checkout endpoint (cashier/create returning a cashierUrl), server-to-s...

Collections

Features

Express Checkout

Hosted, OPay-branded checkout page returned via cashier/create — customers complete payment on OPay-managed UI and are redirected back to the merchant returnUrl.

3DS Card Payments

Direct server-to-server card acceptance with 3-D Secure step-up (REDIRECT_3DS nextAction) for Nigerian and international card schemes.

Bank Transfer

Generate a dynamic virtual account (transferAccountNumber + transferBankName) per order; OPay reconciles inbound transfer and settles the merchant.

Bank USSD Payment

Customer pays by dialling a *USSD* code on their mobile phone; common in Nigeria where USSD banking is dominant.

Bank Account Payment

Direct debit from the customer's bank account.

POS Payment

Card-present payment from an OPay POS terminal.

OPay Wallet QR Payment

Customer scans a QR code in the OPay app to pay from their wallet.

Reference Code Payment

Customer pays at an OPay agent using a reference code.

Refunds

Full or partial refunds with refund status query.

Payment Status Query

Synchronous query for order status by merchant reference or OPay orderNo.

Callback Webhooks

Server-to-server callback notifications on terminal transaction state changes (SUCCESS, FAIL, CLOSE), signed and retried by OPay.

HMAC-SHA512 Signature Authentication

All non-cashier-create endpoints authenticate via a SHA-512 HMAC signature over the JSON body using the merchant's private key, plus a MerchantId header.

Sandbox Environment

testapi.opaycheckout.com sandbox with trigger-error-by-amount testing.

WooCommerce Plugin

Drop-in WooCommerce plugin for WordPress storefronts.

PHP Gateway SDK

Official open-source PHP gateway library at github.com/opay/lib.gateway.php.

Use Cases

Nigerian E-commerce Checkout

Accept local payment methods (card, bank transfer, USSD, OPay wallet) on Nigerian e-commerce sites via Express Checkout or server APIs.

Cross-Border Online Merchants

Sell into Nigeria from international storefronts via OPay International APIs.

Marketplace Payouts

Pay agents, riders, and sellers via OPay transfers.

Bill Payment & Airtime Aggregation

Top up airtime/data and pay utility bills from within partner apps.

Wallet Top-Up

Fund OPay wallets from cards or bank transfers.

Buy-Now-Pay-Later Checkout

Offer BNPL via OBuy / OPay Easy Buy at checkout.

Agent Banking & Cash-In/Cash-Out

Leverage the OPay agent network for cash deposits and withdrawals.

POS Acceptance

Card-present acceptance via OPay POS terminals.

Integrations

WooCommerce

Official OPay WooCommerce plugin for WordPress.

Opera Browser

OPay was originally incubated inside Opera Limited and integrates with Opera browser payment flows.

Visa

Card acquiring on the Visa network.

Mastercard

Card acquiring on the Mastercard network.

Verve

Card acquiring on the Nigerian Verve network.

Nigerian Interbank Settlement System (NIBSS)

Bank transfer rails and USSD banking via NIBSS.

Wema Bank

Partner bank for virtual-account bank-transfer settlement (referenced in API responses).

Solutions

OPay Personal App

Consumer super-app for wallet, transfers, OWealth savings, debit card, bill pay.

OPay Business

Merchant suite — Cashier API, POS terminals, agent banking, payouts.

OWealth

Daily-interest savings powered by OPay Microfinance Bank Limited (CBN licensed, NDIC insured).

OPay Debit Card

Instant-issuance debit card accepted on ATM, POS, and online.

OBuy / OPay Easy Buy

Buy-now-pay-later product for OPay app users.

OPay POS

POS terminal network for merchants and agents.

Resources

🔗
Website
Website
🌐
Portal
Portal
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
🔗
APIReference
APIReference
🔑
Authentication
Authentication
🔗
Webhooks
Webhooks
💻
ErrorCodes
ErrorCodes
🔗
Sandbox
Sandbox
📝
Signup
Signup
🌐
Console
Console
🔗
Dashboard
Dashboard
💬
Support
Support
🔗
BusinessSolutions
BusinessSolutions
👥
GitHubOrganization
GitHubOrganization
📦
SDKs
SDKs
🔗
Plugin
Plugin
📜
PrivacyPolicy
PrivacyPolicy
📜
TermsOfService
TermsOfService
🔗
Twitter
Twitter
🔗
LinkedIn
LinkedIn
👥
YouTube
YouTube
🔗
Facebook
Facebook
🔗
Instagram
Instagram
🔗
AppStore
AppStore
🔗
PlayStore
PlayStore

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: OPay Cashier API
  version: '1.0'
items:
- info:
    name: Cashier
    type: folder
  items:
  - info:
      name: Create Hosted Cashier Payment Order
      type: http
    http:
      method: POST
      url: https://liveapi.opaycheckout.com/api/v1/international/cashier/create
      headers:
      - name: MerchantId
        value: ''
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: 'Create a hosted Express Checkout order. Returns a `cashierUrl` that

      the merchant redirects the customer to in order to complete payment

      on an OPay-branded checkout page. Authenticate with the merchant''s

      public key as the bearer token.

      '
  - info:
      name: Query Payment Status
      type: http
    http:
      method: POST
      url: https://liveapi.opaycheckout.com/api/v1/international/cashier/status
      headers:
      - name: MerchantId
        value: ''
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: 'Query the status of a payment order by merchant reference or by OPay

      orderNo. Authenticate with an HMAC-SHA512 signature of the JSON body

      as the bearer token.

      '
- info:
    name: Payments
    type: folder
  items:
  - info:
      name: Create Server Payment
      type: http
    http:
      method: POST
      url: https://liveapi.opaycheckout.com/api/v1/international/payment/create
      headers:
      - name: MerchantId
        value: ''
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: 'Server-to-server payment creation. The `payMethod` field selects the

      payment method — `BankCard` (3DS), `BankTransfer`, `BankUSSD`,

      `BankAccount`, `POS`, `OPay`, or `ReferenceCode`. The response

      contains a `nextAction` describing what the merchant must do next

      (redirect for 3DS, display a virtual transfer account, display a

      USSD code, etc.). Authenticate with an HMAC-SHA512 signature of the

      JSON body as the bearer token.

      '
- info:
    name: Refunds
    type: folder
  items:
  - info:
      name: Refund Payment
      type: http
    http:
      method: POST
      url: https://liveapi.opaycheckout.com/api/v1/international/payment/refund
      headers:
      - name: MerchantId
        value: ''
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: 'Refund a previously settled payment, in full or in part. Authenticate

      with an HMAC-SHA512 signature of the JSON body as the bearer token.

      '
  - info:
      name: Query Refund Status
      type: http
    http:
      method: POST
      url: https://liveapi.opaycheckout.com/api/v1/international/payment/refund/status
      headers:
      - name: MerchantId
        value: ''
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: 'Query the status of a refund by merchant refundReference or by OPay

      refundOrderNo. Authenticate with an HMAC-SHA512 signature of the

      JSON body as the bearer token.

      '
bundled: true