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
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.sgProduction:
https://id.corppass.gov.sg
Standard OIDC / FAPI 2.0 endpoints:
Well-known Endpoints (
/.well-known/openid-configuration) - where the following endpoints are dynamically obtainedPushed 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
Mandatory Client Assertion requirements.
Mandatory Proof Key of Code Exchange (PKCE).
Mandatory Demonstrating Proof of Possession (DPoP) (sender-constrained tokens).
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_idauthmodepurposeresponse_typeredirect_uriattributesstate
Pushed Authorization Request:
client_idclient_assertionclient_assertion_typecode_challengecode_challenge_methodresponse_typeredirect_uriscopestatenonceacr_valuesdpop_jkt
Authorization Endpoint:
client_idrequest_uri
Refer to Pushed Authorization Request and Authorization Endpoint for more details.
Token Request Parameters
Token Endpoint:
coderedirect_urigrant_typeclient_idclient_secretstate
Token Endpoint:
coderedirect_urigrant_typeclient_idclient_assertion_typeclient_assertioncode_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:
entityperson
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_infoperson_infocorppass_info
Refer to Userinfo Endpoint for more details.
Error Handling
Legacy / custom error formats.
API response
codemessage
Redirect URI
errorerror_descriptionstate
Standardised OAuth 2.0 Errors.
errorerror_descriptionstate
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
uentoregistration_number. This change affects basic profile, entity appointments, and shareholders.Replaced
entity-statuswithuen-status(support forentity-statushas been dropped).Dropped the
ownershipfield from basic profile.Dropped
primary user described activityandsecondary user described-activity.Introduced a new
id_type(identification type) field for individual appointments and shareholders.Dropped support for
corppass-emailandcorppass-mobilenoon 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
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:
cpfhomeprotectionschemecpfdependantprotectionschemecpfmedishieldlifecpfrstucurrentyeartaxreliefcpfrstuselftopupamountcpflifecpfmonthlypayouts
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