Skip to main content
HSBC Developer Portal HSBC Developer Portal HSBC Home
  • APIs
    • See all APIs
      • Open Banking APIs
      • Corporate APIs
      • Banking as a Service APIs
      • Securities Services APIs
    • API news
      • Read API news
  • Solutions
    • See all solutions
      • Faster payments
      • Instant top-ups
      • Transaction reconciliation
    • Filter by industry
      All
      Financial services
      E-commerce
      Technology
  • Case studies
    • See all case studies
      • Driving financial inclusion
      • Automated investment experience
      • On-demand payments
      • Optimising cash allocation
    • Filter by industry
      Consumer goods
      Financial services
      Financial institution
      E-commerce
  • Get started
    • Get started with HSBC APIs
      • Open Banking
      • Corporate Banking
    • Partner with HSBC
      • Open Banking partnerships
      • BaaS partnerships
      • PayMe for Business partnerships
  • Tools
    • Developer tools

    Developer tools

    • File validator
  • Help
    • Help
      • See FAQs
      • Contact us
    • Register
    • Log on
  • Help
    • See FAQs
    • Contact us
    • Register
    • Log on
HSBC Developer Portal HSBC Developer Portal HSBC Home
  • Register
  • Log on

API Details

Dynamic Client Registration (DCR)

  • Overview
  • Documentation
  • Endpoints
Dynamic Client Registration (DCR)
Dynamic Client Registration (DCR)
Loading
  • API Information
  • DCR UK and CE
  • DCR Hong Kong
 
API Information

Dynamic Client Registration (DCR)


  • Version 3.2.1
  • Protocol: HTTPS
  • Sandbox well-known endpoint: see Channel and market specific API documentation
  • Production well-known endpoint: see Channel and market specific API documentation

Introduction

This API provides access to the Dynamic Client Registration API

  • Register a client by way of a Software Statement Assertion
  • Get a client by way of Client ID
  • Update a client by way of Client ID

Version

Change log and release history:

  Version

Sandbox Status

Production Status

V3.2.1

Live

Live

 

Feedback and Support

Dive in and start coding your applications. If you get stuck or require additional support, please contact our team using the Contact Us form found under the Help menu.

 

Return to top

On this page

  • Third Party Registration
  • Production Access
  • DCR Endpoints
  • Software Statement
  • TPP agent name display
  • Scope Value
  • Client Authentication
  • Digital Signatures
DCR UK and CE

Dynamic Client Registration (DCR)

On this page

  • Third Party Registration
  • Production Access
  • DCR Endpoints
  • Software Statement
  • TPP agent name display
  • Scope Value
  • Client Authentication
  • Digital Signatures

Third Party Registration

The Open Banking Read/Write API standard is relying on FAPI Read-Write specification as means for authenticating TPPs (Third Party Providers) and PSUs (Payment Service Users). In order to enable this capability the TPP must register their OAuth API Clients with HSBC's Open Banking Platform. The HSBC Open Banking Platform supports v3.2 of Dynamic Client Registration Protocol [RFC 7591] in line with OBIE specifications.

Production Access

TPPs have to register with their National Competent Authority (NCA) and obtain appropriate TLS and Signing certificates based on jurisdiction.

They are also expected to sign up and setup an entity on Open Banking Directory platform. Once a Software Statement is being created in Open Banking Directory, the TPP can register the API client on HSBC Open Banking platform using DCR endpoint.

Brand Specific Variations

TPPs need to check the address of HSBC's Open Banking registration endpoint using our well-known endpoints:

Brand Production Sandbox
HSBC UK Personal https://openbanking.hsbc.com.bh/.well-known/openid-configuration https://sandbox.ob.hsbc.co.uk/.well-known/openid-configuration
first direct https://api.ob.firstdirect.com/.well-known/openid-configuration https://sandbox.ob.firstdirect.com/.well-known/openid-configuration
M&S Bank https://api.ob.mandsbank.com/.well-known/openid-configuration https://sandbox.ob.mandsbank.com/.well-known/openid-configuration
HSBC UK Business https://api.ob.business.hsbc.co.uk/.well-known/openid-configuration https://sandbox.ob.business.hsbc.co.uk/.well-known/openid-configuration
Kinetic https://api.ob.hsbckinetic.co.uk/.well-known/openid-configuration https://sandbox.ob.hsbckinetic.co.uk/.well-known/openid-configuration
HSBCnet UK https://api.ob.hsbcnet.com/.well-known/openid-configuration https://sandbox.ob.hsbcnet.com/.well-known/openid-configuration
HSBCnet CE https://api.ob.hsbcnet.com/.well-known/openid-configuration https://sandbox.ob.hsbcnet.com/ce/.well-known/openid-configuration
MiVision UK https://ob.mivision.hsbc.co.uk/uk/.well-known/openid-configuration https://sandbox.ob.mivision.hsbc.co.uk/.well-known/openid-configuration
MiVision CE https://ob.mivision.hsbc.co.uk/eu/.well-known/openid-configuration https://sandbox.ob.mivision.hsbc.co.uk/ce/.well-known/openid-configuration
HSBC Malta Personal https://ob.hsbc.com.mt/.well-known/openid-configuration https://sandbox.ob.hsbc.com.mt/.well-known/openid-configuration

DCR Endpoints

The following API endpoints for Dynamic Client Registration are supported.

Endpoint Description
POST /register Register new client
GET /register/{client-id} Get details of already registered API client

Register new client

The client registration endpoint is designed to allow a API client to be registered with HSBC's Open Banking authorization server.

Please note the following related to DCR v3.2:

  • The `Content-Type` request header should be set to `application/jose`.
  • The JWT claim 'aud' should be set to same value as the ‘issuer’ from well-known configuration endpoint.
  • The JWT claim 'exp' should be set to a maximum of 30 min.

Here is an example of a CURL command for client registration endpoint in Sandbox:

@POST/register_curl

Notice, the request body represents a Compact Serialization of the JSON Web Signature (JWS) [RFC 7515]. Decoding above JWS will result in the following:

@POST/register_curl_decoded_jwt

Where:

  • The `iss` is a claim parameter defined by [RFC 7519].
  • The `aud` is a claim parameter defined by [RFC 7519]. Must be set to `issuer` value from the well-known configuration endpoint.
  • The `scope` is a set of space-separated list of scope values that the client can use when requesting access tokens. For supported scopes see `scopes_supported` in the well-known configuration endpoint. For a detailed set of combined scopes see Scope Value section on this page.
  • The `redirect_uris` is the list of callback URLs supported by TPP's server. Typically this is where the bank customer (resource owner) is going to be redirected back to TPP's realm after consenting or rejecting the 'allow access request' to owner's resource using `GET /authorize` endpoint (OpenID Connect Core) [RFC 6749].
  • The `response_types` should always be set to `code id_token`.
  • The `grant_types` is the grant types that the client can use at the token endpoint.
  • The `application_type` is a free string that represents the type of TPP's application.
  • The `id_token_signed_response_alg` is the signing algorithm to be used by authorization server when signing `id_token` value. Supported value is `PS256`.
  • The `request_object_signing_alg` is the signing algorithm used by TPP when signing the request parameter passed in `GET /authorize` request. Supported value is `PS256`.
  • The `token_endpoint_auth_method` is the client authentication method to be used at token endpoint. See Client Authentication section for supported values.
  • The `token_endpoint_auth_signing_alg` is to instruct the token endpoint which signing algorithm to use in order to check client assertion signature. Supported value is `PS256`. This claim is used in conjuction with `token_endpoint_auth_method` when it's value is set to `private_key_jwt`.
  • The `software_statement` is the Software Statement as defined by [RFC 7591]. For supported claims see Software Statement section defined on this page.
  • The `software_id` is the id of the registered client. This claim must have same value as `software_id` from the Software Statement.
  • The `exp` is a claim parameter defined by [RFC 7519].
  • The `iat` is a claim parameter defined by [RFC 7519].
  • The `jti` is a claim parameter defined by [RFC 7519].

Here is an example of client registration response:

@POST/uk_register_curl_response

Get client details

This endpoint can be used only to request registration details for an existing client id. The `Authorization` header should be used and contain Bearer token issued with grant type `client_credentials`..

Here is a CURL example how to retrieve existing API Client details:

@GET/uk_client_detail_curl

Update client details

This endpoint can be used to update details for an existing client id. The `Authorization` header should be used and contain Bearer token issued with grant type `client_credentials`. Relevant checks will be performed to ensure the updates are valid/allowed. An error message will be returned in case of failure.

The request body should be same as response received from the `GET /register` request as a Signed JWT.

It is important to note that any value that does not need an update is still expected to be sent in the request.

Here is a CURL example how to update existing API client details:

@PUT/uk_client_detail_curl

Software Statement

The [RFC 7591] defines a Software Statement as a digitally signed or MACed JSON Web Token (JWT) [RFC7519] that asserts metadata values about the client software. In some cases, a software statement will be issued directly by the client developer. In other cases, a software statement will be issued by a third-party organization for use by the client developer. In both cases, the trust relationship the authorization server has with the issuer of the software statement is intended to be used as an input to the evaluation of whether the registration request is accepted. A software statement can be presented to an authorization server as part of a client registration request.

Currently, HSBC's Open Banking authorization server is supporting software statements issued by OBIE Directory. A complete list of supported Software Statement Assertion (SSA) fields is provided below:

Metadata

Description

Mandatory

software_id

Unique Identifier for TPP Client Software [RFC7591].

^[0-9a-zA-Z]{1,22}$

Yes

iss

SSA Issuer [RFC7519], acting as TPP identifier. This value must be unique for each TPP registered by the issuer of the SSA.

^[0-9a-zA-Z]{1,22}$

Yes

iat

The timestamp when the SSA was issued [RFC7519].

Yes

jti

JWT ID [RFC7519].

Max 36 characters, typically a v4 UUID.

Yes

software_client_id

Registered API client ID which is used to authenticate the client at token endpoint.

Base62 GUID (22 chars). HSBC Implementation supports max 36 chars.

Yes

software_client_description

Human-readable detailed description of the API client.

Max 256 characters.

No

software_client_name

Human-readable name of the client software.

Max 40 characters.

See also TPP agent name display section.

No

software_client_uri

The website or resource root URI.

Typically it's where TPPs would describe in more details their client software or their business.

Max 256 characters.

No

software_version

The version number of the software if TPP is going to support multiple versions for maintainance purpose.

Example: `1.0`

No

software_environment

The environment where the software is allowed to be used.

Max 256 characters.

No

software_jwks_endpoint

Contains all active public keys for the software statement.

Typically Authorization Servers use it to validate the signature of the software statement.

Max 256 characters.

Yes

software_jwks_revoked_endpoint

Contains all revoked public keys for the software statement.

Max 256 characters.

No

software_logo_uri

Link to the TPP logo. Note, ASPSPs are not obliged to display images hosted by third parties.

Max 256 characters.

No

software_mode

Field to indicate that this software is `Test` or `Live` (default is `Live`). Impact and support for `Test` software is up to the ASPSP.

No

software_on_behalf_of_org

A reference to the 4th party organisation on the Open Banking Directory if the registering TPP is acting on behalf of another.

Max 40 characters.

See also TPP agent name display section.

No

software_policy_uri

A link to the software policy page.

Max 256 characters.

No

software_redirect_uris

A list of client callback endpoints.

Typically for `authorization_code` flow this is where the TPP will receive the authorisation code (aka `code` parameter) in case of successful authorisation to the requested consent.

Array of strings, each max 256 characters.

(?:\\[([0-9a-fA-F:]+)\\]|(?:(?:[a-zA-Z0-9%-._~!$&'()*+,;=]+(?::[a-zA-Z0-9%-._~!$&'()*+,;=]*)?@)?([\\p{Alnum}\\-\\.]*)))(?::(\\d*))?(.*)?

Yes

software_roles

A multi value list of roles that this software is authorized to perform.

AISP | PISP | CBPII

Yes

software_tos_uri

A link to the software terms of service page.

Max 256 characters.

No

organisation_competent_authority_claims

Authorizations granted to TPP organisation by the NCA.

Yes

org_status

Included to cater for voluntary withdrawal from Open Banking scenarios.

Active | Revoked | Withdrawn

Yes

org_id

Unique organisation ID of the TPP.

HSBC Implementation supports max 18 chars.

Yes

org_name

Legal Entity Identifier or other known Organisation Name.

Max 140 characters.

See also TPP agent name display section.

No

org_contacts

JSON array of objects containing a triplet of `name`, `email`, `phone`.

Max 256 characters.

No

org_jwks_endpoint

Contains all active public keys of the TPP organisation.

Typically used to validate the signature of the request (query parameters, headers, body) by Authorization or Resource Servers.

Max 256 characters.

No

org_jwks_revoked_endpoint

Contains all revoked public keys of the TPP organisation.

Max 256 characters.

No

typ

Must be set to `JWT`.

Yes

alg

Must be set to `PS256`.

Yes

kid

The key identifier will be kept same as the `x5t` parameter (X.509 Certificate SHA-1 Thumbprint) of the signing certificate.

Yes

Here is an example of a Software Statement issued by HSBC's Open Banking Sandbox (decoded JWT Header and Payload):

@sandbox_sofware_statement

The Software Statement is validated by HSBC's Open Banking authorization server during TPP's registration request for an API client.

Where do TPPs get the Software Statement from:

Target Environment Source
Production Open Banking Directory
Sandbox DevHub during project creation flow

TPP agent name display

Please note that TPPs must ensure that they have registered using the appropriate fields so that the correct information is displayed to customers during consent authorization step.

Options Display Display Rule Client Name Org Name On Behalf Of Org Display Result
When org_name & software_client_name are available & both are same & software_on_behalf_of_org not available All (single name and key point) Use software_client_name as TPP name ABC Company Ltd ABC Company Ltd N/A ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org not available All (single name and key point) Use software_client_name as TPP name ABC Trades ABC Company Ltd N/A ABC Trades
When org_name & software_client_name are available & both are same & software_on_behalf_of_org is available & is same as well All (single name and key point) Use software_client_name as TPP name ABC Company Ltd ABC Company Ltd ABC Company Ltd ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is same as the org_name Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Trades ABC Company Ltd ABC Company Ltd ABC Company Ltd on behalf of ABC Trades
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is same as the software_client_name All (single name and key point) Use software_client_name as TPP name ABC Trades ABC Company Ltd ABC Trades ABC Trades
When org_name & software_client_name are available & both are same & software_on_behalf_of_org is available & is different from both Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Company Ltd ABC Company Ltd OBO Ltd OBO Ltd on behalf of ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is different from both Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Trades ABC Company Ltd OBO Ltd OBO Ltd on behalf of ABC Trades

(1) Both names will always be displayed at the consent set-up step, however, for simplicity, single name may be displayed in some non-key steps within the journey.

Scope Value

The value of the `scope` claim in the registration request does specify what access privileges can be requested for Access Tokens. The scopes associated with Access Tokens determine what resources will be available when they are used to access HSBC's Open Banking protected endpoints.

Endpoint

Journey

Scopes

Notes

POST /register

PIS

"scope": "openid payments"

A Journey needs to be chosen based on TPP specialization

AIS

"scope": "openid accounts"

CoF

"scope": "openid fundsconfirmations"

PIS, AIS, CoF

"scope": "openid payments accounts fundsconfirmations"

Client Authentication

This section defines the client authentication methods supported by HSBC's Open Banking authorization server during DCR. The following values are supported for `token_endpoint_auth_method` claim:

  • private_key_jwt [https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication]
  • tls_client_auth [RFC 8705]

private_key_jwt

If `private_key_jwt` is used then claim `token_endpoint_auth_signing_alg` is also required.

tls_client_auth

If `tls_client_auth` is used then claim `tls_client_auth_subject_dn` is also required.

The value of `tls_client_auth_subject_dn` must be set to full DN (Distinguished Name) of the transport certificate that the TPP will present to the token endpoint to establish a mutual TLS connection between the client and authorization server. The order of DN attributes must be the same as in the certificate subject value. Please note that this should not include the word ‘Subject’, but only the DN value of the ‘Subject’ object field.

The expected format of `tls_client_auth_subject_dn` follows a string representation of the DN as defined in [RFC4514]. Please refer to [https://tools.ietf.org/html/rfc4512#section-2] for formal definition of DN, RDN and attribute value assertion (AVA).

Here is an example of a valid DN value:

CN=00158000016i44JAAQ,2.5.4.97=#131050534447422D4643412D373635313132,O=HSBC UK Bank Plc,C=GB

Supported short names for attribute types (https://tools.ietf.org/html/rfc4514#section-2) are:

CN (2.5.4.3)
C (2.5.4.6)
L (2.5.4.7)
S (2.5.4.8)
ST (2.5.4.8)
O (2.5.4.10)
OU (2.5.4.11)
T (2.5.4.12)
IP (1.3.6.1.4.1.42.2.11.2.1)
STREET (2.5.4.9)
DC (0.9.2342.19200300.100.1.25)
DNQUALIFIER (2.5.4.46)
DNQ (2.5.4.46)
SURNAME (2.5.4.4)
GIVENNAME (2.5.4.42)
INITIALS (2.5.4.43)
GENERATION (2.5.4.44)
EMAIL (1.2.840.113549.1.9.1)
EMAILADDRESS (1.2.840.113549.1.9.1)
UID (0.9.2342.19200300.100.1.1)
SERIALNUMBER (2.5.4.5)

Multiple keywords are available for one OBJECT IDENTIFIER (OID). Attribute types not present on above list should be encoded as the dotted-decimal encoding, a “numericoid”, of its OBJECT IDENTIFIER. The “numericoid” is defined in [RFC4512].

Example: 1.3.6.1.4.1.311.60.2.1.3=PL

Full Example: CN=[value],serialNumber=[value],OU=[value],O=[value],C=[value],ST=[value],2.5.4.97=[value],2.5.4.15=[value],1.3.6.1.4.1.311.60.2.1.3=[value]

Where [value] is a placeholder for any real value.

Digital Signatures

QSEALs or OBSEALS will also be required by TPPs to enable a digital signature feature. Use of a digital signature to sign payloads is mandatory.

Return to top

On this page

  • Third Party Registration
  • Production Access
  • DCR Endpoints
  • Software Statement
  • TSP agent name display
  • Scope Value
  • Client Authentication
DCR Hong Kong

Dynamic Client Registration (DCR)

On this page

  • Third Party Registration
  • Production Access
  • DCR Endpoints
  • Software Statement
  • TSP agent name display
  • Scope Value
  • Client Authentication

Third Party Registration

The Open Banking Read/Write API standard is relying on FAPI Read-Write specification as means for authenticating TPPs (Third Party Providers) and PSUs (Payment Service Users). In order to enable this capability the TPP must register their OAuth API Clients with HSBC's Open Banking Platform. The HSBC Open Banking Platform supports v3.2 of Dynamic Client Registration Protocol [RFC 7591] in line with OBIE specifications.

Production Access

For APIs in Hong Kong to request access to Production APIs, Third Parties need to submit a request using the Help, Contact Us form in the portal.

  • Select 'Open Banking APIs - HK - HSBC Business' or 'Open Banking APIs - HK - HSBC Personal' from the dropdown menu 'Which API does your query relate to?'
  • Select 'Production Access' from the dropdown menu 'What does your query relate to?'

On receipt of this information the HSBC support team will review the Third Parties request and begin the process to on-board the Third Party to the Open Banking eco-system. The Software Statement Assertion (SSA) will be securely mailed to the Third Parties registered email address.

Brand Specific Variations

TPPs need to check the address of HSBC's Open Banking registration endpoint using our well-known endpoints:

Brand Production Sandbox
HSBC HK Personal https://api.ob.hsbc.com.hk/.well-known/openid-configuration https://sandbox.ob.hsbc.com.hk/.well-known/openid-configuration
HSBC HK Business https://api.ob.business.hsbc.com.hk/.well-known/openid-configuration https://sandbox.ob.business.hsbc.com.hk/.well-known/openid-configuration

DCR Endpoints

The following API endpoints for Dynamic Client Registration are supported.

Endpoint Description
POST /register Register new client
GET /register/{client-id} Get details of already registered API client

Register new client

The client registration endpoint is designed to allow a API client to be registered with HSBC's Open Banking authorization server.

Please note the following related to DCR v3.2:

  • The `Content-Type` request header should be set to `application/jose`.
  • The JWT claim 'aud' should be set to same value as the ‘issuer’ from well-known configuration endpoint.
  • The JWT claim 'exp' should be set to a maximum of 30 min.

Here is an example of a CURL command for client registration endpoint in Sandbox:

@POST/register_curl

Notice, the request body represents a Compact Serialization of the JSON Web Signature (JWS) [RFC 7515]. Decoding above JWS will result in the following:

@POST/register_curl_decoded_jwt

Where:

  • The `iss` is a claim parameter defined by [RFC 7519].
  • The `aud` is a claim parameter defined by [RFC 7519]. Must be set to `issuer` value from the well-known configuration endpoint.
  • The `scope` is a set of space-separated list of scope values that the client can use when requesting access tokens. For supported scopes see `scopes_supported` in the well-known configuration endpoint. For a detailed set of combined scopes see Scope Value section on this page.
  • The `redirect_uris` is the list of callback URLs supported by TPP's server. Typically this is where the bank customer (resource owner) is going to be redirected back to TPP's realm after consenting or rejecting the 'allow access request' to owner's resource using `GET /authorize` endpoint (OpenID Connect Core) [RFC 6749].
  • The `response_types` should always be set to `code id_token`.
  • The `grant_types` is the grant types that the client can use at the token endpoint.
  • The `application_type` is a free string that represents the type of TPP's application.
  • The `id_token_signed_response_alg` is the signing algorithm to be used by authorization server when signing `id_token` value. Supported value is `PS256`.
  • The `request_object_signing_alg` is the signing algorithm used by TPP when signing the request parameter passed in `GET /authorize` request. Supported value is `PS256`.
  • The `token_endpoint_auth_method` is the client authentication method to be used at token endpoint. See Client Authentication section for supported values.
  • The `token_endpoint_auth_signing_alg` is to instruct the token endpoint which signing algorithm to use in order to check client assertion signature. Supported value is `PS256`. This claim is used in conjuction with `token_endpoint_auth_method` when it's value is set to `private_key_jwt`.
  • The `software_statement` is the Software Statement as defined by [RFC 7591]. For supported claims see Software Statement section defined on this page.
  • The `software_id` is the id of the registered client. This claim must have same value as `software_id` from the Software Statement.
  • The `exp` is a claim parameter defined by [RFC 7519].
  • The `iat` is a claim parameter defined by [RFC 7519].
  • The `jti` is a claim parameter defined by [RFC 7519].

Here is an example of client registration response:

@POST/hk_register_curl_response

Get client details

This endpoint can be used only to request registration details for an existing client id. The `Authorization` header should be used and contain Bearer token issued with grant type `client_credentials`..

Here is a CURL example how to retrieve existing API Client details:

@GET/hk_client_detail_curl

Update client details

This endpoint can be used to update details for an existing client id. The `Authorization` header should be used and contain Bearer token issued with grant type `client_credentials`. Relevant checks will be performed to ensure the updates are valid/allowed. An error message will be returned in case of failure.

The request body should be same as response received from the `GET /register` request as a Signed JWT.

It is important to note that any value that does not need an update is still expected to be sent in the request.

Here is a CURL example how to update existing API client details:

@PUT/hk_client_detail_curl

Software Statement

The [RFC 7591] defines a Software Statement as a digitally signed or MACed JSON Web Token (JWT) [RFC7519] that asserts metadata values about the client software. In some cases, a software statement will be issued directly by the client developer. In other cases, a software statement will be issued by a third-party organization for use by the client developer. In both cases, the trust relationship the authorization server has with the issuer of the software statement is intended to be used as an input to the evaluation of whether the registration request is accepted. A software statement can be presented to an authorization server as part of a client registration request.

Currently, HSBC's Open Banking authorization server is supporting software statements issued by OBIE Directory. A complete list of supported Software Statement Assertion (SSA) fields is provided below:

Metadata

Description

Mandatory

software_id

Unique Identifier for TPP Client Software [RFC7591].

^[0-9a-zA-Z]{1,22}$

Yes

iss

SSA Issuer [RFC7519], acting as TPP identifier. This value must be unique for each TPP registered by the issuer of the SSA.

^[0-9a-zA-Z]{1,22}$

Yes

iat

The timestamp when the SSA was issued [RFC7519].

Yes

jti

JWT ID [RFC7519].

Max 36 characters, typically a v4 UUID.

Yes

software_client_id

Registered API client ID which is used to authenticate the client at token endpoint.

Base62 GUID (22 chars). HSBC Implementation supports max 36 chars.

Yes

software_client_description

Human-readable detailed description of the API client.

Max 256 characters.

No

software_client_name

Human-readable name of the client software.

Max 40 characters.

See also TPP agent name display section.

No

software_client_uri

The website or resource root URI.

Typically it's where TPPs would describe in more details their client software or their business.

Max 256 characters.

No

software_version

The version number of the software if TPP is going to support multiple versions for maintainance purpose.

Example: `1.0`

No

software_environment

The environment where the software is allowed to be used.

Max 256 characters.

No

software_jwks_endpoint

Contains all active public keys for the software statement.

Typically Authorization Servers use it to validate the signature of the software statement.

Max 256 characters.

Yes

software_jwks_revoked_endpoint

Contains all revoked public keys for the software statement.

Max 256 characters.

No

software_logo_uri

Link to the TPP logo. Note, ASPSPs are not obliged to display images hosted by third parties.

Max 256 characters.

No

software_mode

Field to indicate that this software is `Test` or `Live` (default is `Live`). Impact and support for `Test` software is up to the ASPSP.

No

software_on_behalf_of_org

A reference to the 4th party organisation on the Open Banking Directory if the registering TPP is acting on behalf of another.

Max 40 characters.

See also TPP agent name display section.

No

software_policy_uri

A link to the software policy page.

Max 256 characters.

No

software_redirect_uris

A list of client callback endpoints.

Typically for `authorization_code` flow this is where the TPP will receive the authorisation code (aka `code` parameter) in case of successful authorisation to the requested consent.

Array of strings, each max 256 characters.

(?:\\[([0-9a-fA-F:]+)\\]|(?:(?:[a-zA-Z0-9%-._~!$&'()*+,;=]+(?::[a-zA-Z0-9%-._~!$&'()*+,;=]*)?@)?([\\p{Alnum}\\-\\.]*)))(?::(\\d*))?(.*)?

Yes

software_roles

A multi value list of roles that this software is authorized to perform.

AISP | PISP | CBPII

Yes

software_tos_uri

A link to the software terms of service page.

Max 256 characters.

No

organisation_competent_authority_claims

Authorizations granted to TPP organisation by the NCA.

Yes

org_status

Included to cater for voluntary withdrawal from Open Banking scenarios.

Active | Revoked | Withdrawn

Yes

org_id

Unique organisation ID of the TPP.

HSBC Implementation supports max 18 chars.

Yes

org_name

Legal Entity Identifier or other known Organisation Name.

Max 140 characters.

See also TPP agent name display section.

No

org_contacts

JSON array of objects containing a triplet of `name`, `email`, `phone`.

Max 256 characters.

No

org_jwks_endpoint

Contains all active public keys of the TPP organisation.

Typically used to validate the signature of the request (query parameters, headers, body) by Authorization or Resource Servers.

Max 256 characters.

No

org_jwks_revoked_endpoint

Contains all revoked public keys of the TPP organisation.

Max 256 characters.

No

typ

Must be set to `JWT`.

Yes

alg

Must be set to `PS256`.

Yes

kid

The key identifier will be kept same as the `x5t` parameter (X.509 Certificate SHA-1 Thumbprint) of the signing certificate.

Yes

Here is an example of a Software Statement issued by HSBC's Open Banking Sandbox (decoded JWT Header and Payload):

@sandbox_sofware_statement

The Software Statement is validated by HSBC's Open Banking authorization server during TPP's registration request for an API client.

Where do TPPs get the Software Statement from:

Target Environment Source
Production Open Banking Directory
Sandbox DevHub during project creation flow

TSP agent name display

Please note that TPPs must ensure that they have registered using the appropriate fields so that the correct information is displayed to customers during consent authorization step.

Options Display Display Rule Client Name Org Name On Behalf Of Org Display Result
When org_name & software_client_name are available & both are same & software_on_behalf_of_org not available All (single name and key point) Use software_client_name as TPP name ABC Company Ltd ABC Company Ltd N/A ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org not available All (single name and key point) Use software_client_name as TPP name ABC Trades ABC Company Ltd N/A ABC Trades
When org_name & software_client_name are available & both are same & software_on_behalf_of_org is available & is same as well All (single name and key point) Use software_client_name as TPP name ABC Company Ltd ABC Company Ltd ABC Company Ltd ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is same as the org_name Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Trades ABC Company Ltd ABC Company Ltd ABC Company Ltd on behalf of ABC Trades
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is same as the software_client_name All (single name and key point) Use software_client_name as TPP name ABC Trades ABC Company Ltd ABC Trades ABC Trades
When org_name & software_client_name are available & both are same & software_on_behalf_of_org is available & is different from both Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Company Ltd ABC Company Ltd OBO Ltd OBO Ltd on behalf of ABC Company Ltd
When org_name & software_client_name are available & both are different & software_on_behalf_of_org is available & is different from both Both names to be displayed (1)
<Agent> on behalf of <TPP>
 
Where <Agent> is software_on_behalf_of_org and <TPP> is software_client_name.
ABC Trades ABC Company Ltd OBO Ltd OBO Ltd on behalf of ABC Trades

(1) Both names will always be displayed at the consent set-up step, however, for simplicity, single name may be displayed in some non-key steps within the journey.

Scope Value

The value of the `scope` claim in the registration request does specify what access privileges can be requested for Access Tokens. The scopes associated with Access Tokens determine what resources will be available when they are used to access HSBC's Open Banking protected endpoints.

Endpoint

Journey

Scopes

Notes

POST /register

AIS

"scope": "openid accounts"

 

Client Authentication

This section defines the client authentication methods supported by HSBC's Open Banking authorization server during DCR. The following values are supported for `token_endpoint_auth_method` claim:

  • private_key_jwt [https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication]

private_key_jwt

If `private_key_jwt` is used then claim `token_endpoint_auth_signing_alg` is also required.

Return to top

Cookies on this website

We use cookies to help ensure that our website and services are able to function properly. These cookies are strictly necessary and so are set automatically.

Strictly necessary cookies ensure that our website is able to function properly. We've listed the functions of these strictly necessary cookies below:

  • to help you log on - you won't be able to log on without them
  • to provide core features on our website - these features won't work without them
  • to keep our website secure - this help us to keep you safe

By continuing to browse the site, you are agreeing to our use of these cookies.

You can change your cookie settings at any time but if you do, you may lose some functionality.

To learn more about how we use cookies, visit our Cookie notice. 

Footer menu

  • Privacy notice |
  • Terms and conditions |
  • Cookie policy

© HSBC Bank plc 2025