POS Integration (API)

This integration establishes a seamless and wireless connection between your system and the OPay POS. It streamlines the payment collection process to eliminate human errors, reduce the turnaround time, and ensure a smooth reconciliation experience by synchronizing payment results in real-time.

PosServer

Create Payment Order

URL: https://payapi.opayweb.com/openApi/order/checkout/createOrder

Request

ParameterTypeRequiredDescription
headMerchantIdStringYesYour OPay Business ID
merchantIdStringYesYour OPay Branch ID
outOrderNoStringYesYour business order number
amountObjectYesOrder amount, in Naira
currencyStringYesNGN
orderExpireTimeLongYesOrder expiry time, in seconds
sceneEnumStringYesPlease use Cash_API
subSceneEnumStringYesPlease contact OPay to get this value.
snStringYesPOS Serial Number
isSplitStringYesSplit settlement? Y stands for YES; N stands for NO.
Show more parameters

POST
{
  "headMerchantId":"256622040884147",
  "merchantId":"256622040884147",
  "outOrderNo":"2334345345345211",
  "amount":"100",
  "currency":"NGN",
  "orderExpireTime":180,
  "isSplit":"N",
  "splitInfo":null,
  "productInfo":{
      "filmName":"film name",
      "filmTitle":"ticket title",
      "filmTicketNum":"film ticker number",
      "seatNum":"Seat number(multiple seats, concatenate)",
      "filmTicketAmount":"1",
      "filmFeeAmount":"1",
      "filmDate":"movie date yyyy-MM-dd",
      "filmTime":"movie showtime, hh:mm"
  }
  "remark":"XX",
  "sceneEnum":"CASH_API",
  "subSceneEnum":"FILM",
  "sn":"XXXX"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Response

ParameterSample ValueTypeDescription
orderNo20220704741380171865833472StringOPay payment order number

Response Demo
{
  "code": "00000",
  "message": "SUCCESSFUL",
  "sign": "yUJrerHr9GqKP7y......",
  "timestamp": "1283203360637",
  "data": {
    "orderNo": "20220704741380171865833472"
  }
}
1
2
3
4
5
6
7
8
9

Webhook (Payment Notification)

Please submit your Webhook URL using the Super Admin role on your OPay Business Dashboard > Developer Tool page > "POS & Others" section. OPay will use this URL to send you requests to synchronize payment statuses.

Request Header

ParameterTypeRequiredDescription
Content-TypeStringYes-
X-Opay-TranidStringYesTransaction order/No.
merchantIdStringYesBranch ID

Request Body

ParameterTypeRequiredDescription
clientAuthKeyStringYesOne unique KEY for each merchant. You can get it from your OPay Business Dashboard > Developer Tools.
versionStringYesCurrent version: V1.0.1
bodyFormatStringYesJSON.
timestampStringYesThe timestamp is the number of milliseconds since January 1, 1970 (midnight UTC/GMT). The validity period is 5 minutes.
paramContentStringYes
signStringYes

Request Demo
{
  "clientAuthKey": "b819c755d80b4c268f831f0cef69a22e",
  "version": "V1.0.1",
  "bodyFormat": "JSON",
  "timestamp": "1283203360637",
  "paramContent": "gkFFz97z1sEbbOeVPdoR+cHkf4Ib........",
  "sign": "ORDVpacVCNW0yiSviNeow......"
}
1
2
3
4
5
6
7
8

Request Parameters

Here are the data you will get from OPay's payment notification:

ParameterTypeRequiredDescription
outOrderNoStringYesYour business order number
orderNoStringYesOPay payment order number
statusStringYesPayment status
currencyStringYesNGN
amountStringYesYour Payment amount, in Naira
feeStringYesTransaction fee, in Naira
feePatternStringYes
senderNameStringYesSender's name
senderAccountStringYesSender's account number
recipientNameStringYesRecipient's name
Show more parameters
Request Demo
{
  "data": {
    "outOrderNo": "220617145660907314088",
    "orderNo": "20220319702512368471543808",
    "status": "SUCCESS",
    "currency": "NGN",
    "amount": "100.00",
    "fee": "10.00",
    "feePattern": "IN_DEDUCT",
    "senderName": "Alice",
    "senderAccount": "23234324*****23423",
    "recipientName": "Michael",
    "recipientAccount": "+2345656567878",
    "transactionTime": "1692773950143",
    "completedTime": "1692773950143",
    "transactionType": "apiCheckout",
    "transactionName": "API CheckOut",
    "payType": "POS",
    "sn": "XXXXX",
    "remark": "test"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Response

Here are the data you will get from OPay's payment notification:

ParameterSampleTypeDescription
code00000StringResponse successful
messageSUCCESSFULString
Response Demo
{
  "code": "00000",
  "message": "SUCCESSFUL"
}
1
2
3
4

Query Order Details

URL: https://payapi.opayweb.com/openApi/order/checkout/qryOrderDetail

Request

ParameterTypeRequiredDescription
headMerchantIdStringYesYour OPay Business ID
merchantIdStringYesYour OPay Branch ID
outOrderNoStringOptional
Your business order number.
You should pass either outOrderNo or orderNo.
orderNoStringOptional
OPay payment order number.
You should pass either outOrderNo or orderNo.

POST
{
  "headMerchantId": "256622040884147",
  "merchantId": "256622040884147",
  "outOrderNo": "2334345345345211",
  "orderNo": "20220704741380171865833472"
}
1
2
3
4
5
6

Response

ParameterTypeDescription
codeStringResponse successful
messageString
signString
timestamp
dataObject
outOrderNoStringYour business order number
orderNoStringOPay payment order number
payNoStringOPay payment serial number
headMerchantIdStringYour Business ID
merchantIdStringYour Branch ID
Show more parameters

Response Demo
{
  "code": "00000",
  "message": "SUCCESSFUL",
  "sign": "yUJrerHr9GqKP7y......",
  "timestamp": "1283203360637",
  "data": {
    "outOrderNo": "2334345345345211",
    "orderNo": "20220704741380171865833472",
    "payNo": "2334345345345245",
    "headMerchantId": "256622022480363",
    "merchantId": "256622022480364",
    "status": "SUCCESS",
    "senderName": "Alice",
    "senderAccount": "23234324*****23423",
    "recipientName": "Michael",
    "recipientAccount": "+2345656567878",
    "amount": "100.00",
    "fee": "10.00",
    "feePattern": "OUT_DEDUCT",
    "currency": "NGN",
    "transactionTime": "1692773950143",
    "completedTime": "1692773950143",
    "transactionType": "apiCheckout",
    "transactionName": "API CheckOut",
    "payType": "POS",
    "sn": "XXXX",
    "remark": null
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Last Updated: 11/7/2024, 2:29:28 AM