Product design · 16 min read

Nafath integration guide: login UX, API flow and PDPL

Nafath integration for Saudi apps: the official login flow and API, the 60-second limit, errors, fallbacks, Arabic microcopy, PDPL consent and SAMA eKYC.

Summarize with

Every Nafath integration follows one official login pattern. The user types their National ID or Iqama number into your app, your screen shows a two-digit request number, and Nafath sends a request to their phone. In the Nafath app they accept it, pick your number from three choices and confirm with their six-digit PIN, plus a face check where required. SDAIA's user guide gives them 60 seconds.

The public Nafath API returns one of four statuses (WAITING, COMPLETED, REJECTED or EXPIRED), so design a state for each, plus a fallback. The scale is national: SDAIA counted more than 23.5 million Nafath users and over 530 connected platforms in November 2024, and SAMA has required Nafath biometrics for remote financial onboarding since November 2022.

Consent is the other half. The Personal Data Protection Law (PDPL) has been fully enforceable since 14 September 2024: a separate consent for each purpose, withdrawal as easy as agreeing, answers to rights requests within 30 days and fines of up to SAR 5 million.

This guide is for founders and product teams building Saudi apps, and it is the method I use as a product designer for Riyadh teams. I checked every rule against SDAIA, Elm and SAMA documents on 4 October 2026, and I say where the public record runs out.

Nafath, Absher and Elm: who does what

  • Absher is the Ministry of Interior's platform, established in 2010, with more than 460 services and over 28 million unified digital IDs by 2024, says Saudipedia. Users activate it at a self-service machine or a bank branch.
  • Nafath (نفاذ), the unified national access system, lets citizens and residents use that identity to sign in elsewhere. SDAIA runs it through its National Information Center (NIC), which publishes the app.
  • Elm developed Nafath with the Technology Control Company, per Wikipedia, and hosts the Nafath API. Its 2025 annual report says it extended Nafath to more than 60 financial institutions.

So when a brief says "Absher login app", a private app needs Nafath: I found no public route for third parties to sign users in to Absher directly.

OptionWho can use itWhat the user doesBest for
Nafath app requestNational ID and Iqama holders with the appAccepts, matches the number, enters PINSign-in, onboarding, step-up
Nafath web loginAbsher users without the appID number, Absher password, then an OTPA fallback, if your route offers redirects
Yaqeen (Elm)Financial institutions, with customer approvalApproves the checkChecking ID data, not signing in
Your own phone or email loginAnyoneOTP or passwordVisitors, low-risk apps

The Nafath login UX, step by step

SDAIA's Nafath user guide, dated April 2025, documents the flow. Your app owns steps 1, 2 and 7.

  1. The user enters their National ID or Iqama number and taps your Nafath button.
  2. Your screen shows the request number and asks them to open Nafath.
  3. A notification arrives, and they open the Nafath app.
  4. On the Requests screen they accept or reject your request.
  5. Nafath shows three request numbers, and they pick the one on your screen.
  6. They enter their six-digit PIN and, if your service includes one, complete a face check.
  7. Your app detects the approval, verifies the result and signs them in.

The number ties the phone to the screen the user is looking at, so make it large and say what to do with it. Nafath's Requests History lists each request with its status and date, so use a service name users recognise.

From my work: ZenPay, a mobile wallet for sending, receiving and tracking money, designed by my team.
From my work: ZenPay, a mobile wallet for sending, receiving and tracking money, designed by my team.

Nafath API integration: what the public documentation shows

The Rabet developer portal lists a "Nafath App" plan with a free setup fee, and a trial capped at 1,000 hits a day. Its API spec (version 1.0) names staging and production servers on nafath.api.elm.sa and three calls:

  • POST /api/v1/mfa/request takes your APP-ID header, a local value of ar or en (Arabic by default), your own requestId, the user's nationalId and a service type, and returns a transId and the random number to show the user.
  • POST /api/v1/mfa/request/status returns WAITING, EXPIRED, REJECTED or COMPLETED.
  • GET /api/v1/mfa/jwk returns Elm's public keys for verifying tokens.

The spec accepts a 10-digit nationalId starting with 1 to 6 or 9, and a two-digit random, so validate the ID before you call.

The spec omits prices, the callback that delivers the signed token, the list of service types and the web redirect flow. Signit, a Saudi e-signature platform, asks customers to choose Elm or SDAIA as their Nafath provider, so both routes exist; who qualifies for each is not published. Get the current integration guide before you size the work. Once you have credentials, my team can build the front end and integration.

Designing the waiting screen and its 60 seconds

SDAIA's guides say the user must accept within 60 seconds of the request being sent. Elm's spec gives no figure, and one open-source PHP library reports a longer server-side lifetime I could not confirm, so design to the 60 seconds users are told about.

  • Show the number at display size, with one instruction: open Nafath, accept the request, choose this number.
  • Keep the ID they typed visible, partly masked, with a way to change it.
  • Count down quietly. At zero, replace the number with a button for a new request.
  • On a phone the user leaves your app for Nafath, so keep the number on screen and check the status again when they return.
  • Poll every few seconds and stop at any final status.
  • Before a face check, tell users they need good light and their whole face in the frame, as SDAIA's biometric manual says, so the clock is not spent reading.

Error, timeout and edge states

StateWhat happenedWhat your screen should do
EXPIRED, or WAITING past 60 secondsThe window closedSay it expired; offer a new request with the ID kept
REJECTEDThe user declined in NafathNeutral copy; offer a retry or another method
Wrong number pickedNafath shows an error; the user must start againMake the next request one tap; the status you get is undocumented
Wrong PINHandled inside NafathKeep waiting; hint at the six-digit Nafath PIN
Service unreachableNafath could not send the requestOffer a retry later and your fallback
Request already open (reported, not official)An earlier request is pendingAsk the user to check the Nafath app
ID fails validationA typo or wrong lengthInline error before any call
COMPLETEDApprovedVerify the signed token, then sign in

The last row is the easiest to skip. The status call returns a plain word; the identity arrives as a token you check against Elm's keys.

Fallbacks when a user has no Nafath

I decide fallbacks with five questions.

  1. Does the user have an Absher account? Without the app, the Nafath web login (ID number, Absher password and a code to the Absher mobile) is the official alternative, if your route supports redirects. Link the app stores too.
  2. Is the action regulated? Remote onboarding at a SAMA-supervised institution needs Nafath biometrics, so the fallback is a branch, not a weaker form.
  3. Is the user a visitor? SAMA added visitor ID holders to remote account opening in September 2025, but I found no official Nafath document on visitor sign-in. Confirm with your provider.
  4. Is the risk low? For booking or shopping, offer phone or email sign-in and keep Nafath for step-up moments, such as a payout.
  5. Is the user a minor? The Implementing Regulation lets a legal guardian consent once you verify the guardianship, so design that path separately.

Arabic and English microcopy patterns

I define the job of each line, never official Nafath wording; the copy is then written natively and checked by Saudi reviewers.

  • Name the method. "Nafath" in English and نفاذ in Arabic, as the app's store listing writes it, on the button and in every instruction.
  • Name both documents. SDAIA's guide calls the username the National ID or Iqama number; label the field that way so residents do not hesitate.
  • Match the digits. In my Node.js test (CLDR 48), ar-SA formats numbers in Arabic-Indic digits and plain ar in Western ones. Show the request number as the Nafath app shows it in that language; that is undocumented, so check on a real phone.
  • Normalise input. Convert Arabic-Indic digits typed on Arabic keyboards to 0 to 9 before validating the ID.
  • Pass the language. Send local=ar or en to match your interface, and test both.
  • Say the next step. Every error says what happened and what to do, in both languages.

My guide to Arabic RTL interface design covers mirroring, digits and mixed text.

Saudi PDPL consent design: purposes, proof and withdrawal

Article 7 of the PDPL bars making consent a condition of a service unless the service directly relates to that processing. Article 11 of the Implementing Regulation requires consent that is free, informed, recorded with its time and means, and separate for each purpose. It must be explicit for sensitive data, credit data and decisions made only by automated processing, and Article 12 makes withdrawal at least as easy as agreeing.

ConsentWhen it appliesScreen pattern
Per purposeEvery optional useSeparate unticked toggles, one plain sentence each
ExplicitHealth, biometric or credit data; automated decisionsA dedicated step, an affirmative action, a stored record
MarketingNo prior relationship, or direct marketingIts own opt-in, and a free opt-out as easy
GuardianUsers without full legal capacityVerify the guardian, then record their consent
WithdrawalAt any timeA settings toggle as easy to reach as sign-up

Biometric data used to identify someone is sensitive under the law. When the face check happens inside Nafath, your app never captures the face; build your own face match on consent and that consent must be explicit. Enforcement is real: SDAIA's committees issued 48 decisions confirming violations in 2025, including marketing sent without consent.

Health data is sensitive too, so symptom check-ins like the CareUp assistant below, which my team designed, need explicit consent where consent is the legal basis.

From my work: CareUp, an AI healthcare app for finding a doctor and booking, designed by my team.
From my work: CareUp, an AI healthcare app for finding a doctor and booking, designed by my team.

Privacy notices, rights requests and data transfer screens

Article 12 of the law requires a privacy policy before you collect data, and Article 13 lists what to say at collection: the legal basis, the purpose, which fields are mandatory, who receives the data and whether it leaves the Kingdom. SDAIA's Privacy Policy Guideline (August 2024) suggests icons for clauses, logical headings, a dated update record and notices by app message, SMS or email.

Rights requests need real screens. You have 30 days to act, plus up to 30 more if you tell the user why in advance, through channels they choose, such as email, text message or an app. Show each request's status and due date.

The PDPL deadlines a Saudi product has to design for, from SDAIA's Implementing Regulation, read on 4 October 2026.
The PDPL deadlines a Saudi product has to design for, from SDAIA's Implementing Regulation, read on 4 October 2026.

Founders forget transfers. Article 29 allows transfers abroad for set purposes, if protection is adequate and only the minimum data leaves. Where a country is not on SDAIA's list, the Transfer Regulation (version 2.0, August 2024) requires safeguards such as standard contractual clauses, plus a risk assessment. On screen, say in the notice that data is processed outside Saudi Arabia, and where.

Skip the ID photo too: Article 31 of the regulation tells controllers to refrain from photographing or copying official identity documents unless an authority or a law requires it.

The penalties: a warning or a fine of up to SAR 5 million (Article 36), doubled for repeats, and up to two years in prison, SAR 3 million or both for disclosing sensitive data to harm someone (Article 35). I am a designer, not a lawyer: your counsel owns the wording.

What SAMA adds for fintech onboarding and eKYC

If you build for a bank or fintech supervised by the Saudi Central Bank (SAMA), its rulebook adds hard requirements.

  • Nafath biometrics. A circular of 26 November 2022 requires Nafath biometric authentication, at a high verification level or above, to start any relationship remotely, with integration due by 31 January 2023.
  • Phone matches ID. A circular of 27 December 2020 makes the Tahaqaq check part of account opening: the mobile number must belong to the ID holder. Design a clear mismatch error.
  • Who may open remotely. The remote account rules, updated on 25 September 2025, cover citizens, residents and visitor ID holders, but not existing customers of the same bank. Visitors also give a Saudi address, a home address and the purpose of their visit.
  • Yaqeen needs approval. SAMA's 2015 circular on Elm's Yaqeen requires the customer's approval, free of charge, before you fetch their ID data.
  • Digital or physical ID. A September 2024 circular asks for integration with the Ministry of Interior's Digital Document service through Elm, while customers stay free to choose either.

As I read these rules, the flow runs: ID number, Nafath biometric request, Tahaqaq phone check, consent for each purpose, then account details. Compliance writes the words; design sets the order and states, which is why I plan it first in product design for Riyadh.

Common mistakes to avoid

  1. Asking for a password, an ID photo and a selfie when Nafath already verifies identity.
  2. Treating COMPLETED as proof of identity without verifying the token.
  3. Showing the request number small, late or only after a redirect.
  4. Letting the 60 seconds run out with no countdown or new-request button.
  5. Bundling consent into the terms, or pre-ticking toggles.
  6. Hiding withdrawal deeper than sign-up.
  7. Running your own face match without explicit consent.
  8. Hosting abroad without saying so in the privacy notice.

Frequently asked questions

How does Nafath login work?

The user enters their National ID or Iqama number, and your app shows a two-digit request number. Nafath sends a request to their phone; they accept it, choose the matching number from three and enter their six-digit PIN, plus a face check where required. Your server polls the status and verifies the signed result before signing them in, within the 60 seconds SDAIA's guide allows.

Can a private company integrate Nafath?

Yes. The Rabet developer portal lists a Nafath plan with a free setup fee and a trial capped at 1,000 hits a day, and Elm's 2025 annual report says more than 60 financial institutions are connected. Approval criteria and per-verification prices are not published, so ask Elm, or SDAIA where your sector uses that route, before fixing a launch date.

Is Nafath the same as Absher?

No. Absher is the Ministry of Interior's platform for government services and digital identity. Nafath, run by SDAIA's National Information Center, lets people use that identity to sign in to other government and private services. Nafath's own web login asks for the Absher password and a one-time code sent to the mobile number registered in Absher.

Does the PDPL require consent for every purpose?

Where consent is your legal basis, yes: a separate consent for each purpose, recorded with its time and means. The law also allows other bases, such as a contract the user is party to, another law, or a legitimate interest that involves no sensitive data, so map each data use to a basis before you design toggles.

Do Saudi fintech apps have to use Nafath for onboarding?

Financial institutions supervised by SAMA do, when the relationship starts remotely. SAMA's November 2022 circular requires Nafath biometric authentication at a high verification level or above, and warns of regulatory action otherwise. Other rules sit on top, such as matching the mobile number to the ID through the Tahaqaq service.

Can I store Saudi users' data outside the Kingdom?

Sometimes. Article 29 of the PDPL allows transfers for set purposes when protection abroad is adequate and only the minimum data leaves. Where a country is not on SDAIA's list, the Transfer Regulation requires safeguards such as standard contractual clauses, plus a risk assessment. Either way, tell users in your privacy notice.

My recommendation

Design the Nafath waiting screen first, with the number, the countdown and every state in the table, then the fallback. Next, map each data use to a legal basis and give each consent its own state. A SAMA-supervised fintech should build around Nafath biometrics and Tahaqaq from day one. It is my core product design method, tuned for Saudi rules.

Building for Saudi users? See how I design Arabic-first apps for Riyadh founders, or compare the UAE side in my UAE PASS sign-in guide.

Sources and method

I collected everything below on 4 October 2026 and read the PDFs in full. Money figures are Saudi riyals from the PDPL, so I converted nothing. Data is thin in five places: the API spec omits prices, the callback, service types and the web flow; nafath.sa and iam.gov.sa refused connections from my location, so I used SDAIA-hosted guides; no official document covers visitor sign-in; the digits Nafath shows in Arabic are undocumented; and the open-source library's claims are unverified and labelled.

Tags:
  • Saudi Arabia
  • Nafath
  • PDPL
  • Authentication
  • Onboarding
  • Fintech

Keep reading

More notes from the blog.

App and UI/UX design cost in Saudi Arabia: 2026 SAR rates

Product design · 19 min read

App and UI/UX design cost in Saudi Arabia: 2026 SAR rates

App design cost in Saudi Arabia in 2026, in SAR: Clutch agency rates, Riyadh designer salaries, GOSI and Iqama costs, 15% VAT and withholding tax.

UAE PASS integration guide: login UX, API and consent

Product design · 17 min read

UAE PASS integration guide: login UX, API and consent

UAE PASS integration for UAE apps: how to design sign-in, account linking, eKYC and consent screens, with the official flows, account levels and PDPL rules.

Let’s build what’s next