GOSI icon

GOSI data API: wages, certificates, SANED

GOSI · Identity 4.7 ★

GOSI is the official Android client of the General Organization for Social Insurance, the Saudi agency that runs contributory insurance for private-sector workers, employers and beneficiaries. After a Nafath number-confirm (or a saved biometric unlock) contributors pull wage and contribution certificates, estimate a pension, file SANED unemployment insurance, update a benefit IBAN and keep digital certificates available offline; employers switch into the same client for dashboards, contributor search, wage updates, certificate issuance and a compliance indicator. Optional Taqdeer offers, step challenges and a Health Score sit beside the insurance ledger. The listing is 1 million-plus downloads, rated 4.7 from about 100,600 reviews; the developer block is General organization for social insurance - GOSI at Riyadh 12315, Saudi Arabia, support [email protected]. It is a national social-insurance wallet rather than a commercial bank app, sitting next to Nafath as the identity rail and Absher as the OTP channel.

Contributory wage rows pin contributoryWage against monthlyContributoryWage and employerContributionAmount. Certificate cards keep certificateNumber with certificateType. Benefit rows carry estimatedPension and kSanedBenefit; the signed-in card is nationalIdentificationNumber plus contributorId and ibanAccountNo.

Payroll desks recon the same contributoryWage the Riyadh tenant already shows; certificate counters issue the same certificateNumber the share sheet already lists; SANED kiosks read kSanedBenefit next to estimatedPension — openData Studio turns that insurance ledger into callable open data.

Screenshots

  • GOSI screenshot 1
  • GOSI screenshot 2
  • GOSI screenshot 3
  • GOSI screenshot 4
  • GOSI screenshot 5
  • GOSI screenshot 6
  • GOSI screenshot 7
  • GOSI screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Start Nafath login

    POST /v1/gosi/nafath osint

    Starts a Nafath login for nationalIdentificationNumber and waits for the in-app number confirm.

    Auth: Unauthenticated. Body is nationalIdentificationNumber. The user confirms a number in the Nafath app.

    • nationalIdentificationNumber
    • nafathCheck
    • status
    POST /v1/gosi/nafath HTTP/1.1
    Content-Type: application/json
    X-AppVersion: 3.2.41
    
    {
      "nationalIdentificationNumber": "1098765432"
    }
    {
      "nafathCheck": true,
      "status": "PENDING"
    }
  • Exchange Nafath session

    POST /v1/gosi/session osint

    Exchanges a confirmed Nafath login for accessToken plus the contributorName card.

    Auth: Unauthenticated after the Nafath confirm. Response accessToken is sent as Authorization Bearer on later calls.

    • accessToken
    • nationalIdentificationNumber
    • contributorName
    POST /v1/gosi/session HTTP/1.1
    Content-Type: application/json
    X-AppVersion: 3.2.41
    
    {
      "nationalIdentificationNumber": "1098765432"
    }
    {
      "accessToken": "eyJhbGciOiJIUzI1NiJ9...",
      "nationalIdentificationNumber": "1098765432",
      "contributorName": "AHMED ALI"
    }
  • Biometric unlock

    POST /v1/gosi/biometrics osint

    Unlocks a registered biometric login and returns accessToken.

    Auth: Device biometric assertion after a prior register. Returns accessToken.

    • nationalIdentificationNumber
    • accessToken
    • status
    POST /v1/gosi/biometrics HTTP/1.1
    Content-Type: application/json
    X-AppVersion: 3.2.41
    
    {
      "nationalIdentificationNumber": "1098765432"
    }
    {
      "accessToken": "eyJhbGciOiJIUzI1NiJ9...",
      "status": "OK"
    }
  • Signed-in contributor profile

    GET /v1/gosi/me osint

    Returns the signed-in contributor card: names, contributorId and ibanAccountNo.

    Auth: Bearer accessToken from POST /v1/gosi/session.

    • nationalIdentificationNumber
    • contributorName
    • contributorNameArabic
    • contributorId
    • ibanAccountNo
    GET /v1/gosi/me HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "nationalIdentificationNumber": "1098765432",
      "contributorName": "AHMED ALI",
      "contributorNameArabic": "أحمد علي",
      "contributorId": 44102,
      "ibanAccountNo": "SA0380000000608010167519"
    }
  • Active contributors

    GET /v1/gosi/contributors opendata

    Pages ACTIVE contributors with occupationName and contributoryWage.

    Auth: Bearer accessToken. Employer sessions page ACTIVE rows.

    • contributorId
    • contributorName
    • nationalIdentificationNumber
    • occupationName
    • contributoryWage
    GET /v1/gosi/contributors?status=ACTIVE&pageNo=1 HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "contributors": [{
        "contributorId": 44102,
        "contributorName": "AHMED ALI",
        "nationalIdentificationNumber": "1098765432",
        "occupationName": "Software Engineer",
        "contributoryWage": "12000.00"
      }]
    }
  • Wage summary

    GET /v1/gosi/wages openfinance

    Returns contributoryWage, monthlyContributoryWage and employerContributionAmount.

    Auth: Bearer accessToken.

    • contributoryWage
    • monthlyContributoryWage
    • averageMonthlyContributoryWageCalculation
    • employerContributionAmount
    • wpsWage
    GET /v1/gosi/wages HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "contributoryWage": "12000.00",
      "monthlyContributoryWage": "12000.00",
      "averageMonthlyContributoryWageCalculation": "11850.00",
      "employerContributionAmount": "1080.00",
      "wpsWage": "12000.00"
    }
  • Certificate catalog

    GET /v1/gosi/certificates opendata

    Lists issueable certificates with certificateNumber and certificateType.

    Auth: Bearer accessToken. Guest pre-login verify uses certificateNumber plus national ID without a session.

    • certificateNumber
    • certificateType
    • certificateWccId
    • status
    GET /v1/gosi/certificates HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "certificates": [{
        "certificateNumber": "WCC-88421",
        "certificateType": "WAGE",
        "certificateWccId": "wcc-88421",
        "status": "READY"
      }]
    }
  • Issue a certificate

    POST /v1/gosi/certificates/issue opendata

    Issues a wage, contribution or benefit certificate and returns certificateNumber.

    Auth: Bearer accessToken.

    • certificateType
    • language
    • certificateNumber
    • status
    POST /v1/gosi/certificates/issue HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Content-Type: application/json
    
    {
      "certificateType": "WAGE",
      "language": "en"
    }
    {
      "certificateNumber": "WCC-88421",
      "certificateType": "WAGE",
      "status": "READY"
    }
  • Existing benefits

    GET /v1/gosi/benefits openfinance

    Returns estimatedPension, kTotalMonthlyBenefit and benefitHistory rows.

    Auth: Bearer accessToken.

    • estimatedPension
    • kTotalMonthlyBenefit
    • eligibleToGetBenefit
    • kBenefitName
    • kMonthlyBenefit
    GET /v1/gosi/benefits HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "estimatedPension": "4800.00",
      "kTotalMonthlyBenefit": "4800.00",
      "eligibleToGetBenefit": true,
      "benefitHistory": [{
        "kBenefitName": "Retirement",
        "kMonthlyBenefit": "4800.00"
      }]
    }
  • SANED history

    GET /v1/gosi/saned opendata

    Returns SANED unemployment-insurance status and kSanedBenefit.

    Auth: Bearer accessToken. Some SANED steps also send an Absher OTP as X-Otp.

    • kSanedBenefit
    • status
    • eligibleToGetBenefit
    GET /v1/gosi/saned HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "kSanedBenefit": "2000.00",
      "status": "ELIGIBLE",
      "eligibleToGetBenefit": true
    }
  • Update benefit IBAN

    POST /v1/gosi/iban openfinance

    Submits a new ibanAccountNo for pension or benefit payouts.

    Auth: Bearer accessToken.

    • ibanAccountNo
    • status
    POST /v1/gosi/iban HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Content-Type: application/json
    
    {
      "ibanAccountNo": "SA0380000000608010167519"
    }
    {
      "ibanAccountNo": "SA0380000000608010167519",
      "status": "PENDING"
    }
  • Establishment profile

    GET /v1/gosi/establishment opendata

    Returns the employer establishmentRegistrationNo and unpaidEstablishmentList.

    Auth: Bearer accessToken on an employer session.

    • establishmentRegistrationNo
    • establishmentRegistrationNumber
    • totalNoOfEstablishments
    • unpaidEstablishmentList
    GET /v1/gosi/establishment HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Accept: application/json
    {
      "establishmentRegistrationNo": "7001234567",
      "establishmentRegistrationNumber": "7001234567",
      "totalNoOfEstablishments": 1,
      "unpaidEstablishmentList": []
    }

Data categories

  • identity
  • contributors
  • wages
  • certificates
  • benefits
  • saned
  • iban
  • establishments
  • auth-sessions

Where teams use this data

  • Payroll wage recon against the agency book

    HR pulls GET /v1/gosi/wages (contributoryWage, monthlyContributoryWage, employerContributionAmount) next to GET /v1/gosi/contributors so declared wages match the GOSI ledger before WPS filing.

  • Certificate desk at HR intake

    A staffing desk reads GET /v1/gosi/certificates then POST /v1/gosi/certificates/issue (certificateNumber, certificateType) so a wage or contribution certificate is on file without a branch visit.

  • SANED eligibility check

    A benefits kiosk reads GET /v1/gosi/saned (kSanedBenefit, eligibleToGetBenefit) beside GET /v1/gosi/benefits (estimatedPension) so unemployment and pension chips sit on one card.

  • IBAN payout update

    A pension-payment desk POSTs /v1/gosi/iban (ibanAccountNo) after GET /v1/gosi/me so a new Saudi IBAN is stored against the same contributorId.

Frequently asked questions

How does GOSI authenticate API calls?

POST /v1/gosi/nafath starts a Nafath confirm on nationalIdentificationNumber. POST /v1/gosi/session exchanges it for accessToken. POST /v1/gosi/biometrics unlocks a saved biometric. Later calls send Authorization Bearer accessToken.

Which endpoints expose wages and contributors?

GET /v1/gosi/wages returns contributoryWage, monthlyContributoryWage and employerContributionAmount. GET /v1/gosi/contributors pages ACTIVE rows with occupationName. GET /v1/gosi/me returns contributorId and ibanAccountNo.

What certificate and benefit fields are returned?

GET /v1/gosi/certificates lists certificateNumber and certificateType. POST /v1/gosi/certificates/issue issues one. GET /v1/gosi/benefits returns estimatedPension. GET /v1/gosi/saned returns kSanedBenefit.

Does the API cover IBAN updates and establishments?

Yes. POST /v1/gosi/iban submits ibanAccountNo. GET /v1/gosi/establishment returns establishmentRegistrationNo and unpaidEstablishmentList on an employer session.

Apps similar to GOSI

  • VssID — VssID is Vietnam Social Security's citizen self-care client with an e-book and BHYT card; GOSI is the Saudi equivalent with wage certificates, SANED and a Nafath login.
  • Pak Identity — Pak Identity is NADRA's CNIC vault; GOSI instead centres on social-insurance wages, certificates and benefit IBANs after a Nafath confirm.
  • Налоги ФЛ — Налоги ФЛ is Russia's Federal Tax Service self-care client; GOSI is the Saudi social-insurance ledger rather than a tax cabinet.
  • Microsoft Authenticator — Microsoft Authenticator stores work-or-school OTPs; GOSI consumes Nafath as the national identity rail and optional on-device biometrics for the same insurance account.
  • Absher — Absher is the Interior Ministry's national services app and the OTP channel GOSI uses for some SANED steps; GOSI itself is the social-insurance wallet.
  • Nafath — Nafath is the national digital-identity confirm app: GOSI starts a number-confirm there, then exchanges it for the insurance session.
  • DigiLocker — DigiLocker is India's issued-document wallet; GOSI's wage and contribution certificates play the same role for Saudi social insurance.

Topics

  • gosi api
  • saudi social insurance api
  • contributoryWage
  • certificateNumber
  • saned api
  • nafath gosi
  • ibanAccountNo
  • riyadh insurance api

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote