Skip to content

OpenWaveOpen payments. Open banking. One interoperable standard.

An Apache 2.0 standard developed by Neptune. Fintech for bank payments, NPT identity, Open Banking consent, webhooks, settlement, and gateway-to-gateway switching.

OpenWave Logo
4OpenAPI Spec Files
60+API Endpoints
4Integration Roles
Apache 2.0Open License

OpenWave is developed and maintained by Neptune. Fintech as open infrastructure: product-neutral, bank-agnostic, and built for a multi-gateway ecosystem.

Read the architecture

Architecture in motion

OpenWave standardizes the contract between apps, gateways, identity, banks, and settlement rails.

The moving paths are separated by purpose: session creation, customer authorization, alias resolution, bank execution, webhook confirmation, and gateway-to-gateway routing.

Merchant boundaryNo bank OTP collection, no direct CBS calls.Gateway boundaryShort-lived hosted tokens and idempotent routing.Bank boundaryBank performs SCA and owns account execution.

How OpenWave works

Three different flows. One standard contract.

Each flow below cycles through the real responsibility split: who starts it, where customer authorization happens, who moves money or data, and what the receiving system can trust.

Payment routing

Merchant integrates once. The gateway chooses the route.

1Session2NPT / IBAN resolve3Bank SCA4Same-bank or LyPay5Signed webhook

Open Banking

Consent is scoped, visible, and bound to one TPP and bank.

1TPP requests scopes2Customer sees consent3Bank verifies SCA4Token issued5Accounts API

Gateway interconnect

Two gateways can route one payment without becoming one system.

1Discover2Remote alias3Route payment4Status5Net settlement

What is OpenWave?

OpenWave is an open API standard created and maintained by Neptune. Fintech for payments, Open Banking, identity, settlement webhooks, and gateway interconnect. It defines a unified contract so any bank, merchant, fintech, or gateway operator can plug into a single interoperable network without bilateral agreements between every participant.

Libya's problem: Customers are locked to their bank's app. Merchants integrate with each bank separately. There is no shared payment identity layer. Money can't move freely.

OpenWave's solution: one standard that every participant implements. A bank integrates once, and every merchant on any compliant gateway can accept payments from its customers.

Developer path

Read the standard by integration role

OpenWave is split by who is calling whom. Merchant APIs use bearer merchant keys, banks expose gateway callbacks, TPPs use OAuth 2.0 + PKCE, and gateways use OW-GIP with gateway keys and mTLS.

Payments Module
  • Payment sessions (IBAN + NPT alias)
  • OTP & push notification auth
  • Recurring mandates
  • Same-bank & LyPay cross-bank routing
  • Settlement status & webhook events
Open Banking Module
  • OAuth 2.0 + PKCE consent flow
  • AISP: accounts, balances, transactions
  • PISP: payment initiation by TPPs
  • SCA (Strong Customer Authentication)
  • Bank capability advertisement
Identity Registry
  • NPT handle ownership & governance
  • Multi-bank account linking
  • Public alias resolution
  • Bank phonebook & directory
  • Cross-gateway handle federation

Payment Flow at a Glance

Merchant           OpenWave Gateway        Debtor Bank (CBS)     CBL LyPay     Merchant Bank
   │                      │                       │                  │               │
   │── POST /payments ────►│                       │                  │               │
   │   /initiate          │                       │                  │               │
   │◄── { payment_url } ──│                       │                  │               │
   │                       │                       │                  │               │
   │  [Customer opens checkout URL]                │                  │               │
   │                       │── resolve alias ─────►│                  │               │
   │                       │── send OTP ──────────►│                  │               │
   │                       │◄── OTP verified ──────│                  │               │
   │                       │                       │                  │               │
   │          ┌────────────────────────────────────────────────────────────────────┐  │
   │          │  SAME_BANK: internal CBS book transfer (instant)                   │  │
   │          │  LYPAY:  debit at debtor CBS → LyPay instruction → credit at      │  │
   │          │          merchant bank (2–10 seconds)                              │  │
   │          └────────────────────────────────────────────────────────────────────┘  │
   │                       │◄── credit confirmed ──────────────────────────────────── │
   │◄── payment.completed ─│                       │                  │               │
   │    webhook            │                       │                  │               │

Full settlement docs | Architecture overview


Security model in one minute

SurfaceCallerAuthenticationCustomer protection
PaymentsMerchant backend → GatewayAuthorization: Bearer mk_...Hosted checkout or SDK session token, bank OTP or push SCA
Bank callbacksGateway → Bank middlewareX-OpenWave-Internal-Key: ow_cbk_...Bank performs OTP/push verification before debit
Open BankingTPP → GatewayOAuth 2.0 Authorization Code + PKCEHosted consent screen, explicit scopes, revocation
IdentityBank → RegistryX-OpenWave-Bank-Key: owbk_...Bank can only manage accounts it vouched for
Gateway interconnectGateway → GatewayX-OpenWave-Gateway-Key: owgw_... + production mTLSIdempotent routes, signed settlement batches

Downloads

Payments OpenAPI
openwave-payments-v1.yaml
Open Banking OpenAPI
openwave-open-banking-v1.0.yaml
Identity Registry OpenAPI
openwave-identity-v1.0.yaml