# Notice of change -  Open Banking Improvements: OBL v4 API - HSBC

Issued: 4th June 2025| TB-1620

### What's changing?

CMA9 banks are starting migrations from OBLv3 APIs to OBLv4.

From the 13th June 2025, the first UK bank, HSBC, will start to go live with OBL v4 and deprecating OBL v3. Other CMA9 Financial Institutions are due to release their Open Banking V4 APIs through the 2nd half of 2025. During this period, there will be a difference in API responses depending on whether a given Financial Institution is available through Token.io on the Open Banking v4 OR Open Banking v3.1.11 standard.

Changes associated with OBLv4:

PIS:

- Bank raw responses are changing
- PCC codes are changing
- Improved error messaging


AIS:

- Changes to Balance Types Identifiers


All changes are available on Sandbox for testing.

### Does this change affect you?

#### Payment Initiation Services

You may be impacted if:

- You are initiating payments with banks using the UK Open Banking API standard, and your PIS integration relies on raw bank statuses.
- You depend on specific bank error messages in your processes.


You are not impacted if:

- You do not rely on the raw bank responses.


#### Account Information Services

You may be impacted if:

- You are making AIS calls to banks using the UK Open Banking API standard, and you validate balance types in your AIS integration.


You are not impacted if:

- You do not validate balance types in your AIS integration.


### Changes in detail

#### Payment Initiation Services

##### Standardised Payment Statuses

The bankPaymentStatus field will now return [ISO 20022](../sip/sip-v2/iso-20022) standard payment status codes.

❗ Note: Token.io’s own status codes will remain unchanged.

If you have designed your implementation for raw bank statuses, you must decide how to handle the ISO 20022 version.

- [V4](https://github.com/OpenBankingUK/External_Internal_CodeSets/blob/6ed21c444472d237b7d6d60f620bf3bfad8e1ddf/4Q2023_ExternalCodeSets_v2.json#L2750) statuses repository and [diagram](https://openbankinguk.github.io/read-write-api-site3/v4.0/resources-and-data-models/pisp/domestic-payments.html#state-model)
- List of how Token handles v4 statuses for APIv1


| Token Payment Statuses | ISO 20022 Raw Bank Payment Statuses |
|  --- | --- |
| `PROCESSING` | `PDNG`
`RCVD`
`ACTC`
`PATC`
`ACCP`
`ACFC`
`ACSP`
`ACWC` |
| `SUCCESS` | `ACCC`
`ACWP`
`ACSC` |
| `DECLINED` | `BLCK`
`RJCT` |
| `CANCELLED` | `CANC` (domestic scheduled payments) |


- List of how Token handles v4 statuses for APIv2:


| Existing Payment Statuses - v3 | New Payment Statuses - v4 |
|  --- | --- |
| `INITIATION_PROCESSING` | `PDNG`
`RCVD`
`ACTC`
`PATC`
`ACCP`
`ACFC`
`ACSP`
`ACWC` |
| `INITIATION_COMPLETED` | `ACCC`
`ACWP`
`ACSC` |
| `INITIATION_DECLINED` | `BLCK`
`RJCT` |
| `INITIATION_DECLINED` | `CANC` (domestic scheduled payments) |


##### Consistent Error Messaging

Bank error messages will be updated to match the [OBL v4 specification](https://openbankinguk.github.io/read-write-api-site3/v4.0/profiles/read-write-data-api-profile.html#error-response-structure) for improved clarity and consistency.

Affected Endpoints:

- **V1 API**
  - `providerDetails.status`
    - [POST/transfers](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.CreateTransfer)
    - [GET /transfers/{transfer_id}](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfer)
    - [GET /transfers](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfers)
- **V2 API**
  - `bankPaymentStatus`
    - [GET/v2/payments](../../api/reference/Payments-v2#operation/GetPayments)
    - [GET/v2/payments/{paymentId}](../../api/reference/Payments-v2#operation/GetPayment)
- VRP API
  - `bankVrpConsentStatus`
    - [POST/vrp-consents](../../api/reference/Variable-Recurring-Payments#operation/CreateVrpConsent)
    - [GET/vrp-consents](../../api/reference/Variable-Recurring-Payments#operation/GetVrpConsents)
    - [GET/vrp-consents/{id}](../../api/reference/Variable-Recurring-Payments#operation/GetVrpConsent)
    - [../../api/reference/Variable-Recurring-Payments#operation/GetVrpConsent](../../api/reference/Variable-Recurring-Payments#operation/GetVrpConsent)[DELETE/vrp-consents/{id}](../../api/reference/Variable-Recurring-Payments#operation/RevokeVrpConsent)
  - `bankVrpStatus`
    - [GET /vrp-consents/{id}/payments](../../api/reference/Variable-Recurring-Payments#operation/GetVrpConsentPayments)
    - [POST /vrps](../../api/reference/Variable-Recurring-Payments#operation/CreateVrp)
    - [GET /vrps](../../api/reference/Variable-Recurring-Payments#operation/GetVrps)
    - [GET /vrps/{id}](../../api/reference/Variable-Recurring-Payments#operation/GetVrp)


##### Handling of PCC codes

[Token.io](https://token.io/) currently populates the PCC field with a defaulted value when no value is provided. However, with v4, we will no longer do this.

If you would like to include a PCC, you will need to provide one as part of your request. You can find more information on the new PCC in our documentation here for [v1](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.StoreTokenRequest!path=requestPayload/0/transferBody/instructions/metadata/providerTransferMetadata/0/cma9TransferMetadata/risk/paymentContextCode&t=request) and [v2](../../api/reference/Payments-v2#operation/InitiatePayment!path=initiation/risk/paymentContextCode&t=request).

Affected Endpoints:

- V1 API
  - [POST /token-request](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.StoreTokenRequest)
- V2 API
  - [POST /v2/payments](../../api/reference/Payments-v2#operation/InitiatePayment)


❗ Note: If you decide to not send a PCC or send an incorrect PCC, your request will not fail. Token will ignore any incorrect PCC provided, and the field will be empty. Whilst PCC is not mandatory currently or in OBL v4, it is recommended to be included as part of the request as Payment Context Code is a key transaction indicator and can be validated by the receiving bank.

#### Account Information Services

##### Changes to Balance Types identifiers

| Existing Balance Types identifiers - v3 | New Balance Types identifiers - v4 |
|  --- | --- |
| `ClosingAvailable` | `CLAV` |
| `ClosingBooked` | `CLBD` |
| `ForwardAvailable` | `FWAV` |
| `Information` | `INFO` |
| `InterimAvailable` | `ITAV` |
| `InterimBooked` | `ITBD` |
| `OpeningAvailable` | `OPAV` |
| `OpeningBooked` | `OPBD` |
| `PreviouslyClosedBooked` | `PRCD` |
| `Expected` | `XPCD` |


### What action do I need to take?

If you are impacted, to ensure a smooth transition we strongly recommend, as soon as possible, that you:

- **Speak with your implementation manager**, or
- **Contact us at** [support@token.io](mailto:support@token.io)


### When will this change apply to all impacted customers?

Currently, we only have confirmation for the first bank migration (HSBC), which is scheduled for **13th June 2025**.

### Where can I get further information?

For any questions, concerns, or to discuss your integration, please speak with your implementation manager or contact [support@token.io](mailto:support@token.io).