Make payroll payments using SingleView API services
Process Payroll API enables businesses to submit payroll details, including company information, payroll references, employee payment amounts, beneficiary bank details, and salary breakdowns.
The API returns an acknowledgement indicating whether the payroll submission is being processed, along with any available bank references and status information. If the payroll is still being processed, use the Payroll Enquiry API to retrieve the latest status.
Important: A response with the status Processing indicates that the payroll is being processed and does not confirm that all salary payments have been completed successfully. Use the Payroll Enquiry API to retrieve the updated status after 30 minutes, as indicated in the response.SequenceNum is unique for each transaction. Payments with same sequence number appear as duplicate transactions and affects their processing and enquiry operations.#, &, *, %, =, ^, _, \, {, |, }, ~, ", ;, @, [, ], `Domain details
Environment
Domain
Rate/Limit
Sandbox
3 Calls per Minute
Production/LIVE
To be provided upon onboarding
Based on contract
Endpoint URL | Method | Authentication requirements |
|---|---|---|
| POST |
|
curl --location 'https://sandboxapi.onesingleview.com/api/v2/payroll/payment' \
--header 'CompanyId: MYCOMPANY'
--header 'SVReferenceID: SV150619940615'
--header 'DateTimeStamp :2025-01-02T10:20:39'
--header 'Device: Web'
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiTDNyMmpxV29JS2I4MTNodDBNMlZ4WGpFZmR6WFNWaTFad3B5QnlkOVpHelZXR2ZwUmFQNUV1TXl6S1Aybi94Y0lwR2V5STNNMkdPL1pqakd4ZG0yclJKUkdhRXlaWGNpWnZnOHArMWIyOGtOQTVkZ0VKajVVSEdiTmtNPSIsImlhdCI6MTczNTgwMTQ3NywiZXhwIjoxNzM1ODA1MDc3fQ.Bh7LFkvxNFrLe9dmH5rURWjGpES-u4z2EGeyrNM7z6E'
--header 'Content-Type: application/json' \
--data '{
"Message": {
"OSVPayrollPaymentRequest": {
"TransactionType": "PP",
"BankCode": "ALRAJHI",
"CompanyCode": "125001291",
"PayrollReferenceNumber": "98198322",
"CorporateCommercialRegistrationNumber": "CCRN1237",
"MolCorporateID": "MOLID51922",
"FileSeqNo": "0501",
"Date": "240103",
"Currency": "SAR",
"OSVPayrollOrderingDetails": {
"OrderingInstitution": "RJHISARI",
"OrderingCustomerAccountNumber": "",
"OrderingCustomerName": "National Company",
"OrderingCustomerAdd1": "Suite 3, Business Bay Building",
"OrderingCustomerAdd2": "Umm Thumamah Road, Riyadh",
"OrderingCustomerAdd3": "P.O. Box 28, Riyadh 11411"
},
"TransactionData": [
{
"SequenceNum": "981983200113",
"Amount": "5000",
"PaymentDetails": "WPS Payroll",
"BeneficiaryDetails": {
"BeneficiaryAccountWithInstitutionBIC": "RJHISARI",
"BeneficiaryAccount": "SA0580000204608015129224",
"BeneficiaryName": "Abdul Rahman",
"BeneficiaryAdd1": "Flat 28, Al Ameen Towers, Al Akhi Rd",
"BeneficiaryAdd2": "Jeddah",
"BeneficiaryAdd3": "Branch Off, P.O Box 55585, Jeddah"
},
"SalaryDetails": {
"Id": "2843806024",
"EmployeeID": "123457",
"BasicSalary": "4000",
"HousingAllowance": "1000",
"OtherEarnings": "1000",
"Deductions": "1000"
}
},
{
"SequenceNum": "981983200114",
"Amount": "5000",
"PaymentDetails": "WPS Payroll",
"BeneficiaryDetails": {
"BeneficiaryAccountWithInstitutionBIC": "RJHISARI",
"BeneficiaryAccount": "SA0580000204608015129115",
"BeneficiaryName": "Ali",
"BeneficiaryAdd1": "Flat 16, KSA Heights, Al Rabie Road",
"BeneficiaryAdd2": "Riyadh",
"BeneficiaryAdd3": "Head Off P.O Box 66674, Riyadh"
},
"SalaryDetails": {
"Id": "2843806023",
"EmployeeID": "123456",
"BasicSalary": "4000",
"HousingAllowance": "1000",
"OtherEarnings": "1000",
"Deductions": "1000"
}
}
],
"TransactionComment": "WPS Payroll",
"TotalTransactionCount": "02",
"TotalTransactionAmount": "10000.00"
}
},
"Signature": "UMEH9M8tXknuRnnkrzRjDHaxFRLyZJ+wDNAl408+nTWyfTKaVcBkLLPhX5DKjTX18HK/oEJ8rmSeoswQuKzk9F2WIcXwZI9C+h7GA5d6r0FEu9hAYG+tDjFSyPDPHunMbILe1rgIlenbHra24Xt2IxAqj5115FEhJyabV0saIveNfK4sPOWtB+HeEAhwP6pwHETZoO4Z9kiMgdIbBbyD43IpRyxVQzogtlNKrkRaW/k16eIGzeS8Nh5g0txEoa3aocQTiVqzEtkwBXMKKUnoMZMCIOsPh7XNDN9nmsad0CNHr5wwJZoc9gC2e/d7fWuUu8xqe8AaSWXm3xTIfostIg=="
}'Request parameters
JSON Tag | Requirement | Description | Data type |
|---|---|---|---|
OSVPayrollPaymentRequest | Mandatory | Root node containing all the payroll payments transaction information | Object |
TransactionType | Mandatory | Type of transaction to be mentioned as | String |
BankCode | Mandatory | Unique bank identification code (SingleView Identifier)
| String |
CompanyCode | Mandatory | Unique company identification code | String |
PayrollReferenceNumber | Mandatory | Unique 16 digit reference number generated by the customer for each payroll processing | String |
CorporateCommercialRegistrationNumber | Conditional | Unique corporate commercial registration identification details | String |
MolCorporateID | Conditional | Unique MoI assigned corporate identification details | String |
FileSeqNo | Conditional | 4 digit file sequence number of the WPS payroll request in MMSS format where: | String |
Date | Mandatory | Date of the transaction in YYMMDD format | String |
Currency | Mandatory | 3 digit code representing the currency of the transaction | String |
OSVPayrollOrderingDetails | Mandatory | Tag carrying information about the company or account initiating the payroll payments | Object |
OrderingInstitution | Mandatory | Institution identifier (BIC) of the ordering institution | String |
OrderingCustomerAccountNumber | Mandatory | Account number of the ordering customer | String |
OrderingCustomerName | Mandatory | Name of the ordering customer as per bank records | String |
OrderingCustomerAdd1 | Mandatory | Ordering Customer’s Address Line 1 | String |
OrderingCustomerAdd2 | Mandatory | Ordering Customer’s Address Line 2 ( | String |
OrderingCustomerAdd3 | Mandatory | Ordering Customer’s Address Line 3 | String |
TransactionData | Mandatory | Tag carrying information on the individual employee payment instructions. Each entry represents a payroll transaction. | Object |
SequenceNum | Mandatory | Unique sequence number identifying the employee payment transaction | String |
Amount | Mandatory | Payment amount for the employee | String |
PaymentDetails | Mandatory | Description of the payment, such as | String |
BeneficiaryDetails | Mandatory | Tag carrying identification details of the employee receiving the salary payment | Object |
BeneficiaryAccountWithInstitutionBIC | Mandatory | BIC or institution identifier associated with the beneficiary account | String |
BeneficiaryAccount | Mandatory | Beneficiary's bank account or IBAN | String |
BeneficiaryName | Mandatory | Name of the employee receiving the payment | String |
BeneficiaryAdd1 | Mandatory | First line of the beneficiary address | String |
BeneficiaryAdd2 | Mandatory | Second line of the beneficiary address ( | String |
BeneficiaryAdd3 | Mandatory | Third line of the beneficiary address | String |
SalaryDetails | Mandatory | Tag carrying information of employee identifiers and the components used to describe the salary payment | Object |
Id | Mandatory | Employee or payroll identifier required by the applicable bank | String |
EmployeeID | Conditional | Employee identification code assigned by the company | String |
BasicSalary | Mandatory | Employee's basic salary amount | String |
HousingAllowance | Mandatory | Housing allowance amount | String |
OtherEarnings | Mandatory | Additional earnings included in the salary breakdown | String |
Deductions | Mandatory | Applicable deductions | String |
TransactionComment | Mandatory | Comment description of the overall payroll request | String |
TotalTransactionCount | Mandatory | Total number of employee payment transactions included in the request | String |
TotalTransactionAmount | Mandatory | Aggregate amount submitted for processing | String |
Signature | Mandatory | Encrypted string generated using a Private Key/CA-Signed Certificate with SHA-256 and RSA (JCE Signature) | String |
{
"OSVPayrollPaymentResponse": {
"BankCode": "ALRAJHI",
"CompanyCode": "125001291",
"PayrollReferenceNumber": "98198322",
"StatusCode": "Processing",
"ErrorCode": "",
"StatusDetail": "Payroll payments are being processed. Perform payroll enquiry after 30 mins to get updated status.",
"TimeStamp": "2026-07-09T10:20:39",
"OSVPayrollDetails": {
"MessageDescription": "Payroll Message Acknowledgement",
"Date": "240103",
"FileSeqNo": "0501",
"BankReferenceNumber": ""
}
}
}Response parameters
JSON Tag | Description | Data type |
|---|---|---|
OSVPayrollPaymentResponse | Tag carrying information on the payroll response | Object |
BankCode | Code identifying the bank processing the payroll
| String |
CompanyCode | Company identifier associated with the request | String |
PayrollReferenceNumber | Payroll reference returned by the bank or service | String |
StatusCode | Code denoting the payroll response status | String |
ErrorCode | Error code returned when applicable. An empty value indicates that no error code is provided in this example. | String |
StatusDetail | Descriptive message explaining the status or the next recommended action | String |
TimeStamp | Date and time associated with the response | String |
OSVPayrollDetails | Tag carrying additional payroll acknowledgement and bank-specific reference information | Object |
MessageDescription | Description of the bank or service response | String |
Date | Payroll date as specified in the request | String |
FileSeqNo | Payroll file sequence number returned in the response only by | String |
BankReferenceNumber | Bank-generated reference number provided only by | String |
PP for payroll requests.YYMMDD format.Processing as an interim status rather than confirmation of completed salary payments.StatusCode | StatusDetail |
|---|---|
Processing | Payroll payments are being processed. Perform payroll enquiry after some time to get updated status. |
Failed | Failure description |
Response_Timeout | Timeout! Unable to get response from the bank. Please contact SingleView support. |