Developer Documentation

    Build with
    Sahl APIs

    Connect to 85+ banks across MENA and Africa with a single API. Get started in minutes with our SDKs, comprehensive docs, and sandbox environment.

    Quick Start

    Go Live in 4 Steps

    From signup to first API call in under 10 minutes.

    1

    Get API Keys

    Sign up for sandbox access and receive your API credentials within minutes.

    2

    Install SDK

    Use our official SDKs for Node.js, Python, or make direct REST API calls.

    3

    Connect a Bank

    Use our drop-in widget or direct API to initiate bank connections.

    4

    Fetch Data

    Retrieve accounts, transactions, and run verification checks.

    Install an SDK

    JS
    Node.js
    npm install @sahl/node-sdk
    PY
    Python
    pip install sahl-python
    GO
    Go
    go get github.com/sahl/sahl-go
    {}
    REST API
    curl -X GET https://api.sahlfinancial.com/v1/
    Code Examples

    See It in Action

    Copy-paste examples to connect a bank and fetch transactions.

    import Sahl from '@sahl/node-sdk';
    
    const sahl = new Sahl({
      apiKey: process.env.SAHL_API_KEY,
      environment: 'sandbox' // or 'production'
    });
    
    // Create a connection session
    const session = await sahl.connect.createSession({
      customerId: 'user_123',
      redirectUrl: 'https://yourapp.com/callback',
      country: 'MA', // MA, TN, EG, NG, AE, SA
    });
    
    // Redirect user to session.connectUrl
    
    // After user connects, fetch their accounts
    const accounts = await sahl.accounts.list({
      customerId: 'user_123'
    });
    
    // Get transactions for an account
    const transactions = await sahl.transactions.list({
      accountId: accounts[0].id,
      fromDate: '2024-01-01',
      toDate: '2024-12-31'
    });
    
    console.log(`Found ${transactions.length} transactions`);
    API Reference

    Interactive API Explorer

    Test endpoints directly in your browser. Click any endpoint to expand and try it out.

    Authentication

    All API requests require three credentials in the headers. Your Client ID and Client Secret identify your application, while the Bearer token (which rotates periodically) authorizes the request. Get your credentials from the dashboard after signing up.

    # Required headers for all API requests
    X-Client-Id: your_client_id
    X-Client-Secret: your_client_secret
    Authorization: Bearer sk_live_your_rotating_token
    
    # Token rotation: Bearer tokens expire every 24 hours
    # Use the /v1/auth/token endpoint to refresh

    Bank Connection Methods

    Sahl supports multiple connection methods depending on the bank and region. Our API automatically selects the optimal method for each institution.

    Open Banking
    Europe & Middle East

    PSD2 / OAuth 2.0

    Secure token-based access via official bank APIs. User authenticates directly with their bank (Strong Customer Authentication), and we receive delegated access tokens. No credentials stored.

    Regions: EU (PSD2), UK, UAE, Saudi Arabia, Qatar
    Credential-Based
    Africa & Legacy

    Secure Screen Aggregation

    For banks without open APIs, users provide their banking credentials through our secure widget. Credentials are encrypted (AES-256) and used to aggregate data. User consent required.

    Regions: Morocco, Tunisia, Egypt, Nigeria
    // Connection method is determined automatically based on bank
    const session = await sahl.connect.createSession({
      customer_id: "cust_123",
      redirect_url: "https://yourapp.com/callback",
      country: "FR",  // France - will use PSD2/OAuth 2.0
      bank_code: "BNPAFRPP"  // Optional: pre-select bank
    });
    
    // For credential-based banks (e.g., Morocco)
    // User enters credentials in our secure widget
    // Response includes connection_method for transparency
    {
      "id": "sess_abc",
      "connect_url": "https://connect.sahl.ma/sess_abc",
      "connection_method": "oauth2",  // or "credentials"
      "auth_flow": "redirect"  // OAuth: redirect | Credentials: embedded
    }
    Supported Banks
    OAuth 2.0
    Credentials
    85 banks
    MENA Considerations

    MENA Considerations

    Bank Variability

    Data availability varies by bank. Our API normalizes responses and indicates field availability.

    Consent Audit Trails

    Full audit logs for regulatory compliance. Track consent grants, revocations, and data access.

    Arabic Support

    Transaction descriptions and merchant names available in both Arabic and English.

    Islamic Banking

    Full support for Islamic banking products including Murabaha, Ijara, and profit-sharing accounts.

    Features

    142ms p99 Latency

    Optimized infrastructure across MENA with regional endpoints for low-latency responses.

    Bank-Grade Security

    Built on the SOC 2 framework. All data encrypted in transit (TLS 1.3) and at rest (AES-256).

    85+ Bank Integrations

    Single API to connect with major banks across MENA and Africa regions.

    99.99% Uptime SLA

    Enterprise-grade reliability with automatic failover and real-time status monitoring.

    Start building today

    Get sandbox access and start integrating Sahl into your product.

    We value your privacy

    We use cookies to enhance your browsing experience, analyze site traffic, and personalize content. By clicking 'Accept All', you consent to our use of cookies. Learn more