Starling Bank PCA API
Endpoint for getting Personal Current Account data
Endpoint for getting Personal Current Account data
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/starling-bank-pca-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: v1.3
title: Open Data PCA API
description: Latest Swagger specification for OpenData
servers:
- url: https://developer.openbanking.org.uk/reference-implementation/open-banking/v1.3
tags:
- name: PCA
description: Endpoint for getting Personal Current Account data
paths:
/personal-current-accounts:
get:
tags:
- PCA
description: Gets a list of all `Personal Current Account` objects.
parameters:
- name: If-Modified-Since
description: Used for conditional request, to retrieve data only if modified since a given date
in: header
required: false
schema:
type: string
- name: If-None-Match
description: Used for conditional request, to retrieve data only if the given Etag value does not match
in: header
required: false
schema:
type: string
responses:
'200':
description: Successful response with a list of `Personal Current Account` data
headers:
Strict-Transport-Security:
description: HTTPS strict transport security header
schema:
type: string
default: max-age=31536000
Etag:
description: A unique ID identifying whether this resource has changed
schema:
type: string
Cache-Control:
description: Describes how long this response can be cached
schema:
type: string
default: max-age=28800
X-Frame-Options:
description: Prevent this request from being loaded in any iframes
schema:
type: string
default: DENY
X-Content-Type-Options:
description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing
schema:
type: string
default: nosniff
content:
application/prs.openbanking.opendata.v1.3+json:
schema:
type: object
properties:
meta:
title: Meta data
type: object
properties:
LastUpdated:
type: string
format: date-time
TotalResults:
type: integer
Agreement:
type: string
enum:
- Use of the APIs and any related data will be subject to the terms of the Open Licence and subject to terms and conditions
License:
description: Open Banking License
type: string
format: uri
enum:
- https://www.openbanking.org.uk/open-licence
TermsOfUse:
description: Open Banking Terms of Use
type: string
format: uri
enum:
- https://www.openbanking.org.uk/terms
required:
- LastUpdated
- TotalResults
- Agreement
- License
- TermsOfUse
additionalProperties: false
data:
type: array
items:
description: Personal Current Account
type: object
properties:
Organisation:
description: Organisation
type: object
properties:
ParentOrganisation:
description: Parent organisation
type: object
properties:
LEI:
description: The LEI ID of the organisation
type: string
pattern: ^[A-Z0-9]{18,18}[0-9]{2,2}$
BIC:
description: The BIC from the organisation
type: string
pattern: '[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?'
OrganisationName:
description: Organisation Name
type: object
properties:
LegalName:
description: Legal Name of the organisation
type: string
minLength: 1
maxLength: 35
required:
- LegalName
additionalProperties: false
required:
- OrganisationName
additionalProperties: false
Brand:
description: Brand
type: object
properties:
TrademarkIPOCode:
description: 'The Intellectual Property Office (IPO) is the official body responsible for intellectual property (IP) rights including patents, designs, trademarks and copyright. (Code: UK or EU only)'
type: string
enum:
- UK
- EU
TrademarkID:
description: 'The trademark number that has been registered with the Intellectual Property Office. Note: The 2 letter IPO prefix should be omitted'
type: string
minLength: 1
maxLength: 35
required:
- TrademarkIPOCode
- TrademarkID
additionalProperties: false
required:
- ParentOrganisation
- Brand
additionalProperties: false
ProductType:
description: Descriptive code for the product category
type: string
enum:
- PCA
ProductName:
description: The name of the product used for marketing purposes from a customer perspective. i.e. what the customer would recognise
type: string
ProductSegment:
type: array
items:
description: Marketing or industry segment that the product is designed for
type: string
enum:
- Basic
- Business
- General
- Graduate
- International
- Packaged
- Personal
- Premium
- Reward
- SME
- Student
- YoungAdult
- Youth
minItems: 1
InternationalPaymentsSupported:
description: Indicates that the account supports international payments
type: boolean
ProductIdentifier:
description: Identifier within the parent organisation for the product. Must be unique in the organisation
type: string
CardWithdrawalLimit:
description: The daily Limit that a customer can get via the ATM. This describes the default limit rather than the maximum
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
ProductDescription:
description: Description of the product provided by the parent organisation
type: string
TsandCs:
description: URL provided by the parent organisation which redirects to the current T&Cs
type: array
items:
type: string
minItems: 1
AccessChannels:
description: Ways to interact with the bank when managing account
type: array
items:
description: Channel
type: string
enum:
- ATM
- Branch
- BusinessCommercialCentre
- CallCentre
- MobileApps
- MobileBanking
- Online
- Phone
- Post
- PostOffice
- RelationshipManager
- Text
minItems: 1
CardType:
description: Card Type available
type: array
items:
description: Indicates the card scheme
type: string
enum:
- BasicCard
- BusinessQuickLodgeCard
- Cashcard
- ContactlessCashcard
- ContactlessDebitMastercard
- ContactlessDebitVisa
- DebitMastercard
- VisaDebit
- DepositCard
- OperatorCard
- POCACard
minItems: 1
Contactless:
description: Does the card issued have contactless facility
type: boolean
MobileWallet:
description: Mobile wallet supported by this product. A mobile wallet being any electronic device that allows an individual to make electronic commerce transactions
type: array
items:
description: Mobile wallet supported by this product. A mobile wallet being any electronic device that allows an individual to make electronic commerce transactions
type: string
enum:
- AndroidPay
- ApplePay
- IssuerMobileApp
- MobileBankingApp
- Other
- PayM
- SamsungPay
- VodafoneWallet
CardNotes:
description: Optional additional notes to supplement the card details
type: string
ChequeBookAvailable:
description: Can a chequebook be issued
type: boolean
CreditScoringPartOfAccountOpeningForGettingAnAccount:
description: Indicates whether a credit check performed on an inquiry to open an account is submitted
type: boolean
CreditScoringPartOfAccountOpeningIsAHardOrSoftCreditScore:
description: Describes the type of credit scoring
type: array
items:
description: Indicates the type of scoring
type: string
enum:
- Hard
- Soft
CreditScoringPartOfAccountOpeningText:
description: Details on the specific credit scoring
type: string
CreditScoringPartOfAccountOpeningForIDVerification:
description: Indicates whether a credit check is used to check the address of a potential new account holder
type: boolean
CreditScoringPartOfAccountOpeningIDVerificationIsAHardOrSoftCreditScore:
type: array
items:
description: Indicates the type of scoring
type: string
enum:
- Hard
- Soft
CreditScoringPartOfAccountOpeningIDVerificationText:
description: Details on the specific credit scoring
type: array
items:
type: string
MaximumMonthlyCharge:
description: The maximum Relevant Charges that could accrue
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
ProductURL:
description: URL provided by the organisation which redirects to the product (on live products only). There might be more than one product at a given URL
type: array
items:
type: string
format: uri
minItems: 1
Currency:
description: Currency of the Account. Default to GBP at present
type: array
items:
description: Active or Historic Currency Code
type: string
pattern: '[A-Z]{3}'
minItems: 1
OverdraftOffered:
description: Indicates whether an overdraft offered for this account
type: boolean
Feature:
type: array
items:
description: Account Features
type: object
properties:
ExistingFeature:
description: Indicates whether the account has any feature
type: boolean
ProductState:
description: Describes if the offering is promotional or a description of a future state.
type: string
enum:
- FutureMultipleTerms
- Promotional
- Regular
StartPromotionOrFutureTerms:
description: Describes the start date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
StopPromotionOrFutureTerms:
description: Describes the end date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
LengthPromotionalInDays:
description: Describes the length if only a duration is given instead of a date
type: integer
DateOfChange:
description: Date of the change if it refers to future terms
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
FeatureDetails:
description: Feature details
type: array
items:
description: Feature Details
type: object
properties:
FeatureSubType:
description: ''
type: string
enum:
- FutureMultipleTerms
- Promotional
- Regular
StartPromotionOrFutureTerms:
description: Describes the start date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
StopPromotionOrFutureTerms:
description: Describes the end date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
LengthPromotionalInDays:
description: Describes the length if only a duration is given instead of a date
type: integer
DateOfChange:
description: Date of the change if it refers to future terms
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
FeatureType:
description: Type that represents the nature of the feature
type: string
FeatureName:
description: The name of the feature
type: string
FeatureDescription:
description: A textual explanation of what the feature
type: string
FeatureValue:
description: The value or values permissible for a specific feature for an individual product representing a product characteristic
type: string
CriteriaType:
description: Criteria that is required in order to be eligible for the feature
type: string
required:
- ExistingFeature
CAPricing:
type: array
items:
description: Card Price
type: object
properties:
ProductState:
description: Describes if the offering is promotional or a description of a future state.
type: string
enum:
- FutureMultipleTerms
- Promotional
- Regular
CAPricingItem:
description: Card Pricing
type: object
properties:
StartPromotionOrFutureTerms:
description: Describes the start date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
StopPromotionOrFutureTerms:
description: Describes the end date
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
LengthPromotionalInDays:
description: Describes the length if only a duration is given instead of a date
type: integer
DateOfChange:
description: Date of the change if it refers to future terms
type: string
pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$
ExchangeRateAdjustment:
description: The margin added, by certain card issuers, to the scheme rate in order to arrive at the exchange rate qouted as the reference exchange rate to the cardholder
type: string
pattern: ^-?\d{1,3}\.\d{1,4}$
additionalProperties: false
required:
- ProductState
- CAPricingItem
additionalProperties: false
minItems: 1
Eligibility:
description: Eligibility
type: object
properties:
AgeRestricted:
description: Indicates a customer's age is part of eligibility criteria
type: boolean
MinimumAge:
description: Minimum age, in years, required to hold an account
type: integer
MaximumAge:
description: Maximum age, in years, allowed to hold the account
type: integer
MaximumAgeToOpen:
description: Maximum age, in years, to open an account
type: integer
OtherFinancialHoldingRequired:
description: Indicates that it is necessary to hold another product with the bank in order to be eligible for this product or feature
type: boolean
Description:
description: One paragraph detailing the eligibility
type: string
IncomeTurnoverRelated:
description: Indicates if eligibility linked to income
type: boolean
SingleJointIncome:
description: Minimum Income Source. For certain products a minimum income is required. This can be mandated as to the single income or to a joint income. This field describes this
type: string
enum:
- Joint
- SoleIncome
- SoleOrJoint
- Turnover
MinimumIncomeTurnoverAmount:
description: Minimum income / Turnover required to hold the product
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
MinimumIncomeTurnoverCurrency:
description: Minimum income / Turnover Currency
type: string
pattern: '[A-Z]{3}'
IncomeCondition:
description: Stipulates any particular definition of income that applies to the income eligibility and/or method by which income must paid into the account (eg Salary DD)
type: string
MinIncomeTurnoverPaidIntoAccount:
description: Minimum Income Amount required to paid into the account
type: integer
MinimumIncomeFrequency:
description: The frequency that the minimum mentioned before is deposited in the account. Yearly is very important for premium accounts
type: string
enum:
- AcademicTerm
- HalfYearly
- Monthly
- Quarterly
- Weekly
- Yearly
AnnualBusinessTurnover:
description: Annual Business Turnover
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
AnnualBusinessTurnoverCurrency:
description: Annual Business Turnover Currency
type: string
pattern: '[A-Z]{3}'
ResidencyRestricted:
description: Indicates a customer's residency forms part of the eligibility criteria
type: boolean
ResidencyRestrictedRegion:
description: Indicates a customer must be current resident of a geographic area/country
type: string
enum:
- UK
- EEA
- EU
- EFTA
- GB - ENG
- GB - NIR
- GB - SCT
- GB - WLS
- IRL
MaxNumberOfAccounts:
description: Maximum number of the same prodcut the customer may hold
type: string
ThirdSectorOrganisations:
description: Is the product available to operate as a Clubs or Societies account?
type: boolean
MinimumDeposit:
description: A minimum deposit required to hold this account
type: boolean
OpeningDepositMinimum:
description: Minimum Amount to be held on account
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
OpeningDepositMinimumCurrency:
description: The currency of the Minimum Amount to be depositing at opening
type: string
pattern: '[A-Z]{3}'
MinimumOperatingBalanceExists:
description: Is there a Minimum Operating Balance?
type: boolean
MinimumOperatingBalance:
description: Minimum Operating Balance
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
MinimumOperatingBalanceCurrency:
description: Minimum Operating Balance currency
type: string
pattern: '[A-Z]{3}'
MaximumOpeningAmount:
description: A maximum amount to be deposited at opening
type: boolean
OpeningDepositMaximumAmount:
description: Maximum Amount to be depositing at opening
type: string
pattern: ^-?\d{1,10}\.\d{1,2}$
OpeningDepositMaximumCurrency:
description: The currency of the Minimum Amount to be depositing at opening
type: string
pattern: '[A-Z]{3}'
EligibilityName:
description: Free text description, denotes non standard eligibilities not included in the code list
type: string
EligibilityType:
description: Eligibility type
type: string
enum:
- AnyBusinessCustomer
- BusinessOnly
- CreditCard
- CreditScoring
- EmailAddress
- ExistingCustomers
- IdAndV
- Mortgage
- NoArrearsOnLoan
- NoCustomerInArrears
- NoOverOverdraftThirtyDays
- NoSoleUkAccountOrBankrupt
- NTB
- NTBBusiness
- SoleStudentAccount
- SoleUkAccount
- StudentsOnly
- TwoMonthsOfCourseStart
- UCASFulltimeTwoYears
EligibilityNotes:
description: Optional additional notes to supplement the eligibility conditions. Only used for very specific conditions
type: string
PreviousBankruptcy:
description: Describes if a previous bankruptcy / insolvency disqualfies for this account Details in ELI-280
type: boolean
MarketingEligibility:
type: array
items:
description: Specific eligibility for marketing
type: string
enum:
- ExistingCustomers
- NewCustomersOnly
- SwitchersOnly
- StartUp
uniqueItems: true
required:
- AgeRestricted
- OtherFinancialHoldingRequired
- Description
- IncomeTurnoverRelated
- ResidencyRestricted
- ThirdSectorOrganisations
- PreviousBankruptcy
additionalProperties: false
CreditInterest:
description: Credit Interest
type: object
pr
# --- truncated at 32 KB (128 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/starling-bank/refs/heads/main/openapi/starling-bank-pca-api-openapi.yml