openapi: 3.2.0
info:
title: Account and Transactions Balances API
description: To retrieve account information for Barclays customers
termsOfService: https://www.openbanking.org.uk/terms
contact:
name: Service Desk
url: https://www.openbanking.org.uk
email: ServiceDesk@openbanking.org.uk
license:
name: open-licence
url: https://www.openbanking.org.uk/open-licence
version: v4.0
tags:
- name: Balances
description: Get Balances
paths:
/balances:
summary: Get Balances
description: Get Balances
get:
tags:
- Balances
summary: Get Balances
description: Enables an AISP to retrieve balance information for account(s) that the PSU has consented to.
operationId: GetBalances
parameters:
- $ref: '#/components/parameters/x-fapi-auth-date'
- $ref: '#/components/parameters/x-fapi-customer-ip-address'
- $ref: '#/components/parameters/x-fapi-interaction-id'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/x-customer-user-agent'
responses:
'500':
$ref: '#/components/responses/500Error'
'405':
$ref: '#/components/responses/405Error'
deprecated: false
/accounts/{accountId}/balances:
summary: Get Balances
description: Get Balances
get:
tags:
- Balances
summary: Get Balances for an AccountId
description: Enables an AISP to retrieve account balance information for a specific PSU account.
operationId: GetAccountsAccountIdBalances
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/x-fapi-auth-date'
- $ref: '#/components/parameters/x-fapi-customer-ip-address'
- $ref: '#/components/parameters/x-fapi-interaction-id'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/x-customer-user-agent'
responses:
'200':
$ref: '#/components/responses/200AccountsAccountIdBalancesRead'
'400':
$ref: '#/components/responses/400Error'
'401':
$ref: '#/components/responses/401Error'
'500':
$ref: '#/components/responses/500Error'
'403':
$ref: '#/components/responses/403Error'
'405':
$ref: '#/components/responses/405Error'
'406':
$ref: '#/components/responses/406Error'
'429':
$ref: '#/components/responses/429Error'
deprecated: false
components:
schemas:
Meta:
type: object
additionalProperties: false
description: Meta Data relevant to the payload
properties:
TotalPages:
type: integer
format: int32
example: 42
maximum: 999999
minimum: 0
FirstAvailableDateTime:
$ref: '#/components/schemas/ISODateTime'
LastAvailableDateTime:
$ref: '#/components/schemas/ISODateTime'
title: MetaData
AccountId:
type: string
description: A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.
example: '22289'
maxLength: 40
minLength: 1
OBBalanceType1Code:
type: string
description: Balance type, in a coded form.
For a full list of enumeration values refer to `ExternalBalanceType1Code` in *ISO_External_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets).
enum:
- CLAV
- CLBD
- FWAV
- INFO
- ITAV
- ITBD
- OPAV
- OPBD
- PRCD
- XPCD
example: CLAV
Links:
type: object
additionalProperties: false
description: Links relevant to the payload
properties:
Self:
type: string
format: uri
First:
type: string
format: uri
Prev:
type: string
format: uri
Next:
type: string
format: uri
Last:
type: string
format: uri
required:
- Self
OBErrorResponse1:
type: object
additionalProperties: false
deprecated: false
description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
properties:
Id:
type: string
description: A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.
maxLength: 40
minLength: 1
Code:
type: string
description: Deprecated
High level textual error code, to help categorise the errors.
example: 400 BadRequest
maxLength: 40
minLength: 1
Message:
type: string
description: Deprecated
Brief Error message
example: There is something wrong with the request parameters provided
maxLength: 500
minLength: 1
Errors:
type: array
items:
$ref: '#/components/schemas/OBError1'
maxItems: 99999
minItems: 1
required:
- Errors
nullable: false
ActiveOrHistoricCurrencyCode_1:
type: string
description: A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".
example: GBP
pattern: ^[A-Z]{3,3}$
OBReadBalance1:
type: object
additionalProperties: false
deprecated: false
properties:
Data:
type: object
properties:
Balance:
type: array
items:
type: object
description: Set of elements used to define the balance details.
properties:
AccountId:
$ref: '#/components/schemas/AccountId'
CreditDebitIndicator:
$ref: '#/components/schemas/OBCreditDebitCode_2'
Type:
$ref: '#/components/schemas/OBBalanceType1Code'
DateTime:
type: string
format: date-time
description: "Indicates the date (and time) of the balance. All dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00"
Amount:
type: object
description: Amount of money of the cash balance.
properties:
Amount:
$ref: '#/components/schemas/OBActiveCurrencyAndAmount_SimpleType'
Currency:
$ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
SubType:
type: string
default: BCUR
description: Balance sub type, in a coded form. Default if not specified is BCUR of the account
enum:
- BCUR
- LCUR
required:
- Amount
- Currency
CreditLine:
type: array
items:
type: object
description: Set of elements used to provide details on the credit line.
properties:
Included:
type: boolean
description: 'Indicates whether or not the credit line is included in the balance of the account.
Usage: If not present, credit line is not included in the balance amount of the account.'
Type:
type: string
description: Limit type, in a coded form.
For a full list of enumeration values refer to `OBInternalLimitType1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)
enum:
- Available
- Credit
- Emergency
- Pre-Agreed
- Temporary
Amount:
type: object
description: Amount of money of the credit line.
properties:
Amount:
$ref: '#/components/schemas/OBActiveCurrencyAndAmount_SimpleType'
Currency:
$ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
required:
- Amount
- Currency
required:
- Included
maxItems: 99999
minItems: 0
LocalAmount:
type: object
description: Optional component providing the equivalent of Amount in local currency. Default is Local Currency (LCUR) if not specified
properties:
Amount:
$ref: '#/components/schemas/OBActiveCurrencyAndAmount_SimpleType'
Currency:
$ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
SubType:
type: string
default: LCUR
description: Balance sub type, in a coded form. Default if not specified is LCUR of the account
enum:
- BCUR
- LCUR
required:
- Amount
- Currency
required:
- AccountId
- Amount
- CreditDebitIndicator
- DateTime
- Type
maxItems: 99999
minItems: 1
TotalValue:
type: object
description: Combined sum of all Amounts in the accounts base currency
properties:
Amount:
$ref: '#/components/schemas/OBActiveCurrencyAndAmount_SimpleType'
Currency:
$ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
required:
- Amount
- Currency
required:
- Balance
Links:
$ref: '#/components/schemas/Links'
Meta:
$ref: '#/components/schemas/Meta'
required:
- Data
nullable: false
OBExternalStatusReason1Code:
type: string
description: Low level textual error code, for all enum values see `OBExternalStatusReason1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)
example: U001
maxLength: 4
minLength: 4
OBCreditDebitCode_2:
type: string
description: "Indicates whether the balance is a credit or a debit balance. \nUsage: A zero balance is considered to be a credit balance.\n
\nFor a full list of enumeration values refer to `OBInternalCreditDebitCode` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)"
enum:
- Credit
- Debit
example: Credit
OBError1:
type: object
additionalProperties: false
minProperties: 1
properties:
ErrorCode:
$ref: '#/components/schemas/OBExternalStatusReason1Code'
Message:
type: string
description: 'A description of the error that occurred. e.g., ''A mandatory field isn''t supplied'' or ''RequestedExecutionDateTime must be in future''
OBL doesn''t standardise this field'
maxLength: 500
minLength: 1
Path:
type: string
description: Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency
maxLength: 500
minLength: 1
Url:
type: string
description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
required:
- ErrorCode
OBActiveCurrencyAndAmount_SimpleType:
type: string
description: A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217.
example: '1209.06'
pattern: ^\d{1,13}$|^\d{1,13}\.\d{1,5}$
ISODateTime:
type: string
format: date-time
description: "All dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00"
parameters:
x-fapi-interaction-id:
name: x-fapi-interaction-id
in: header
description: An RFC4122 UID used as a correlation id.
required: false
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
x-fapi-customer-ip-address:
name: x-fapi-customer-ip-address
in: header
description: The PSU's IP address if the PSU is currently logged in with the TPP.
required: false
schema:
type: string
maxLength: 40
minLength: 7
pattern: ^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])))$
nullable: false
example: 104.25.212.99
Authorization:
name: Authorization
in: header
description: An Authorisation Token as per https://tools.ietf.org/html/rfc6750
required: true
schema:
type: string
maxLength: 4871
minLength: 1
pattern: ^Bearer [A-Za-z0-9-_=]{1,256}\.\.[A-Za-z0-9-_=]{1,100}\.[A-Za-z0-9-_=]{1,4096}\.[A-Za-z0-9-_=]{1,100}$
nullable: false
example: Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0OTk4NTA5NjUsInN1YiI6IkJhcmNsYXlzX1BheW1lbnRfU2VydmljZSIsInNjb3BlIjpbImlkcy5tYW5hZ2Vfa2V5IiwiaWRzLm1hbmFnZV9jbGllbnQiXSwiaXNzIjoiaHR0cDovL2lkZW50aXR5LXNlcnZpY2UvIiwiaWF0IjoxNDk5ODUwMDY1fQ.OX-u14YLs7iksl6gnZ9ZqMBu-ekFi4pSva5mzhuf2xU
AccountId:
name: accountId
in: path
description: AccountId
required: true
schema:
type: string
deprecated: false
maxLength: 20
minLength: 1
pattern: ^\d{1,20}$
nullable: false
example: '12345678901234567890'
x-customer-user-agent:
name: x-customer-user-agent
in: header
description: Indicates the user-agent that the PSU is using.
required: false
schema:
type: string
deprecated: false
maxLength: 500
minLength: 1
nullable: false
example: Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
x-fapi-auth-date:
name: x-fapi-auth-date
in: header
description: "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC"
required: false
schema:
type: string
deprecated: false
maxLength: 29
minLength: 29
pattern: ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$
nullable: false
example: Sun, 10 Sep 2017 19:43:31 UTC
responses:
406Error:
description: Not Acceptable
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
200AccountsAccountIdBalancesRead:
description: Balances Read
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
content:
application/json:
schema:
$ref: '#/components/schemas/OBReadBalance1'
examples:
get-account-balances-response:
value:
Data:
Balance:
- AccountId: '22289'
Amount:
Amount: '300.00'
Currency: GBP
SubType: BCUR
LocalAmount:
Amount: '1230.00'
Currency: GBP
SubType: BCUR
TotalAmount:
Amount: '1230.00'
Currency: GBP
CreditDebitIndicator: Credit
Type: ITAV
DateTime: '2017-04-05T10:43:07+00:00'
CreditLine:
- Included: false
Amount:
Amount: '500.00'
Currency: GBP
Type: Available
- Included: false
Amount:
Amount: '500.00'
Currency: GBP
Type: Pre-Agreed
TotalValue:
Amount: '720.39'
Currency: GBP
Links:
Self: https://api.alphabank.com/open-banking/v4.0/aisp/accounts/22289/balances/
Meta:
TotalPages: 1
403Error:
description: Forbidden
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
content:
application/json:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
examples:
403ErrorResponse:
value:
Code: OB.BadRequest
Id: 2b5f0fb2-730b-11e8-adc0-fa7ae01bbebc
Message: Invalid request parameters
Errors:
- ErrorCode: AC17
Message: Version must be supplied
Path: Data.Initiation
Url:
- ErrorCode: AC17
Message: Version supplied is not valid
Path: Data.Initiation.CreditorAccount
Url:
500Error:
description: Internal Server Error
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
content:
application/json:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
examples:
500ErrorResponse:
value:
Code: OB.BadRequest
Id: 2b5f0fb2-730b-11e8-adc0-fa7ae01bbebc
Message: Invalid request parameters
Errors:
- ErrorCode: AC17
Message: Version must be supplied
Path: Data.Initiation
Url:
- ErrorCode: AC17
Message: Version supplied is not valid
Path: Data.Initiation.CreditorAccount
Url:
429Error:
description: Too Many Requests
headers:
Retry-After:
description: Number in seconds to wait
schema:
type: integer
deprecated: false
maximum: 9999999
minimum: 1
nullable: false
example: 120
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
400Error:
description: Bad request
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
content:
application/json:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
examples:
400ErrorResponse:
value:
Code: OB.BadRequest
Id: 2b5f0fb2-730b-11e8-adc0-fa7ae01bbebc
Message: Invalid request parameters
Errors:
- ErrorCode: AC17
Message: Version must be supplied
Path: Data.Initiation
Url:
- ErrorCode: AC17
Message: Version supplied is not valid
Path: Data.Initiation.CreditorAccount
Url:
401Error:
description: Unauthorized
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
405Error:
description: Method Not Allowed
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
deprecated: false
maxLength: 36
minLength: 32
pattern: ^[A-Za-f0-9]{8}-?[A-Za-f0-9]{4}-?[1-5][A-Za-f0-9]{3}-?[89ab][A-Za-f0-9]{3}-?[A-Za-f0-9]{12}$
nullable: false
example: 93bac548-d2de-4546-b106-880a5018460d
Cache-Control:
description: GIS mandatory response header. This is added by the Cognac sidecar.
schema:
type: string
default: no-cache, no-store, must-revalidate
deprecated: false
maxLength: 35
minLength: 35
pattern: ^no-cache, no-store, must-revalidate$
nullable: false
example: no-cache, no-store, must-revalidate
securitySchemes:
TPPOAuth2Security:
type: oauth2
description: TPP client credential authorisation flow with the ASPSP
flows:
clientCredentials:
tokenUrl: https://authserver.example/token
scopes:
accounts: Ability to read Accounts information
PSUOAuth2Security:
type: oauth2
description: OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU
flows:
authorizationCode:
authorizationUrl: https://authserver.example/authorization
tokenUrl: https://authserver.example/token
scopes:
accounts: Ability to read Accounts information