CLOUD
Business

How to Integrate with Saudi Banks: Server Requirements

CLOUD|February 27, 2026|3 min read|562 views
How to Integrate with Saudi Banks: Server Requirements

Integrating with mada, SADAD, or Saudi banks requires a Saudi server + static IP + specific security certificates.

Saudi Bank Integration Requirements

Integrating with Saudi payment gateways and banking systems requires meeting strict technical and security requirements. These requirements are not optional — failing to meet them means rejection or service termination.

This guide covers integration requirements for Saudi Arabia's major payment gateways: mada, Noon Payments, and others.

The Golden Rule: Saudi Server Is Mandatory

SAMA (Saudi Central Bank) requires that financial data of Saudi users be processed on servers within the Kingdom. This is a regulatory requirement, not negotiable.

Banks and payment gateways verify:
- IP address submitted in the integration request
- ASN (Autonomous System Number) — must be Saudi
- SSL certificate and its issuing authority
- Transaction data storage mechanism

mada Requirements

Technical Requirements

# 1. SSL/TLS
# - TLS 1.2 minimum
# - Certificate from internationally recognized CA
# - HSTS enabled

# 2. PCI-DSS Compliance
# - Never store card data
# - Use Tokenization only
# - Complete audit trail

# 3. Network requirements
# Static Saudi IP registered in the integration request

nginx Configuration for mada Requirements

# /etc/nginx/conf.d/payment-security.conf
server {
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384;
 ssl_prefer_server_ciphers on;

 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
 add_header X-Frame-Options DENY always;
 add_header X-Content-Type-Options nosniff always;
 add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'none'" always;

 location /checkout {
 add_header Cache-Control "no-store, no-cache, must-revalidate" always;
 add_header Pragma "no-cache" always;
 }
}

Noon Payments Requirements

# Registration requires:
# - Valid Saudi commercial registration
# - Saudi IBAN for transfers
# - Static Saudi server IP
# - Domain linked to the business
# - Valid SSL (not self-signed)
class NoonPaymentService
{
 public function initiateOrder(Invoice $invoice): array
 {
 $authHeader = base64_encode(
 sprintf('Key_%s:%s:%s',
 config('noon.business_id'),
 config('noon.app_name'),
 config('noon.app_key')
 )
 );

 $response = Http::withHeaders([
 'Authorization' => "Basic {$authHeader}",
 'Content-Type' => 'application/json',
 ])->post(config('noon.base_url') . '/order', [
 'apiOperation' => 'INITIATE',
 'order' => [
 'reference' => (string) $invoice->id,
 'amount' => $invoice->total / 100,
 'currency' => 'SAR',
 'channel' => 'Web',
 'category' => 'webstore',
 ],
 'configuration' => [
 'returnUrl' => route('portal.payment.callback'),
 'locale' => 'en',
 'paymentAction' => 'SALE',
 ],
 ]);

 return $response->json;
 }
}

PCI-DSS Database Configuration

// Migration: never store card data
Schema::create('payments', function (Blueprint $table) {
 $table->id;
 $table->foreignId('invoice_id');
 $table->string('gateway_order_id');
 $table->string('gateway_reference');
 $table->string('token')->nullable; // secure token, NOT card number
 $table->decimal('amount', 10, 2);
 $table->string('currency', 3)->default('SAR');
 $table->string('status');
 $table->string('payment_method')->nullable;
 // Never: card_number, cvv, expiry_date
 $table->timestamps;
});

Audit and Logging Requirements

# Every financial transaction must be documented
# SAMA requirement: retain records for 5 years

# Dedicated payment log in nginx
log_format payment_log '$time_iso8601 $remote_addr '
 '"$request" $status $body_bytes_sent '
 '$request_id $request_time';
access_log /var/log/nginx/payments.log payment_log;

# Protect payment logs
chmod 640 /var/log/nginx/payments.log

SAMA Compliance

Saudi Central Bank (SAMA) requirements:
- Financial data stored in Saudi Arabia
- Daily encrypted backup
- Transaction records for 5 years
- Encryption for data at rest and in transit
- Annual security review (for large integrations)

On cloud.net.sa Servers

cloud.net.sa in Riyadh and Jeddah meets all SAMA requirements:

  • Data stored within the Kingdom
  • Static Saudi IP (400 SAR/year)
  • uptime عالي مع ضمان تعاقدي guaranteed by contract
  • Daily backup included in all plans

With a dedicated IP and a contractually documented SLA, you can apply for payment gateway accreditation with confidence.

Summary

Integration with Saudi banks requires serious compliance. Saudi server, static IP, strict HTTPS, and comprehensive logs — these are not technical details but regulatory requirements. Do things correctly from the start and you will avoid rework later.

Share