Operational Efficiency
Traced from code · 16 Oct 2026

Onboarding in one picture

Two ways in: a customer on sifi.app, or a specialist in the Internal Hub. Both pass the same Gate 2 checks, go through the Hub review unless they are approved automatically, and end with a company in Core Banking and an authorised person who can log in.

Ways in
2
Shared check
1
Web steps
7
Manual steps
3
Read it in one minute

The two channels differ at the start and at the end

On the web the customer does everything, Nafath included, before submitting. In manual intake the specialist submits, and the authorised person only does Nafath and the terms after Core Banking invites them. Gate 2, the Hub review and the company creation in between are the same.

The flow

Every step, top to bottom

Boxes are steps, diamonds are decisions. Colours say who acts.

sifi.app · Internal Hub · Onboarding-MS · Core Bankingdefault settings
Customer on sifi.app Specialist in the Hub Automatic check Hub review / background job Core Banking and the authorised person Rejected
How to read it

What the picture means

Facts from the code trace, with the default settings.

Web journey

  • The customer submits at account setup (step 6), the last thing they do. Gate 2 only starts after it.
  • If the contact is not a manager on the company register, they invite the real signatory, who repeats the review and checks.
  • Nafath and the password happen before submission, so the authorised person can log in as soon as the company exists.

Manual intake

  • The specialist submits; nobody is invited at that point.
  • Gate 1 never runs: no company register, address or IBAN check, only Gate 2 on what was typed.
  • Core Banking invites the authorised person only after it has created the company; they then do Nafath, the terms and a password.
  • Every 15 minutes Onboarding-MS asks Core Banking who accepted.

Shared, with defaults

  • Gate 2 only approves automatically when AUTO_ONBOARD_ENABLED is on; it is off by default, so everything goes to the Hub review.
  • With both review flags off (the default), the Fraud / Compliance / CEO branch is skipped and files go straight to the approver.
  • Approving is not the end: the approver then clicks Onboard Company, which asks Core Banking to create the company.
Left out to keep it simple.
  • On-hold and send-back loops in the Hub review, and the "creation failed, retry" path.
  • Government platform details for manual intake, and the Hub's assisted edits on web applications.
  • The full station-by-station view with code for every step: the onboarding synoptic.
Mermaid source of this diagram
flowchart TD
    subgraph WEB["Web journey · customer on sifi.app"]
        W1["1 · Work email + OTP login"]
        W2["2 · Company details: CR, legal name, IBAN optional"]
        W3["3 · Point of contact + team members"]
        W4["4 · Review and 3 consents"]
        W5["5 · Gate 1: Wathq company register, is the contact a manager?"]
        W6{"Is the contact<br/>the signatory?"}
        W7["Signatory gets an invitation email<br/>and repeats steps 4 to 5"]
        W8["6 · Account setup: email + SMS codes, Nafath, password"]
        W9["7 · Submitted"]
        W1 --> W2 --> W3 --> W4 --> W5 --> W6
        W6 -- yes --> W8
        W6 -- no, invite --> W7 --> W8
        W8 --> W9
    end

    subgraph MAN["Manual intake · specialist in the Internal Hub"]
        M1["1 · Opens a request, picks Business or Government"]
        M2["2 · Company, contact, team, authorised person, documents"]
        M3["3 · Submit: application created, nobody invited yet"]
        M1 --> M2 --> M3
    end

    G2["Gate 2 · risk score, sanctions Focal + SAMA, PEP"]
    W9 --> G2
    M3 --> G2
    D1{"All checks pass and<br/>auto-onboard is on?"}
    G2 --> D1

    subgraph HUB["Internal Hub review"]
        H1["Queue: reviewer starts the review"]
        H2{"Route"}
        H3["Fraud team / Compliance / CEO<br/>when the review flags are on"]
        H4{"Approve?"}
        H5["Rejected"]
        H6["Approver clicks Onboard Company"]
        H1 --> H2
        H2 -- normal --> H4
        H2 -- fraud or high risk --> H3 --> H4
        H4 -- no --> H5
        H4 -- yes --> H6
    end
    D1 -- no --> H1

    CB["Core Banking creates the company"]
    D1 -- yes --> CB
    H6 --> CB

    END1["Web: authorised person already set up,<br/>logs in to the portal and app"]
    INV["Manual: Core Banking emails the invitation<br/>to the authorised person"]
    AP["Authorised person: ID + email code, SMS code,<br/>Nafath, terms, password"]
    END2["Logs in to the portal and the mobile app"]
    REC["Every 15 min Onboarding-MS checks who accepted"]

    CB -- web journey --> END1
    CB -- manual intake --> INV --> AP --> END2
    END2 -.-> REC

    classDef web fill:#e8efec,stroke:#2f473f,color:#253932
    classDef man fill:#fff4e0,stroke:#b26b00,color:#4f3300
    classDef gate fill:#252e2a,stroke:#252e2a,color:#f6f6ee
    classDef hub fill:#ffffff,stroke:#7fb3a2,color:#253932
    classDef cb fill:#e9fbe5,stroke:#158900,color:#0d4d00
    classDef bad fill:#fdebe8,stroke:#b3261e,color:#b3261e
    class W1,W2,W3,W4,W5,W6,W7,W8,W9 web
    class M1,M2,M3 man
    class G2,D1 gate
    class H1,H2,H3,H4,H6 hub
    class H5 bad
    class CB,END1,INV,AP,END2 cb
    class REC hub