Registry entry

Singapore Driving Licence — Application, Replacement, and Renewal (SPF e-Services)

Apply for a first Qualified Driving Licence after passing the required tests, replace a lost/damaged/defaced licence, or (for eligible foreigners) renew a Photocard Driving Licence, via the Singapore Police Force Traffic Police e-Services (login with Singpass), on behalf of the Singapore Police Force. This is the DMV analogue to us/ca/dmv/drivers-license-renewal, gb/dvla/driving-licence-renewal-photocard, ie/dttas/driving-licence-renewal, ca/on/mto/drivers-licence-renewal, nz/nzta/drivers-licence-renewal, and au/nsw/service-nsw/driver-licence-renewal, and closes out the DMV vertical's last-but-one open jurisdiction candidate. One document models all three application types (a reason-style routing field, the same pattern used by sg/ica/passport-application), since SPF's own source page presents them as three sections of one e-Services offering rather than three separate services. Scoped to: (1) new-licence applicants who have already passed the required theory/practical tests and training (this document does not model booking or sitting those tests, which happen at a driving centre); (2) Singapore Citizens, Permanent Residents, or foreigners holding a qualifying pass replacing a lost, damaged, or defaced licence; and (3) foreigners holding a valid work pass (work permit, employment pass, student pass, dependant pass, or another pass showing extended stay) renewing a Photocard Driving Licence, including the additional medical-certification gate for renewal applicants aged 65 or above. Out of scope, and not modelled: the driving-centre test-booking/training process itself; renewal of a Singapore Citizen's or Permanent Resident's own licence (the source page's 'Renewal' section is titled, and scoped, to foreigners only — see VERIFICATION.md for this open question); the in-person endorsement-sticker process for an existing licence holder adding a new class; the in-person Singapore Safety Driving Centre renewal path required for Class 4/4A/5 licences when the foreign renewal applicant is 65 or above; and applicants without Singpass access (no alternative channel is described by this source). This document does not submit any application, replacement, or renewal; the live police.gov.sg e-Services and SPF sources are always authoritative (see VERIFICATION.md).

Registry entry

sg/spf/driving-licence-application

Jurisdiction
Singapore · national
Version
1.0.0
Verification
draft

GovSchema spec v0.3

Authoritative source No form number — online self-service via SPF Traffic Police e-Services (login with Singpass)

Machine access

Schema document
registry/sg/spf/driving-licence-application/1.0.0/schema.jsonapplication/schema+json
Registry catalog
registry/index.jsonone record per schema id

Field reference

21 fields across 6 steps, read from the published schema.json — names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.

What would you like to do?

  • applicationType enum required

    new_application = apply for a first Qualified Driving Licence after passing the required tests; replacement = replace a lost, damaged, or defaced licence; renewal_foreigner_photocard = renew a foreigner's Photocard Driving Licence.

    enum: new_application | replacement | renewal_foreigner_photocard
  • hasSingpassAccess boolean required

    Every applicant group and every application type on the source page applies via 'e-Services / Log in using SingPass'; no alternative non-Singpass channel is independently described on this page (unlike, for example, sg/acra/sole-proprietorship-registration's Bizfile source, which does describe a corporate-service-provider alternative for applicants without Singpass). Modelled conservatively as a gate rather than asserting an undocumented alternative path. If false, the flow ends here.

New licence — tests and training completed

  • licenceClassApplied enum required

    The class of Singapore driving licence being applied for.

    enum: 8 values
  • hasPassedBasicTheoryTest boolean required

    Required for all licence classes before applying for a new driving licence. If false, the flow ends; tests are booked and sat at a driving centre, not modelled here.

  • hasPassedFinalTheoryTest boolean required

    Required for all licence classes before applying for a new driving licence. If false, the flow ends; tests are booked and sat at a driving centre, not modelled here.

  • isApplyingForMotorcycleClass boolean required

    Determines whether the Riding Theory Test requirement applies. The 2B/2A/2-are-motorcycle-classes mapping is common knowledge in Singapore's licensing scheme but is not itself spelled out verbatim on this source page (which only says the Riding Theory Test is 'for motorcycle learner motorists only') — asked directly rather than hard-coded against licenceClassApplied, so this document does not silently assert an unsourced class-to-vehicle-type mapping. See VERIFICATION.md.

  • hasPassedRidingTheoryTest boolean optional

    Required only for motorcycle learner motorists. Required when isApplyingForMotorcycleClass is true. If false in that case, the flow ends; tests are booked and sat at a driving centre, not modelled here.

  • hasCompletedSimulatorTraining boolean required

    Listed under 'All' licence classes in the source's test/training table. If false, the flow ends; training is completed at a driving centre, not modelled here.

  • hasCompletedExpresswayFamiliarisationRide boolean optional

    Required only for Class 2B. Required when licenceClassApplied is 2B. If false in that case, the flow ends; this training is completed at a driving centre, not modelled here.

  • hasPassedPracticalTest boolean required

    Required for all licence classes before applying for a new driving licence. If false, the flow ends; the test is booked and sat at a driving centre, not modelled here.

Your application details

  • applicantGroup enum required

    singapore_citizen_or_pr = Singapore Citizen or Permanent Resident; foreign_work_pass_holder = foreigner holding a valid work pass issued by the Ministry of Manpower (MOM); foreign_student_or_ltvp_holder = foreigner holding a Student Pass or Long-Term Visit Pass issued by the Immigration & Checkpoints Authority (ICA).

    enum: singapore_citizen_or_pr | foreign_work_pass_holder | foreign_student_or_ltvp_holder
  • enrolledAsLearnerAfterOct2018 boolean required

    If true, the photograph taken at enrolment will be printed on the new licence, with no further photo action needed. If false, the applicant must have a photograph taken at the driving centre before applying, which this document does not itself carry out.

Replacement details

  • applicantGroup enum required

    singapore_citizen_or_pr = Singapore Citizen or Permanent Resident; foreign_work_pass_holder = foreigner holding a valid work pass issued by the Ministry of Manpower (MOM); foreign_student_or_ltvp_holder = foreigner holding a Student Pass or Long-Term Visit Pass issued by the Immigration & Checkpoints Authority (ICA).

    enum: singapore_citizen_or_pr | foreign_work_pass_holder | foreign_student_or_ltvp_holder
  • replacementReason enum required

    The reason the current licence is being replaced.

    enum: lost | damaged | defaced
  • existingLicenceNumber string required

    The licence number of the licence being replaced or renewed, used to identify the applicant's record via SPF e-Services (login with Singpass). Not directly named as a specific field by the source, which describes the application channel only as 'e-Services / Log in using SingPass' — included by analogy to every other online driver-licence replacement/renewal in this registry (see VERIFICATION.md), the same reasonable-inference discipline as au/nsw/service-nsw/driver-licence-renewal's nswDriverLicenceNumber.

    length: 1–20classification: pii

Renewal eligibility (foreigners)

  • foreignerPassType enum required

    The valid work pass, or other pass/document, held by the foreign renewal applicant.

    enum: work_permit | employment_pass | student_pass | dependant_pass | other_extended_stay_document
  • existingLicenceNumber string required

    The licence number of the licence being replaced or renewed, used to identify the applicant's record via SPF e-Services (login with Singpass). Not directly named as a specific field by the source, which describes the application channel only as 'e-Services / Log in using SingPass' — included by analogy to every other online driver-licence replacement/renewal in this registry (see VERIFICATION.md), the same reasonable-inference discipline as au/nsw/service-nsw/driver-licence-renewal's nswDriverLicenceNumber.

    length: 1–20classification: pii
  • licenceExpiryExceedsThreeYears boolean required

    Traffic Police will reject the renewal application if the licence's expiry date has exceeded more than 3 years. If true, the flow ends here.

  • passValidityLessThanOneMonthFromApplicationDate boolean required

    Traffic Police will reject the renewal application if the pass or document's expiry date is less than one month from the date of application. If true, the flow ends here.

  • applicantAge65OrAbove boolean required

    Determines whether the additional medical-certification gate and in-person heavy/bus-class renewal path apply.

  • renewalIncludesHeavyOrBusClass boolean optional

    Required when applicantAge65OrAbove is true. Applicants 65 or above renewing Class 4, 4A, or 5 must do so in person at the Singapore Safety Driving Centre (with an accepted medical examination report, a Proficiency Driving Test booking, the current licence, pass/document evidence, and a compliant photo) rather than via e-Services — an in-person path this document does not model. If true, the flow ends here.

  • medicalExaminationReportAccepted boolean optional

    Required when applicantAge65OrAbove is true. Applicants 65 or above must be certified fit to drive by a Singapore-registered medical practitioner and have their medical examination report accepted before renewing online. If false in that case, the flow ends here.

Licence classes being renewed

  • renewalLicenceClasses string required

    One or more licence classes being renewed, as a comma-separated list drawn from: 2B, 2A, 2, 3, 3A, 4, 4A, 5. Modelled as a comma-separated string rather than a repeating field, the same convention used by us/uscis/permanent-resident-card-replacement-i90's race/ethnicity field, since GovSchema v0.3 fields are flat (no array type; see SPEC.md §6.3).

    length: 1–50

Verification record

This file is the source-review record for this document version, per the manual-source-review-v1 practice.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-02

The document was derived from the official police.gov.sg Traffic Police guidance page listed below. It remains draft, not verified.

Sources examined

  • Document (id, version): sg/spf/driving-licence-application / 1.0.0
  • Spec version: GovSchema 0.3.0
  • Authority: Traffic Police, Singapore Police Force (SPF).
  • Primary source: "Application, Replacement, and Renewal of Singapore Driving Licence" — https://www.police.gov.sg/knowledge-hub/traffic/traffic-matters/application-replacement-and-renewal-of-singapore-driving-licence — fetched live as raw HTML (not a summarized fetch) and converted to plain text for direct quotation, 2026-07-02 (page's own "Last updated on 03 September 2025" footer). This single page supplied every field in this document: the test/training table for new applications, the applicant-group and channel/fee tables for application/replacement/renewal, the foreigner-renewal rejection criteria, and the age-65+ medical-certification and in-person-class rules.
  • Field extraction method: a prose guidance page, not a fillable form/PDF — the same shape and method as ca/on/mto/drivers-licence-renewal, sg/acra/sole-proprietorship-registration, and au/nsw/service-nsw/driver-licence-renewal. Field names and enum values were derived from the page's own wording (quoted in each field's sourceRef).
  • Retrieved / reviewed: 2026-07-02.
  • Reviewer: GovSchema Engineering (Standards Engineer — initial authoring source review).

What was confirmed against the source

| Source element | Field(s) | |---|---| | "You may apply for a valid Singapore Driving Licence online via our e-Services after passing the relevant tests."; "If your valid Singapore Driving Licence is lost, damaged, or defaced, you will need to have it replaced."; "Renewal of Photocard Driving Licence for Foreigners" | applicationType | | "Apply via: e-Services / Log in using SingPass" (repeated in every How-to table) | hasSingpassAccess | | "Singapore Citizens & Permanent Residents"; "Foreigners holding Valid work passes issued by the Ministry of Manpower (MOM); or Student / Long-Term Visit passes issued by the Immigration & Checkpoints Authority (ICA)" | applicantGroup | | "Class of Licence" (test table); "2B, 2A, 2, 3, 3A" / "4, 4A, 5" (65+ renewal tables) | licenceClassApplied, renewalLicenceClasses | | "All: Basic Theory Test" | hasPassedBasicTheoryTest | | "All: ... Final Theory Test" | hasPassedFinalTheoryTest | | "Riding Theory Test (for motorcycle learner motorists only)" | isApplyingForMotorcycleClass, hasPassedRidingTheoryTest | | "All: ... Simulator Training" | hasCompletedSimulatorTraining | | "For Class 2B only: Expressway Familiarisation Ride" | hasCompletedExpresswayFamiliarisationRide | | "All: ... Practical driving or riding test" | hasPassedPracticalTest | | "If you enrolled as a learner motorist after 1 Oct 2018, your photograph taken then will be printed... If you enrolled before 1 Oct 2018, please have your photograph taken at the driving centre before applying" | enrolledAsLearnerAfterOct2018 | | "If your valid Singapore Driving Licence is lost, damaged, or defaced" | replacementReason | | "Apply via: e-Services / Log in using SingPass" (Replacement/Renewal tables, no named field beyond this) | existingLicenceNumber (see honesty flag below) | | "All foreigners holding valid work permits (WP) or passes"; "the work permit / employment pass / student pass / dependent pass and/or other documents showing your extended stay in Singapore" | foreignerPassType | | "The expiry date of your Singapore driving licence has exceeded more than 3 years" | licenceExpiryExceedsThreeYears | | "the expiry date of the work permit / employment pass / student pass / dependent pass and/or other documents showing your extended stay in Singapore is less than one month from the date of application" | passValidityLessThanOneMonthFromApplicationDate | | "If you possess a valid Singapore Driving Licence and are 65 years old and above, you need to be certified fit to drive by a Singapore registered medical practitioner" | applicantAge65OrAbove | | "2B, 2A, 2, 3, 3A: e-Services" vs "4, 4A, 5: Singapore Safety Driving Centre" (65+ renewal tables) | renewalIncludesHeavyOrBusClass | | "Completed medical examination reports must be submitted online to the Traffic Police in JPEG or PDF format... After doing so, you may renew of your driving licence." | medicalExaminationReportAccepted, medicalExaminationReport (document) |

Honesty flags (deliberate, recorded rather than glossed over)

  • Open question: why is "Renewal" on this page scoped to foreigners only? The source's own "Content Overview" lists exactly three sections: "Applying for a Singapore Driving Licence" (all groups), "Replacing a Singapore Driving Licence" (all groups), and "Renewal of Photocard Driving Licence for Foreigners" (foreigners only, by its own title). No Singapore Citizen/Permanent Resident renewal path appears anywhere on this page. This is plausibly because SC/PR licences do not carry a fixed expiry the way a foreigner's photocard licence (tied to their pass validity) does — but this document does not assert that reason, since it was not independently confirmed against another SPF/government source this cycle. This document therefore narrows its renewal_foreigner_photocard branch to foreigners only, matching exactly what the source states, rather than guessing at an SC/PR renewal flow that may not exist or may live on a different page.
  • existingLicenceNumber — inferred field, not a direct quote. No table or paragraph on this page names a specific input field beyond "e-Services / Log in using SingPass." Included by analogy to every other online driver-licence renewal/replacement in this registry (au/nsw/service-nsw, ca/on/mto, us/ca/dmv, gb/dvla, nz/nzta), each of which requires the current licence number to identify the applicant's record — a reasonable inference, not as well-sourced as the eligibility-list fields.
  • isApplyingForMotorcycleClass asked directly, not derived from licenceClassApplied. It is common knowledge in Singapore's licensing scheme that classes 2B/2A/2 are motorcycle classes, but this exact mapping is not spelled out on this source page (which only says the Riding Theory Test applies "for motorcycle learner motorists only," without naming which classes that means). Rather than hard-coding an unsourced class-to-vehicle- type table into a requiredWhen condition, this document asks the applicant directly. A future revision should confirm the exact class list against an independent SPF/LTA source and could then collapse this into a derived condition on licenceClassApplied if confirmed.
  • Ambiguous table-column extraction for the new-application test/training table. The source's HTML table renders, after tag-stripping, as a flat list: "All / Basic Theory Test, Riding Theory Test (...), Final Theory Test, Simulator Training, Practical driving or riding test / For Class 2B only / Expressway Familiarisation Ride" — the "Tests" and "Mandatory Training Programme" column boundary for the "All" row is not recoverable with certainty from the extracted text (i.e., whether "Simulator Training" is itself a "Test" or the sole "Mandatory Training Programme" entry for all classes). This document conservatively treats every item in that row as jointly required for all classes (hasPassedBasicTheoryTest, hasPassedFinalTheoryTest, hasCompletedSimulatorTraining, hasPassedPracticalTest), which does not depend on resolving the column boundary, and keeps hasCompletedExpresswayFamiliarisationRide correctly scoped to Class 2B only (that row is unambiguous). A future revision should re-render the live page (not just its text layer) to confirm the exact column structure.
  • No fee/payment fields. Fees ($50 for application/renewal, $25 for replacement) and payment methods (eNETS, Visa, MasterCard, Debit Card) are documented on the source but deliberately excluded, the same convention used by sg/acra/sole-proprietorship-registration and au/nsw/service-nsw/driver-licence-renewal's concession-fee handling — a fee fact to exclude from fields, not model as something the applicant supplies.
  • In-person paths out of scope, not modelled as fields. The driving-centre test-booking/training process, the in-person endorsement-sticker process for an existing holder adding a new class, and the mandatory in-person Singapore Safety Driving Centre renewal path for 65+ Class 4/4A/5 renewal (gated by renewalIncludesHeavyOrBusClass) are all explicitly out of scope and exited via to: null transitions rather than partially modelled.

Path to verified

  1. Independently confirm the SC/PR driving-licence renewal question above (whether SC/PR licences simply do not expire, or whether a renewal path exists on a different SPF/LTA source not reviewed this cycle) before asserting a reason one way or the other.
  2. Confirm the exact class-to-vehicle-type mapping (which classes are "motorcycle" classes for Riding Theory Test purposes) against an independent SPF/Land Transport Authority source, and consider deriving isApplyingForMotorcycleClass from licenceClassApplied if confirmed.
  3. Re-render the source page's test/training table (not just its extracted text layer) to resolve the "Tests" vs. "Mandatory Training Programme" column-boundary ambiguity flagged above.
  4. Drive the live, Singpass-authenticated SPF e-Services flow itself (post- login) with a mock/test account to confirm the exact screen-by-screen field list, replacing the existingLicenceNumber inference with a directly observed field.

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Traffic Police, Singapore Police Force or any government. The authoritative source is always the live government form and its official instructions.