openapi: 3.0.0 info: title: Account and Transaction API Specification Account Access Consents CCC API description: 'Swagger for Account and Transaction API Specification. **Please Note**: There are no optional fields, if a field is not marked as “Required” it is a Conditional field. ' termsOfService: https://www.openbanking.org.uk/terms contact: name: Service Desk email: ServiceDesk@openbanking.org.uk license: name: open-licence url: https://www.openbanking.org.uk/open-licence version: 4.0.1 servers: - url: /open-banking/v4.0/aisp tags: - name: CCC description: Endpoint for getting Commercial Credit Card data paths: /commercial-credit-cards: get: tags: - CCC description: Gets a list of all `Commerical Credit Card` objects. parameters: - name: If-Modified-Since type: string description: Used for conditional request, to retrieve data only if modified since a given date in: header required: false - name: If-None-Match type: string description: Used for conditional request, to retrieve data only if the given Etag value does not match in: header required: false responses: '200': description: Successful response with a list of `Commercial Credit Card` data headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header default: max-age=31536000 Etag: type: string description: A unique ID identifying whether this resource has changed Cache-Control: type: string description: Describes how long this response can be cached default: max-age=28800 X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff 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: Commercial Credit Card 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 ProductName: description: Name of the Commercial Credit Card type: string ProductType: description: Descriptive code for the product category type: string enum: - CommercialCreditCards ProductSegment: description: Marketing or industry segment that the product is designed for type: array items: description: Marketing or industry segment that the product is designed for type: string enum: - Cashback - Corporate - General - Reward - SME ProductIdentifier: description: Identifier within the parent organisation for the product. Must be unique in the organisation type: string 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 Description: description: Product description type: string KeyFeatures: description: Product key features type: string PaymentHoliday: description: Indicates whether a payment holiday is possible type: boolean PaymentHolidayDescription: description: Detailed description on the payment holiday if available type: string OtherKeyFeatures: description: Additional Features of the card type: string TsandCs: description: URL provided by the parent organisation which redirects to the current T&Cs. Only applies on live products type: array items: type: string minItems: 1 Details: description: 'Commercial Credit Card Group ' type: object properties: CCSubType: description: CCC Subtype Code type: string enum: - FutureMultipleTerms - Promotional - Regular CommercialCreditCardItem: description: 'Commercial Credit Card Item ' 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))$ MinimumCreditLimit: description: Minimum £500, maximum subject to status type: string pattern: ^-?\d{1,10}\.\d{1,2}$ RepaymentFrequency: description: Repayment frequency type: string enum: - Daily - Flexible - Fortnightly - HalfYearly - Monthly - Quarterly - Weekly - Yearly APRRate: description: Annual Percentage Rate type: string pattern: ^-?\d{1,3}\.\d{1,4}$ BalanceTransferInterestRatePeriod: description: The period used to define the specific interest rate for balance transfers type: string enum: - Annual - Monthly PurchaseRate: description: Purchase rate type: string pattern: ^-?\d{1,3}\.\d{1,4}$ BalanceTransferRate: description: Balance transfer rate type: string pattern: ^-?\d{1,3}\.\d{1,4}$ CashAdvanceRate: description: Cash advance rate type: string pattern: ^-?\d{1,3}\.\d{1,4}$ OverLimitFee: description: Fee applicable if the card was credited over its limit type: string pattern: ^-?\d{1,10}\.\d{1,2}$ MaximumNumberOfCardsPermitted: description: The maximum numbers of cards per account type: integer CardScheme: description: Card Scheme Code type: string enum: - Cashcard - CreditMastercard - CreditVisa AbilityToSetIndividualLimits: description: The ability to set separate limts on different cards in one account type: boolean AccessToOnlineDataReportingTool: description: Describes whether the account have access to an online tool for reprting on expenditure type: boolean CashWithdrawalsAllowed: description: Describes whether cash withdrawals are allowed type: boolean ConvenienceCheque: description: Describes whether the card account allow convenience cheques type: boolean DaysInterestFreeCreditIfPaymentFull: description: Describes how many interest free days are given if the card is fully paid at each term type: integer AnnualAccountFeeType: description: Details on annual account fee, such as non payable when there is a turnover above a certain sum type: string IssuingEmergencyCardsFees: description: Amount payable for issuing an emergency card type: string pattern: ^-?\d{1,10}\.\d{1,2}$ AnnualFeeAmount: description: Standard fee on the card type: string pattern: ^-?\d{1,10}\.\d{1,2}$ ChequeFeePercent: description: Percentage fee on convenience cheques type: string pattern: ^-?\d{1,3}\.\d{1,4}$ CashbackPercent: description: Percent of cashback on amount spend type: string pattern: ^-?\d{1,3}\.\d{1,4}$ FeesOnCheque: description: Percentage fee on a convenince cheques type: string pattern: ^-?\d{1,10}\.\d{1,2}$ MinimumRepaymentPercentage: description: Minimum repayment as percentage type: string pattern: ^-?\d{1,3}\.\d{1,4}$ MinimumRepaymentAmount: description: Minimum repayment amount type: string pattern: ^-?\d{1,10}\.\d{1,2}$ PaymentDaysAfterStatement: description: How many days after statement is the payment expected type: integer AllocationofRepayment: description: Allocation rules for repayment type: string RepaymentNotes: description: Additional notes type: string MinimumLendingAmount: description: The minimum lending available type: string pattern: ^-?\d{1,10}\.\d{1,2}$ StatementAtAccountLevel: description: Describes whether there is a statement at account level type: boolean StatementAtPersonalLevel: description: Describes whether there is a statement at card level type: boolean PaymentSchemeExchangeRate: description: The base exchange rate used in settlement of the transaction between issuer and scheme type: string pattern: ^-?\d{1,3}\.\d{1,4}$ 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}$ PaymentSchemeExchangeFee: description: Any payment network fee applied to some or all non-sterling transactions that the card issuer recover directly from the cardholder type: string pattern: ^-?\d{1,10}\.\d{1,2}$ PaymentSchemeExchangeFeeRate: description: Any payment network fee rate applied to some or all non-sterling transactions that the card issuer recover directly from the cardholder type: string pattern: ^-?\d{1,3}\.\d{1,4}$ NonSterlingTransactionFee: description: A fee applied to all non-Sterling card transactions type: string pattern: ^-?\d{1,10}\.\d{1,2}$ NonSterlingTransactionFeeRate: description: A fee rate applied to all non-Sterling card transactions type: string pattern: ^-?\d{1,3}\.\d{1,4}$ NonSterlingPurchaseFee: description: An additional fee applied to certain card retail transactions type: string pattern: ^-?\d{1,10}\.\d{1,2}$ NonSterlingPurchaseFeeRate: description: An additional fee rate applied to certain card retail transactions type: string pattern: ^-?\d{1,3}\.\d{1,4}$ NonSterlingCashFee: description: An additional fee applied to certain card cash withdrawals. This fee also applies to cash near fees such as gambling type: string pattern: ^-?\d{1,10}\.\d{1,2}$ NonSterlingCashFeeRate: description: An additional fee rate applied to certain card cash withdrawals. This fee also applies to cash near fees such as gambling type: string pattern: ^-?\d{1,3}\.\d{1,4}$ ForeignPurchaseFee: description: Additional card fee applied to sterling retail transactions made abroad type: string pattern: ^-?\d{1,10}\.\d{1,2}$ ForeignPurchaseFeeRate: description: Additional card fee rate applied to sterling retail transactions made abroad type: string pattern: ^-?\d{1,3}\.\d{1,4}$ ForeignCashFee: description: Additional card fee applied to sterling cash withdrawal made abroad type: string pattern: ^-?\d{1,10}\.\d{1,2}$ ForeignCashFeeRate: description: Additional card fee rate applied to sterling cash withdrawal made abroad type: string pattern: ^-?\d{1,3}\.\d{1,4}$ required: - MinimumCreditLimit - RepaymentFrequency - APRRate - PurchaseRate - CashAdvanceRate - CardScheme - AccessToOnlineDataReportingTool - CashWithdrawalsAllowed - ConvenienceCheque - DaysInterestFreeCreditIfPaymentFull - IssuingEmergencyCardsFees - AnnualFeeAmount - PaymentDaysAfterStatement - StatementAtAccountLevel - StatementAtPersonalLevel - ExchangeRateAdjustment additionalProperties: false required: - CCSubType - CommercialCreditCardItem additionalProperties: false 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 Benefits: description: Benefit type: object properties: Benefit: description: Describe one or more benefits if they exist type: boolean BenefitGroup: type: array items: description: Benefit Interest Group type: object properties: BenefitSubType: description: Benefit Subtype Code type: string enum: - FutureMultipleTerms - Promotional - Regular BenefitItem: description: Benefit Item 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 in days 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))$ BenefitDetail: type: array items: description: Benefit detail type: object properties: BenefitType: description: Type that represents the nature of the benefit type: string BenefitName: description: The name of the benefit type: string BenefitValue: description: The value or values permissible for a specific benefit for an individual product representing a product characteristic type: string DefaultToAccounts: description: Is the benefit part of the default account type: boolean BenefitID: description: Unique benefit identifier per organisation type: string CriteriaType: type: array items: description: Criteria that is required in order to be eligible for the Benefit type: string enum: - CashDeposit - Deposit - DirectDebit - InitialDeposit - InternetLogon - MobileLogon - RegularDeposit MinimumCriteria: description: Minimum amount for the criteria type: string pattern: ^-?\d{1,10}\.\d{1,2}$ MaximumCriteria: description: Maximum amount for the criteria type: string pattern: ^-?\d{1,10}\.\d{1,2}$ Counter: description: Counter for the criteria (e.g. number of DD) type: integer BenefitDescription: description: A textual explanation of what the benefit is type: string PromotionStartDate: description: If the benefit is temporal the start date is when the benefit comes into effect type: string pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$ PromotionEndDate: description: If the benefit is temporal the end date is when the benefit is no longer applicable type: string pattern: ^[0-9]{4}-(0[1-9]|(1[0|1|2]))-((0[1-9])|((1|2)[0-9])|(30|31))$ additionalProperties: false additionalProperties: false required: - BenefitItem additionalProperties: false required: - Benefit additionalProperties: false required: - Organisation - ProductName - ProductType - ProductIdentifier - ProductURL - Description - KeyFeatures - PaymentHoliday - TsandCs - Details - Eligibility - Benefits additionalProperties: false required: - meta - data additionalProperties: false '400': description: You have sent a request which could not be understood. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: 400 Error object type: object properties: status: type: string enum: - '400' title: type: string enum: - Bad request description: type: string enum: - You have sent a request which could not be understood. required: - status - title - description additionalProperties: false '408': description: Your client has failed to submit a request, and a timeout has occurred. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: 408 Error object type: object properties: status: type: string enum: - '408' title: type: string enum: - Client timeout description: type: string enum: - Your client has failed to submit a request, and a timeout has occurred. required: - status - title - description additionalProperties: false '429': description: You have requested this resource too often. Slow down. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: 429 Error object type: object properties: status: type: string enum: - '429' title: type: string enum: - Too many requests description: type: string enum: - You have requested this resource too often. Slow down. required: - status - title - description additionalProperties: false '500': description: An error occurred on the server. No further information is available. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: 500 Error object type: object properties: status: type: string enum: - '500' title: type: string enum: - Internal server error description: type: string enum: - An error occurred on the server. No further information is available. required: - status - title - description additionalProperties: false '503': description: The service is temporarily unavailable. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: 503 Error object type: object properties: status: type: string enum: - '503' title: type: string enum: - Service temporarily unavailable description: type: string enum: - The service is temporarily unavailable. required: - status - title - description additionalProperties: false default: description: A standard error response. headers: Strict-Transport-Security: type: string description: HTTPS strict transport security header X-Frame-Options: type: string description: Prevent this request from being loaded in any iframes default: DENY X-Content-Type-Options: type: string description: Ensures each page has a content type and prevents browsers from doing MIME type sniffing default: nosniff Status Code: type: integer description: The HTTP status code defining the error default: 400 schema: title: Error object type: object properties: status: description: This corresponds to the HTTP status code type: string title: description: A short title of the type of error type: string description: description: Further details describing the error type: string required: - status - title - description additionalProperties: false head: tags: - CCC description: Gets header information on the current set of `Commerical Credit Card` data parameters: - name: If-Modified-Since type: string description: Used for conditional request, to retrieve data only if modified since a given date in: header required: false - name: If-None-Match type: string description: Used for conditional request, to retrieve data only if the given Etag value does not match in: header required: false responses: default: description: No response schema: title: No response type: object properties: {} components: 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