S2S (Seamless API)
SADAD Bank Transfer
Process direct bank transfers via the SADAD payment network for Saudi Arabia.
SADAD Bank Transfer
Version: 3.0.0
Generate API Key for SADAD channel. Navigate to Developers → API Keys → Add new API key → Select SADAD in the Channel Dropdown.
SADAD is a direct bank transfer payment method popular in Saudi Arabia. Customers pay directly from their bank account. The flow generates an invoice that the customer completes through their banking portal.
Endpoint
| Method | URL |
|---|---|
| POST | https://api.payorc.com/s2s/v1/payment |
Please use the test credentials for sandbox testing.
Headers
| Header | Type | Required | Description |
|---|---|---|---|
merchant-key | String | Yes | Your merchant API key |
merchant-secret | String | Yes | Your merchant API secret |
Content-Type | String | Yes | Must be application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
data.action | String | Yes | Transaction action: AUTH |
data.class | String | Yes | Must be ECOM |
data.capture_method | String | Yes | AUTOMATIC |
data.payment_token | String | No | Leave empty for SADAD |
data.type | String | Yes | Must be SADAD |
data.customer_details.m_customer_id | String | No | Your internal customer ID |
data.customer_details.name | String | Yes | Customer full name |
data.customer_details.email | String | Yes | Customer email address |
data.customer_details.mobile | String | Yes | Customer mobile number |
data.customer_details.code | String | Yes | Country dial code (e.g., 966 for Saudi Arabia) |
data.order_details.m_order_id | String | Yes | Your unique order ID |
data.order_details.amount | String | Yes | Transaction amount |
data.order_details.currency | String | Yes | Must be SAR |
data.order_details.return_url | String | Yes | URL to redirect after payment |
data.items | Array | Yes | Array of order items |
data.billing_details | Object | Yes | Billing address details |
data.sadad_details.bill_type | String | Yes | Bill type code |
data.sadad_details.nat_id | String | Yes | National ID |
data.sadad_details.dob | String | Yes | Date of birth (DD/MM/YYYY) |
data.sadad_details.father_name | String | Yes | Father's name |
data.sadad_details.grand_father_name | String | Yes | Grandfather's name |
data.shipping_details | Object | No | Shipping address details |
data.urls | Object | No | Redirect and webhook URLs — see S2S Payment URLs |
Code Examples
curl --location --globoff 'https://api.payorc.com/s2s/v1/payment' \
--header 'merchant-key: YOUR_MERCHANT_KEY' \
--header 'merchant-secret: YOUR_MERCHANT_SECRET' \
--header 'Content-Type: application/json' \
--data-raw '{
"data": {
"action": "AUTH",
"class": "ECOM",
"capture_method": "AUTOMATIC",
"payment_token": "",
"type": "SADAD",
"customer_details": {
"m_customer_id": "1234",
"name": "John Doe",
"email": "[email protected]",
"mobile": "594393608",
"code": "966"
},
"order_details": {
"m_order_id": "123456",
"amount": "500",
"currency": "SAR",
"convenience_fee": "0",
"description": "SADAD bank transfer",
"return_url": "http://localhost/status"
},
"items": [
{
"title": "Product Name",
"description": "Product description",
"quantity": 1,
"unit_price": "500.00",
"discount_amount": "0.00",
"is_refundable": true
}
],
"billing_details": {
"address_line1": "Po Box 12322",
"city": "Riyadh",
"province": "Riyadh",
"country": "SA",
"pin": "54044"
},
"shipping_details": {
"shipping_name": "John Doe",
"shipping_email": "[email protected]",
"shipping_code": "",
"shipping_mobile": "",
"address_line1": "Po Box 12322",
"address_line2": "Jebel Ali Free Zone",
"city": "Dubai",
"province": "Dubai",
"country": "AE",
"pin": "54044",
"location_pin": "",
"shipping_currency": "AED",
"shipping_amount": "0"
},
"parameters": [
{ "alpha": "" },
{ "beta": "" },
{ "gamma": "" },
{ "delta": "" },
{ "epsilon": "" }
],
"custom_data": [
{ "alpha": "" },
{ "beta": "" },
{ "gamma": "" },
{ "delta": "" },
{ "epsilon": "" }
],
"urls": {
"success": "",
"cancel": "",
"failure": "",
"webhook_url": "https://merchant.example.com/webhook"
},
"sadad_details": {
"bill_type": "0",
"nat_id": "1123456789",
"dob": "01/01/2000",
"father_name": "john",
"grand_father_name": "john"
}
}
}'Success Response
SADAD returns ServerResponse.successdatamsg(new_res) — envelope { status, code, message, data }. data is the webhook/new_res object plus invoice and expiry.
{
"status": "success",
"code": "00",
"message": "Invoice created successfully",
"data": {
"m_order_id": "123460",
"p_order_id": "1000015109",
"p_request_id": "1000012345",
"psp_ref_id": "",
"transaction_id": "1000012345",
"status": "SUCCESS",
"status_code": "00",
"remark": "Invoice Created Successfully",
"currency": "SAR",
"amount": "500.00",
"m_customer_id": "1234",
"psp": "TELR",
"payment_method": "SADAD",
"m_payment_token": "",
"transaction_time": "03-01-2025 10:39:54",
"payment_method_data": {
"scheme": "",
"card_country": "",
"card_type": "",
"mask_card_number": ""
},
"apm_name": "",
"apm_identifier": "",
"sub_merchant_identifier": "0000001185",
"invoice": "90909754686279",
"expiry": "2026-05-07T13:15:26Z"
}
}Error Response
Validation / creation failure:
{
"status": "fail",
"code": "E0021",
"message": "Invoice creation failed",
"data": {
"m_order_id": "123460",
"p_order_id": "1000015109",
"status": "FAILED",
"currency": "SAR",
"amount": "500.00",
"invoice": "-",
"expiry": "-"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
status | String | API envelope: success or fail |
code | String | 00 on success; E0021 on failure |
message | String | Human-readable message |
data | Object | Invoice / order payload |
data.m_order_id | String | Your merchant order ID |
data.p_order_id | String | PayOrc order ID |
data.p_request_id | String | PayOrc request ID |
data.transaction_id | String | Transaction ID |
data.status | String | SUCCESS or FAILED |
data.amount | String | Amount |
data.currency | String | Currency code |
data.invoice | String | SADAD invoice number for the customer to pay |
data.expiry | String | Invoice expiry |
data.payment_method | String | SADAD |