PayOrc
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

MethodURL
POSThttps://api.payorc.com/s2s/v1/payment

Please use the test credentials for sandbox testing.

Headers

HeaderTypeRequiredDescription
merchant-keyStringYesYour merchant API key
merchant-secretStringYesYour merchant API secret
Content-TypeStringYesMust be application/json

Request Body

FieldTypeRequiredDescription
data.actionStringYesTransaction action: AUTH
data.classStringYesMust be ECOM
data.capture_methodStringYesAUTOMATIC
data.payment_tokenStringNoLeave empty for SADAD
data.typeStringYesMust be SADAD
data.customer_details.m_customer_idStringNoYour internal customer ID
data.customer_details.nameStringYesCustomer full name
data.customer_details.emailStringYesCustomer email address
data.customer_details.mobileStringYesCustomer mobile number
data.customer_details.codeStringYesCountry dial code (e.g., 966 for Saudi Arabia)
data.order_details.m_order_idStringYesYour unique order ID
data.order_details.amountStringYesTransaction amount
data.order_details.currencyStringYesMust be SAR
data.order_details.return_urlStringYesURL to redirect after payment
data.itemsArrayYesArray of order items
data.billing_detailsObjectYesBilling address details
data.sadad_details.bill_typeStringYesBill type code
data.sadad_details.nat_idStringYesNational ID
data.sadad_details.dobStringYesDate of birth (DD/MM/YYYY)
data.sadad_details.father_nameStringYesFather's name
data.sadad_details.grand_father_nameStringYesGrandfather's name
data.shipping_detailsObjectNoShipping address details
data.urlsObjectNoRedirect 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

FieldTypeDescription
statusStringAPI envelope: success or fail
codeString00 on success; E0021 on failure
messageStringHuman-readable message
dataObjectInvoice / order payload
data.m_order_idStringYour merchant order ID
data.p_order_idStringPayOrc order ID
data.p_request_idStringPayOrc request ID
data.transaction_idStringTransaction ID
data.statusStringSUCCESS or FAILED
data.amountStringAmount
data.currencyStringCurrency code
data.invoiceStringSADAD invoice number for the customer to pay
data.expiryStringInvoice expiry
data.payment_methodStringSADAD

On this page