Skip to main content

Page contents

What this API does:

Depending on permissions, this API can retrieve a list of a customer’s consented accounts; or information about a specific account.

Before calling the API, you must have an access token issued by Virgin Money using 'Authorization Code' grant.

Endpoint configuration

Sandbox:  cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/aisp/accounts

Production:  api.openbanking.virginmoney.com/open-banking/v3.1/aisp/accounts

This API returns a list of the accounts that the customer has authorised you to access. You can use the AccountId(s) to retrieve further information for a specific account.

The selection of authorised accounts happens at Virgin Money's interface.

Sandbox:  cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/aisp/accounts/{AccountId}

Production:  api.openbanking.virginmoney.com/open-banking/v3.1/aisp/accounts/{AccountId}

Account information for each AccountId is retrieved in the call to GET/accounts.

API calls

Accounts

NameDescription
x-fapi-auth-date
string
(header)

The time when the PSU last logged in with the TPP.
All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below:
Sun, 10 Sep 2017 19:43:31 UTC

x-fapi-customer-ip-address
string
(header)

The PSU's IP address if the PSU is currently logged in with the TPP.

x-fapi-interaction-id
string
(header)
An RFC4122 UID used as a correlation id.
Authorization *
string
(header)

Responses

CodeDescription
200
OK

{
"Data": {
"Account": [
{
"AccountId": "string",
"Currency": "string",
"AccountType": "Business",
"AccountSubType": "ChargeCard",
"Description": "string",
"Nickname": "string",
"Account": [
{
"SchemeName": "string",
"Identification": "string",
"Name": "string"
}
]
}
]
},
"Links": {
"Self": "string",
"First": "string",
"Prev": "string",
"Next": "string",
"Last": "string"
},
"Meta": {
"TotalPages": 0,
"FirstAvailableDateTime": "2024-06-12T08:01:30.245Z",
"LastAvailableDateTime": "2024-06-12T08:01:30.245Z"
}
}
#/definitions/OBReadAccount4OBReadAccount4{
Data*{
Account[#/definitions/OBAccount4OBAccount4{
description:
Unambiguous identification of the account to which credit and debit entries are made.
AccountId*AccountIdstring
A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.
Currency*ActiveOrHistoricCurrencyCode_0string

Identification of the currency in which the account is held.
Usage: Currency should only be used in case one and the same account number covers several currencies
and the initiating party needs to identify which currency needs to be used for settlement on the account.

AccountType*OBExternalAccountType1Codestring

Specifies the type of account (personal or business).


Enum:
[ Business, Personal ]
AccountSubType*OBExternalAccountSubType1Codestring

Specifies the sub type of account (product family group).


Enum:
[ ChargeCard, CreditCard, CurrentAccount, EMoney, Loan, Mortgage, PrePaidCard, Savings ]
DescriptionDescription_0string
Specifies the description of the account type.
NicknameNicknamestring

The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.

Account[{
description:
Provides the details to identify an account.
SchemeName*OBExternalAccountIdentification4Codestring

Name of the identification scheme, in a coded form as published in an external list.

Identification*Identification_0string
Identification assigned by an institution to identify an account. This identification is known by the account owner.
NameName_0string

The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.
Note, the account name is not the product name or the nickname of the account.

}]
}]
}
Links#/definitions/LinksLinks{
description:
Links relevant to the payload
Self*string
Firststring
Prevstring
Nextstring
Laststring
}
Meta#/definitions/MetaMeta{
description:
Meta Data relevant to the payload
TotalPagesinteger($int32)
FirstAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

LastAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

}
}

Headers:

NameDescriptionType
x-fapi-interaction-id
An RFC4122 UID used as a correlation id.
string
400
Bad request

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}
401
Unauthorized
403
Forbidden

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}
404
Not found
405
Method Not Allowed
406
Not Acceptable
429
Too Many Requests

Headers:

NameDescriptionType
Retry-After
Number in seconds to wait
integer
500
Internal Server Error

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}
NameDescription
AccountId *
string
(path)
AccountId
x-fapi-auth-date
string
(header)

The time when the PSU last logged in with the TPP.
All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below:
Sun, 10 Sep 2017 19:43:31 UTC

x-fapi-customer-ip-address
string
(header)

The PSU's IP address if the PSU is currently logged in with the TPP.

x-fapi-interaction-id
string
(header)
An RFC4122 UID used as a correlation id.
Authorization *
string
(header)

Responses

CodeDescription
200
OK

{
"Data": {
"Account": [
{
"AccountId": "string",
"Currency": "string",
"AccountType": "Business",
"AccountSubType": "ChargeCard",
"Description": "string",
"Nickname": "string",
"Account": [
{
"SchemeName": "string",
"Identification": "string",
"Name": "string"
}
]
}
]
},
"Links": {
"Self": "string",
"First": "string",
"Prev": "string",
"Next": "string",
"Last": "string"
},
"Meta": {
"TotalPages": 0,
"FirstAvailableDateTime": "2024-06-12T08:46:43.001Z",
"LastAvailableDateTime": "2024-06-12T08:46:43.001Z"
}
}
#/definitions/OBReadAccount4OBReadAccount4{
Data*{
Account[#/definitions/OBAccount4OBAccount4{
description:
Unambiguous identification of the account to which credit and debit entries are made.
AccountId*AccountIdstring
A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.
Currency*ActiveOrHistoricCurrencyCode_0string

Identification of the currency in which the account is held.
Usage: Currency should only be used in case one and the same account number covers several currencies
and the initiating party needs to identify which currency needs to be used for settlement on the account.

AccountType*OBExternalAccountType1Codestring

Specifies the type of account (personal or business).


Enum:
[ Business, Personal ]
AccountSubType*OBExternalAccountSubType1Codestring

Specifies the sub type of account (product family group).


Enum:
[ ChargeCard, CreditCard, CurrentAccount, EMoney, Loan, Mortgage, PrePaidCard, Savings ]
DescriptionDescription_0string
Specifies the description of the account type.
NicknameNicknamestring

The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.

Account[{
description:
Provides the details to identify an account.
SchemeName*OBExternalAccountIdentification4Codestring

Name of the identification scheme, in a coded form as published in an external list.

Identification*Identification_0string
Identification assigned by an institution to identify an account. This identification is known by the account owner.
NameName_0string

The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.
Note, the account name is not the product name or the nickname of the account.

}]
}]
}
Links#/definitions/LinksLinks{
description:
Links relevant to the payload
Self*string
Firststring
Prevstring
Nextstring
Laststring
}
Meta#/definitions/MetaMeta{
description:
Meta Data relevant to the payload
TotalPagesinteger($int32)
FirstAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

LastAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

}
}

Headers:

NameDescriptionType
x-fapi-interaction-id
An RFC4122 UID used as a correlation id.
string
400
Bad request

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}
401
Unauthorized
403
Forbidden

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}
404
Not found
405
Method Not Allowed
406
Not Acceptable
429
Too Many Requests

Headers:

NameDescriptionType
Retry-After
Number in seconds to wait
integer
500
Internal Server Error

{
"Code": "string",
"Id": "string",
"Message": "string",
"Errors": [
{
"ErrorCode": "string",
"Message": "string",
"Path": "string",
"Url": "string"
}
]
}
#/definitions/OBErrorResponse1OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}

Models

OBReadAccount4{
Data*{
Account[#/definitions/OBAccount4OBAccount4{
description:
Unambiguous identification of the account to which credit and debit entries are made.
AccountId*AccountIdstring
A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.
Currency*ActiveOrHistoricCurrencyCode_0string

Identification of the currency in which the account is held.
Usage: Currency should only be used in case one and the same account number covers several currencies
and the initiating party needs to identify which currency needs to be used for settlement on the account.

AccountType*OBExternalAccountType1Codestring

Specifies the type of account (personal or business).

Enum:
[ Business, Personal ]
AccountSubType*OBExternalAccountSubType1Codestring

Specifies the sub type of account (product family group).

Enum:
[ ChargeCard, CreditCard, CurrentAccount, EMoney, Loan, Mortgage, PrePaidCard, Savings ]
DescriptionDescription_0string
Specifies the description of the account type.
NicknameNicknamestring

The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.

Account[{
description:
Provides the details to identify an account.
SchemeName*OBExternalAccountIdentification4Codestring

Name of the identification scheme, in a coded form as published in an external list.

Identification*Identification_0string
Identification assigned by an institution to identify an account. This identification is known by the account owner.
NameName_0string

The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.
Note, the account name is not the product name or the nickname of the account.

}]
}]
}
Links#/definitions/LinksLinks{
description:
Links relevant to the payload
Self*string
Firststring
Prevstring
Nextstring
Laststring
}
Meta#/definitions/MetaMeta{
description:
Meta Data relevant to the payload
TotalPagesinteger($int32)
FirstAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

LastAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

}
}

OBAccount4{
description:
Unambiguous identification of the account to which credit and debit entries are made.
AccountId*AccountIdstring
A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.
Currency*ActiveOrHistoricCurrencyCode_0string

Identification of the currency in which the account is held.
Usage: Currency should only be used in case one and the same account number covers several currencies
and the initiating party needs to identify which currency needs to be used for settlement on the account.

AccountType*OBExternalAccountType1Codestring

Specifies the type of account (personal or business).

Enum:
[ Business, Personal ]
AccountSubType*OBExternalAccountSubType1Codestring

Specifies the sub type of account (product family group).

Enum:
[ ChargeCard, CreditCard, CurrentAccount, EMoney, Loan, Mortgage, PrePaidCard, Savings ]
DescriptionDescription_0string
Specifies the description of the account type.
NicknameNicknamestring

The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.

Account[{
description:
Provides the details to identify an account.
SchemeName*OBExternalAccountIdentification4Codestring

Name of the identification scheme, in a coded form as published in an external list.

Identification*Identification_0string
Identification assigned by an institution to identify an account. This identification is known by the account owner.
NameName_0string

The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.
Note, the account name is not the product name or the nickname of the account.

}]
}

AccountIdstring
A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.

StatusUpdateDateTime{}

ActiveOrHistoricCurrencyCode_0string

Identification of the currency in which the account is held.
Usage: Currency should only be used in case one and the same account number covers several currencies
and the initiating party needs to identify which currency needs to be used for settlement on the account.

OBExternalAccountType1Codestring

Specifies the type of account (personal or business).

Enum:
[ Business, Personal ]

OBExternalAccountSubType1Codestring

Specifies the sub type of account (product family group).

Enum:
[ ChargeCard, CreditCard, CurrentAccount, EMoney, Loan, Mortgage, PrePaidCard, Savings ]

Description_0string
Specifies the description of the account type.

Nicknamestring

The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.

OBExternalAccountIdentification4Codestring

Name of the identification scheme, in a coded form as published in an external list.

Identification_0string
Identification assigned by an institution to identify an account. This identification is known by the account owner.

Name_0string

The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.
Note, the account name is not the product name or the nickname of the account.

description:
Links relevant to the payload
Self*string
Firststring
Prevstring
Nextstring
Laststring
}

Meta{
description:
Meta Data relevant to the payload
TotalPagesinteger($int32)
FirstAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

LastAvailableDateTimeISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

}

ISODateTimestring($date-time)

All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00

OBErrorResponse1{
description:

An array of detail error codes, and messages, and URLs to documentation to help remediation.

Code*string
minLength: 1

maxLength: 40

High level textual error code, to help categorize the errors.

Idstring
minLength: 1

maxLength: 40

A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.

Message*string
minLength: 1

maxLength: 500

Brief Error message, e.g., 'There is something wrong with the request parameters provided'

Errors*[
minItems: 1
#/definitions/OBError1OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}]
}

OBError1{
ErrorCode*string

Low level textual error code, e.g., UK.OBIE.Field.Missing

Message*string
minLength: 1

maxLength: 500

A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'
OBIE doesn't standardise this field

Pathstring
minLength: 1

maxLength: 500

Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency

Urlstring

URL to help remediate the problem, or provide more information, or to API Reference, or help etc

}

Having trouble?

Contact our dedicated team members via our ticketing system or via our support mailbox

OpenBankingResponse@virginmoney.com

Contact us Link opens in a new window