For the complete documentation index, see llms.txt. This page is also available as Markdown.

Migration Guide: Myinfo Business v1/v2 to v3 (FAPI 2.0)

This guide assists partners in transitioning existing integrations from Myinfo Business v2 (Legacy) to Myinfo Business v3.

Myinfo Business v3 is built on the Corppass Authorization API (FAPI 2.0), which adopts the Financial-grade API (FAPI) 2.0 Security Profile based on OAuth 2.0 and OpenID Connect.

Why Migrate?

FAPI 2.0 introduces enhanced security mechanisms, mandated flows, and updated token structures that improve confidentiality, integrity, and replay protection compared to the Legacy APIs. These changes align with global security best practices and provide long‑term reliability.

All legacy Myinfo Business v1/v2 applications will be deprecated, and partners must migrate to continue using the service.


Key Changes

Feature
Myinfo Business (v1/v2)
Myinfo Business (v3) (FAPI 2.0)

API Endpoints

Legacy API endpoints with base URL:

  • Test: https://test.api.myinfo.gov.sg/biz/[v1|v2]

  • Production: https://api.myinfo.gov.sg/biz/[v1|v2]

Legacy endpoints:

  • Authorization Endpoint (/authorise)

  • Token Endpoint (/token)

  • Entity-Person Endpoint (/entity-person/{uen}/{uuid})

Different set of API endpoints with base URL:

  • Staging: https://stg-id.corppass.gov.sg

  • Production: https://id.corppass.gov.sg

Standard OIDC / FAPI 2.0 endpoints:

  • Well-known Endpoints (/.well-known/openid-configuration) - where the following endpoints are dynamically obtained

  • Pushed Authorization Request Endpoint

  • Authorization Endpoint

  • Token Endpoint

  • Userinfo Endpoint

Refer to Integration Guide for more details.

Enhanced Security

Standard authorization code flow

Enhanced security with

Authorization Flow

Authorization parameters provided via front-channel (params in URL).

Authorization parameters provided via back-channel Pushed Authorization Request (PAR) endpoint.

Refer to Pushed Authorization Request for more details.

Authorization Request Parameters

Authorization Endpoint:

  • client_id

  • authmode

  • purpose

  • response_type

  • redirect_uri

  • attributes

  • state

Pushed Authorization Request:

  • client_id

  • client_assertion

  • client_assertion_type

  • code_challenge

  • code_challenge_method

  • response_type

  • redirect_uri

  • scope

  • state

  • nonce

  • acr_values

  • dpop_jkt

Authorization Endpoint:

  • client_id

  • request_uri

Refer to Pushed Authorization Request and Authorization Endpoint for more details.

Token Request Parameters

Token Endpoint:

  • code

  • redirect_uri

  • grant_type

  • client_id

  • client_secret

  • state

Token Endpoint:

  • code

  • redirect_uri

  • grant_type

  • client_id

  • client_assertion_type

  • client_assertion

  • code_verifier

Refer to Token Endpoint for more details.

Data Retrieval Endpoint

Endpoint: /entity-person/{uen}/{uuid}

uen and uuid are obtained from the sub (uen_uuid) value in the decoded access_token.

Legacy payload structure within:

  • entity

  • person

Endpoint: /userinfo (Standard OIDC endpoint)

No longer required to provide uen and uuid values as these are handled through the Standard OIDC flow. Access Token is to be treated as opaque string.

Updated payload structure within:

  • entity_info

  • person_info

  • corppass_info

Refer to Userinfo Endpoint for more details.

Error Handling

Legacy / custom error formats.

  • API response

    • code

    • message

  • Redirect URI

    • error

    • error_description

    • state

Standardised OAuth 2.0 Errors.

  • error

  • error_description

  • state

Scopes

Category-based entity scopes and fine-grained person scopes (basic-profile, financials, capitals, name, uinfin)

Fine-grained scopes across entity and person scopes (e.g., entity.basic_profile.name, entity.basic_profile.uen_status, user.name), allowing for more precise data access control.

Refer to Myinfo Business Scopes for more details.


Scope Changes

Entity Information Updates

  • Renamed uen to registration_number. This change affects basic profile, entity appointments, and shareholders.

  • Replaced entity-status with uen-status (support for entity-status has been dropped).

  • Dropped the ownership field from basic profile.

  • Dropped primary user described activity and secondary user described-activity.

  • Introduced a new id_type (identification type) field for individual appointments and shareholders.

  • Dropped support for corppass-email and corppass-mobileno on individual appointments and shareholders.

  • Deprecated the Government contracts category (gov-contracts).

Please expand the section below for a detailed mapping of the entity object changes

Entity Object Migration Mapping
Object under v1/v2
Object under v3
Changes made

entity.basic-profile.company-type

entity_info.basic_profile.company_type

entity.basic-profile.business-constitution

entity_info.basic_profile.constitution

Renamed

entity.basic-profile.country-of-incorporation

entity_info.basic_profile.country_of_incorporation

entity.basic-profile.business-expiry-date

entity_info.basic_profile.expiry_date

Renamed

entity.basic-profile.entity-name

entity_info.basic_profile.name

Renamed

entity.basic-profile.primary-activity

entity_info.basic_profile.primary_activity

entity.basic-profile.registration-date

entity_info.basic_profile.registration_date

entity.basic-profile.uen

entity_info.basic_profile.registration_number

Renamed

entity.basic-profile.secondary-activity

entity_info.basic_profile.secondary_activity

entity.basic-profile.entity-type

entity_info.basic_profile.type

Renamed

entity.basic-profile.entity-status

Dropped. Please use entity.basic_profile.uen_status instead.

entity_info.basic_profile.uen_status

New

entity.basic-profile.ownership

Dropped

entity.basic-profile.primary-user-described-activity

Dropped

entity.basic-profile.secondary-user-described-activity

Dropped

entity.addresses.address-list

entity_info.address

Renamed, nesting changed

entity.previous-names.previous-names-list.history-name

entity_info.history.previous_names.previous_name

Renamed, nesting changed

entity.previous-names.previous-names-list.history-name-effective-date

entity_info.history.previous_names.previous_name_effective_date

Renamed, nesting changed

entity.previous-uens.previous-uens-list.previous-uen

entity_info.history.previous_registration_numbers.previous_registration_number

Renamed, nesting changed

entity.appointments.appointments-list.appointment-date

entity_info.appointments.appointment_date

Nesting changed

entity.appointments.appointments-list.position

entity_info.appointments.position

Nesting changed

entity.appointments.appointments-list.category

entity_info.appointments.category

Nesting changed

entity_info.appointments.designation

New

entity.appointments.appointments-list.entity-reference.entity-name

entity_info.appointments.entity_appointment.name

Renamed, nesting changed

entity.appointments.appointments-list.entity-reference.uen

entity_info.appointments.entity_appointment.registration_number

Renamed, nesting changed

entity.appointments.appointments-list.entity-reference.entity-type

entity_info.appointments.entity_appointment.type

Renamed, nesting changed

entity.appointments.appointments-list.person-reference.idno

entity_info.appointments.individual_appointment.id_number

Renamed, nesting changed

entity_info.appointments.individual_appointment.id_type

New

entity.appointments.appointments-list.person-reference.person-name

entity_info.appointments.individual_appointment.name

Renamed, nesting changed

entity.appointments.appointments-list.person-reference.nationality

entity_info.appointments.individual_appointment.nationality

Nesting changed

entity.appointments.appointments-list.corppass-email

Dropped

entity.appointments.appointments-list.corppass-mobileno

Dropped

entity.shareholders.shareholders-list.entity-reference.entity-name

entity_info.shareholders.entity_shareholder.name

Renamed, nesting changed

entity.shareholders.shareholders-list.entity-reference.uen

entity_info.shareholders.entity_shareholder.registration_number

Renamed, nesting changed

entity.shareholders.shareholders-list.entity-reference.entity-type

entity_info.shareholders.entity_shareholder.type

Renamed, nesting changed

entity.shareholders.shareholders-list.person-reference.idno

entity_info.shareholders.individual_shareholder.id_number

Renamed, nesting changed

entity_info.shareholders.individual_shareholder.id_type

New

entity.shareholders.shareholders-list.person-reference.person-name

entity_info.shareholders.individual_shareholder.name

Renamed, nesting changed

entity.shareholders.shareholders-list.person-reference.nationality

entity_info.shareholders.individual_shareholder.nationality

Nesting changed

entity.shareholders.shareholders-list.allocation

entity_info.shareholders.allocation

Nesting changed

entity.shareholders.shareholders-list.category

entity_info.shareholders.category

Nesting changed

entity.shareholders.shareholders-list.currency

entity_info.shareholders.currency

Nesting changed

entity.shareholders.shareholders-list.share-type

entity_info.shareholders.share_type

Nesting changed

entity.shareholders.shareholders-list.corppass-email

Dropped

entity.shareholders.shareholders-list.corppass-mobileno

Dropped

entity.capitals.capitals-list.currency

entity_info.capitals.currency

Nesting changed

entity.capitals.capitals-list.issued-capital-amount

entity_info.capitals.issued_amount

Renamed, nesting changed

entity.capitals.capitals-list.paid-up-capital-amount

entity_info.capitals.paid_up_amount

Renamed, nesting changed

entity.capitals.capitals-list.share-allotted-amount

entity_info.capitals.share_allotted_number

Nesting changed

entity.capitals.capitals-list.capital-type

entity_info.capitals.share_type

Renamed, nesting changed

entity.financials.highlights.is-audited

entity_info.financials.is_audited

Nesting changed

entity.financials.highlights.company-profit-loss-after-tax

entity_info.financials.company_financial.profit_loss_after_tax

Nesting changed

entity.financials.highlights.company-profit-loss-before-tax

entity_info.financials.company_financial.profit_loss_before_tax

Nesting changed

entity.financials.highlights.company-revenue

entity_info.financials.company_financial.revenue

Renamed, nesting changed

entity.financials.highlights.currency

entity_info.financials.currency

Nesting changed

entity.financials.highlights.current-period-end-date

entity_info.financials.current_period_end_date

Nesting changed

entity.financials.highlights.current-period-start-date

entity_info.financials.current_period_start_date

Nesting changed

entity.financials.highlights.group-profit-loss-after-tax

entity_info.financials.group_financial.profit_loss_after_tax

Nesting changed

entity.financials.highlights.group-profit-loss-before-tax

entity_info.financials.group_financial.profit_loss_before_tax

Nesting changed

entity.financials.highlights.group-revenue

entity_info.financials.group_financial.revenue

Renamed, nesting changed

entity.financials.highlights.group-capital-paid-up-capital-amount

entity_info.financials.group_financial.share_capital

Renamed, nesting changed

entity.grants.grants-list.development-category

entity_info.grants.development_category

Nesting changed

entity.grants.grants-list.functional-area

entity_info.grants.functional_area

Nesting changed

entity.grants.grants-list.submitted-date

entity_info.grants.submitted_on_date

Renamed, nesting changed

entity.grants.grants-list.approved-amount

entity_info.grants.approved_amount

Nesting changed

entity.grants.grants-list.last-updated-date

entity_info.grants.last_update_date

Nesting changed

entity.grants.grants-list.grant-status

entity_info.grants.status

Renamed, nesting changed

entity.grants.grants-list.grant-type

entity_info.grants.type

Renamed, nesting changed

entity.licences.licences-list.issuance-agency

entity_info.licences.issuance_agency

Nesting changed

entity.licences.licences-list.expiry-date

entity_info.licences.expiry_date

Nesting changed

entity.licences.licences-list.issue-date

entity_info.licences.issue_date

Nesting changed

entity.licences.licences-list.licence-name

entity_info.licences.licence_name

Nesting changed

entity.licences.licences-list.licence-number

entity_info.licences.licence_number

Nesting changed

entity.builders.builders-list.licence

entity_info.builders.licence

Nesting changed

entity.builders.builders-list.licence-expiry-date

entity_info.builders.licence_expiry_date

Nesting changed

entity.contractors.contractors-list.registration-expiry-date

entity_info.contractors.crs_expiry_date

Renamed, nesting changed

entity.contractors.contractors-list.workhead

entity_info.contractors.workhead

Nesting changed

entity.contractors.contractors-list.workhead-financial-grade

entity_info.contractors.workhead_financial_grade

Nesting changed

From code and desc to value only

gov-contracts.*

Entire category has been dropped

Person Information Updates

  • Dropped support for the following CPF-related information:

    • cpfhomeprotectionscheme

    • cpfdependantprotectionscheme

    • cpfmedishieldlife

    • cpfrstucurrentyeartaxrelief

    • cpfrstuselftopupamount

    • cpflife

    • cpfmonthlypayouts

  • Curated a focused list of person scopes tailored for business use cases. If you require a scope that is not currently listed, please submit a request at partnersupport.singpass.gov.sg.


Migration Steps

Step 1: Create Myinfo Business v3 Application

Create a new Myinfo Business v3 application on the Singpass Developer Portal (SDP). Existing Client ID / App ID cannot be used in the new version as they are not interchangeable.

Refer to Getting Started guide for step-by-step instructions on creating and configuring your application.

Step 2: Implement Myinfo Business v3 Integration

Myinfo Business v3 is built on the Corppass Authorization API (FAPI 2.0) and introduces significant changes to the authorization flow, security requirements, and data handling.

As the APIs and integration patterns differ substantially from v1/v2, partners are required to implement the integration based on the latest specifications.

Refer to Integration Guide for full implementation details.

Last updated