Account and Transaction API Specification - UK
Functionality at a glance
The NBG "UK OPB - Account and Transaction v3.1.5" API follows the
This Account and Transaction API Specification describes the flows and payloads for retrieving a list of accounts and their transactions.
The API endpoints described here allow a AISP to:
-
Create the Consent with the appropriate permissions in order to be able to access the API Endpoints
-
Retrieve the list of accounts
-
Retrieve an account's details
-
Retrieve an account's balances
-
Retrieve an account's transactions
-
Retrieve an account's beneficiaries
-
Retrieve an account's standing orders
-
Retrieve an account's party
-
Retrieve an account's scheduled payments
-
Retrieve an account's statements
Quick Getting Started
-
Login/Register to the NBG Technology HUB
-
Go to "APPS"
-
Select your Organization and go to step 4. If you want to create a new Organization click "CREATE AN ORGANIZATION" and follow the steps below:
- Enter the title of your Organization
- Enter a short description of your Organization (optional)
- Click "SUBMIT"
-
Select the Organization of choice and click "ADD AN APPLICATION"
-
Fill in the forms (title and short description)
-
Check "Authorization Code" and "Client Credentials"
-
Enter the OAuth Redirect and Post Logout URIs (these are the URIs that we will redirect the user upon logging in and logging out respectively)
You can use the following redirect URL to easily test the API through the portal:
-
Click "SUBMIT"
-
Store the APPs "Client ID" and "Client Secret"
-
-
Go to "API PRODUCTS" and select the ACCOUNT INFORMATION - UK OPEN BANKING API
-
Click "START USING THIS API", choose your app and click "SUBSCRIBE"
-
Get an Access Token using the Access Token Flow and the API scopes provided in the Authentication and Authorization (OAuth2) section below
-
Create a Sandbox
-
Play with the API
Sandbox Flow
The Sandbox Flow matches the Production Flow. The difference lies into the Data used. Instead of live data, the Sandbox flow uses mocked data.
Production Flow
The Production Flow is described in the
More details about the implementation specifics followed, please visit section UK OPB Implementation Specifics
Authentication and Authorization (OAuth2)
This API version uses the OAuth2 protocol for authentication and authorization, which means that a Bearer (access token) should be acquired. An access token can be retrieved using the client_id and client_secret of the APP that you created and subscribed in this API, and your own credentials (username, password) that you use to sign in the NBG Technology HUB. The scopes are defined below:
Authorization Endpoint:
Token Endpoint:
Authorization Code
Sandbox Scopes:
Production Scopes:
Client Credentials
Sandbox Scopes:
Production Scopes:
See more
QWAC Certificates
TPPs are required to present a QWAC certificate during API consumption. The API checks that this certificate has been provided and is valid. In sandbox mode the certificate validations are optional. To validate your certificate in sandbox implementation, please send us your QWAC certificate at and set the HTTP Header "x-sandbox-qwac-certificate-check" with the value "true" in your requests.
SMS Challenge (One Time Password)
In order to successfully authorize an Accounts Access you will need to provide the SMS OTP (One Time Password) in the corresponding Accounts Consent UI Screen.
By default the SMS OTP will be sent to the mobile number declared upon singing up in the NBG Technology HUB.
Create your Sandbox
Create a new Sandbox application by invoking the POST /sandbox. This call will generate a new Sandbox with a unique sandbox-id.
Important! Before proceeding save the sandbox id you just created.
When you create a sandbox, users and sandbox specific data are generated as sample data.
Start Testing
Once you have your sandbox-id, you can start invoking the rest of the operations by providing the mandatory http header sandbox-id and the http headers described below.
Important notes
Request headers
The following HTTP header parameters are required for every call:
-
Authorization. The Auth2 Token
-
sandbox-id. Your Sandbox ID
Consent
In order to be able to effectively start using the Endpoints the appropriate Consent needs to be created and set to the 'Authorised' status.
In order to create the Consent you need to at least set the required permissions and the Risk sections.
Optionally you may set the
-
ExpirationDateTime. When the Consent expires
-
TransactionFromDateTime. Start Date to retrieve the transactions
-
TransactionToDateTime. End Date to retrieve the transactions
Not Implemented Endpoints
The following endpoints are not implemented in the API
- GET /balances
- GET /transactions
- GET /beneficiaries
- GET /accounts/{AccountId}/direct-debits
- GET /direct-debits
- GET /standing-orders
- GET /accounts/{AccountId}/product
- GET /products
- GET /accounts/{AccountId}/offers
- GET /offers
- GET /scheduled-payments
- GET /statements
Error Codes
The error codes and their description can be found
UK OPB Implementation Specifics
Below you may find more specific information & limitations regarding the implementation followed in the Production API.
Token Endpoint Client Authentication
At this point the supported Client Authentication method is "Client Secret Basic" - usage of "Client ID" & "Client Secret".
Consent Authorization
For a PSU to Authorize a Consent, they need to be redirected to the appropriate Consent UI.
For this redirection to take place the TPP needs to follow the Authorization Endpoint by amending the generated "Consent ID", like this:
Once the PSU is redirected to the Consent Authorization Screen, they need to enter their IBank (Production) or Developer Portal (Sandbox) Credentials and either Authorize or Reject the Consent.
At this point the Consent is binded with the PSU.
Debtor Account
Currently, only the "UK.OBIE.IBAN" scheme is supported.
Feedback and Questions
We would love to hear your feedback and answer your questions. Send us at developer@nbg.gr [blocked]
Check out our !
Created by .
Entities
Below, the main entities are documented. <a name=OBExternalPermissions1Code></a>
OBExternalPermissions1Code
Attributes
<a name=OBReadData1></a>
OBReadData1
Attributes
<a name=OBRisk2></a>
OBRisk2
The Risk section is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.
Attributes
<a name=OBReadConsent1></a>
OBReadConsent1
Attributes
<a name=ErrorCode></a>
ErrorCode
Attributes
<a name=OBError1></a>
OBError1
Attributes
<a name=OBErrorResponse1></a>
OBErrorResponse1
An array of detail error codes, and messages, and URLs to documentation to help remediation.
Attributes
<a name=OBExternalRequestStatus1Code></a>
OBExternalRequestStatus1Code
Attributes
<a name=OBReadDataConsentResponse1></a>
OBReadDataConsentResponse1
Attributes
<a name=Links></a>
Links
Links relevant to the payload
Attributes
<a name=Meta></a>
Meta
Meta Data relevant to the payload
Attributes
<a name=OBReadConsentResponse1></a>
OBReadConsentResponse1
Attributes
<a name=OBExternalAccountType1Code></a>
OBExternalAccountType1Code
Attributes
<a name=OBExternalAccountSubType1Code></a>
OBExternalAccountSubType1Code
Attributes
<a name=OBCashAccount5></a>
OBCashAccount5
Attributes
<a name=OBBranchAndFinancialInstitutionIdentification5></a>
OBBranchAndFinancialInstitutionIdentification5
Attributes
<a name=OBAccount6></a>
OBAccount6
Unambiguous identification of the account to which credit and debit entries are made.
Attributes
<a name=OBReadDataAccount5></a>
OBReadDataAccount5
Attributes
<a name=OBReadAccount5></a>
OBReadAccount5
Attributes
<a name=OBCreditDebitCode></a>
OBCreditDebitCode
Attributes
<a name=OBBalanceType1Code></a>
OBBalanceType1Code
Attributes
<a name=OBActiveOrHistoricCurrencyAndAmount></a>
OBActiveOrHistoricCurrencyAndAmount
Attributes
<a name=OBExternalLimitType1Code></a>
OBExternalLimitType1Code
Attributes
<a name=OBCreditLine1></a>
OBCreditLine1
Attributes
<a name=OBCashBalance1></a>
OBCashBalance1
Set of elements used to define the balance details.
Attributes
<a name=OBReadDataBalance1></a>
OBReadDataBalance1
Attributes
<a name=OBReadBalance1></a>
OBReadBalance1
Attributes
<a name=OBBeneficiaryType1Code></a>
OBBeneficiaryType1Code
Attributes
<a name=OBBeneficiary5></a>
OBBeneficiary5
Attributes
<a name=OBReadDataBeneficiary5></a>
OBReadDataBeneficiary5
Attributes
<a name=OBReadBeneficiary5></a>
OBReadBeneficiary5
Attributes
<a name=OBParty2></a>
OBParty2
Attributes
<a name=OBReadDataParty2></a>
OBReadDataParty2
Attributes
<a name=OBReadParty2></a>
OBReadParty2
Attributes
<a name=OBReadDataParty3></a>
OBReadDataParty3
Attributes
<a name=OBReadParty3></a>
OBReadParty3
Attributes
<a name=SandboxRequest></a>
SandboxRequest
Request to create a new sandbox
Attributes
<a name=ErrorResponse></a>
ErrorResponse
Attributes
<a name=SandboxRetryCacheEntry></a>
SandboxRetryCacheEntry
Keeps the number of calls without x-fapi-customer-ip-address header present
Attributes
<a name=SandboxBankAccountInfo></a>
SandboxBankAccountInfo
General account information
Attributes
<a name=SandboxParty></a>
SandboxParty
Connected party information
Attributes
<a name=SandboxBeneficiary></a>
SandboxBeneficiary
Beneficiary information
Attributes
<a name=SandboxStandingOrder></a>
SandboxStandingOrder
Standing order information
Attributes
<a name=SandboxScheduledPayment></a>
SandboxScheduledPayment
Scheduled payment information
Attributes
<a name=SandboxStatement></a>
SandboxStatement
Statement information
Attributes
<a name=SandboxTransaction></a>
SandboxTransaction
Transaction information
Attributes
<a name=SandboxBankAccount></a>
SandboxBankAccount
Sandbox bank account
Attributes
<a name=SandboxCardInfo></a>
SandboxCardInfo
Sandbox card information
Attributes
<a name=SandboxCard></a>
SandboxCard
Sandbox card
Attributes
<a name=SandboxUser></a>
SandboxUser
User data
Attributes
<a name=Sandbox></a>
Sandbox
Sandbox model
Attributes
<a name=OBExternalScheduleType1Code></a>
OBExternalScheduleType1Code
Attributes
<a name=OBScheduledPayment3></a>
OBScheduledPayment3
Attributes
<a name=OBReadDataScheduledPayment3></a>
OBReadDataScheduledPayment3
Attributes
<a name=OBReadScheduledPayment3></a>
OBReadScheduledPayment3
Attributes
<a name=OBExternalStandingOrderStatus1Code></a>
OBExternalStandingOrderStatus1Code
Attributes
<a name=OBStandingOrder5></a>
OBStandingOrder5
Attributes
<a name=OBReadDataStandingOrder5></a>
OBReadDataStandingOrder5
Attributes
<a name=OBReadStandingOrder6></a>
OBReadStandingOrder6
Attributes
<a name=OBExternalStatementType1Code></a>
OBExternalStatementType1Code
Attributes
<a name=OBStatement2></a>
OBStatement2
Provides further details on a statement resource.
Attributes
<a name=OBReadDataStatement2></a>
OBReadDataStatement2
Attributes
<a name=OBReadStatement2></a>
OBReadStatement2
Attributes
<a name=OBEntryStatus1Code></a>
OBEntryStatus1Code
Attributes
<a name=ProprietaryBankTransactionCodeStructure1></a>
ProprietaryBankTransactionCodeStructure1
Set of elements to fully identify a proprietary bank transaction code.
Attributes
<a name=OBTransactionCashBalance></a>
OBTransactionCashBalance
Set of elements used to define the balance as a numerical representation of the net increases and decreases in an account after a transaction entry is applied to the account.
Attributes
<a name=OBCashAccount6></a>
OBCashAccount6
Unambiguous identification of the account of the creditor, in the case of a debit transaction.
Attributes
<a name=OBTransaction6></a>
OBTransaction6
Provides further details on an entry in the report.
Attributes
<a name=OBReadDataTransaction6></a>
OBReadDataTransaction6
Attributes
<a name=OBReadTransaction6></a>
OBReadTransaction6
Attributes
Authentication
<!-- ReDoc-Inject: <security-definitions> -->
https://my.nbg.gr/identity/connect/authorize https://my.nbg.gr/identity/connect/token sandbox-uk-account-info-api-v1 offline_access accounts offline_access sandbox-uk-account-info-api-v1 accounts- Homepage
- https://api.apis.guru/v2/specs/nbg.gr/v3.1.5.json
- Provider
- nbg.gr
- OpenAPI version
- 3.0.1
- Spec (JSON)
- https://api.apis.guru/v2/specs/nbg.gr/v3.1.5/openapi.json
- Spec (YAML)
- https://api.apis.guru/v2/specs/nbg.gr/v3.1.5/openapi.yaml
Tools (23)
Extracted live via the executor SDK.
-
accountAccess.deleteAccountAccessConsentsConsentIdDelete Account Access Consents by Consent ID
-
accountAccess.getAccountAccessConsentsConsentIdGet Account Access Consents by Consent ID
-
accountAccess.postAccountAccessConsentsCreate Account Access Consents
-
accounts.getAccountsGet Accounts
-
accounts.getAccountsAccountIdGet Accounts by Account ID
-
balances.getAccountsAccountIdBalancesGet Balances by Account ID
-
beneficiaries.getAccountsAccountIdBeneficiariesGet Beneficiaries by Account ID
-
parties.getAccountsAccountIdPartiesGet Parties by Account ID
-
parties.getAccountsAccountIdPartyGet Party by Account ID
-
parties.getPartyGet Party
-
sandbox.deleteSandboxSandboxIdDelete Sandbox
-
sandbox.getSandboxSandboxIdExport Sandbox
-
sandbox.postSandboxCreate Sandbox
-
sandbox.putSandboxImport Sandbox
-
scheduledPayments.getAccountsAccountIdScheduledPaymentsGet Scheduled Payments by Account ID
-
standingOrders.getAccountsAccountIdStandingOrdersGet Standing Orders by Account ID
-
statements.getAccountsAccountIdStatementsGet Statements by Account ID
-
statements.getAccountsAccountIdStatementsStatementIdGet Statements by Account ID and Statement ID
-
statements.getAccountsAccountIdStatementsStatementIdFileGet Statement PDF File by Account ID and Statement ID
-
transactions.getAccountsAccountIdStatementsStatementIdTransactionsGet Transactions by Account ID and Statement ID
-
transactions.getAccountsAccountIdTransactionsGet Transactions by Account ID
-
openapi.previewSpecPreview an OpenAPI document before adding it as a source
-
openapi.addSourceAdd an OpenAPI source and register its operations as tools