BCB Group Virtual Accounts API

The Virtual Accounts API from BCB Group — 6 operation(s) for virtual accounts.

OpenAPI Specification

bcb-group-virtual-accounts-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: BCB Group Payments Accounts Virtual Accounts API
  description: This is the api documentation for the BCB Group Payments API
  version: 1.0.0
  contact: {}
servers:
- url: https://api.bcb.group
  description: Production
- url: https://api.uat.bcb.group
  description: Sandbox
tags:
- name: Virtual Accounts
paths:
  /v1/accounts/{accountId}/virtual/all-account-data:
    get:
      summary: List Accounts
      description: List all virtual accounts for the given segregated account
      operationId: VirtualAccounts_ListAccountsV1
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      - name: pageIndex
        required: false
        in: query
        description: The page offset of results to return
        schema:
          minimum: 0
          maximum: 1.7976931348623157e+308
          default: 0
          type: number
      - name: pageSize
        required: false
        in: query
        description: The limit of number of results to return
        schema:
          minimum: 1
          maximum: 1000
          default: 1000
          type: number
      responses:
        '200':
          description: The virtual accounts were retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedVirtualAccountDataResponse'
        '404':
          description: The accountId is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
  /v1/accounts/{accountId}/virtual/{iban}/payment:
    post:
      summary: Make a Payment
      description: Sends a payment from the virtual account with the given IBAN
      operationId: VirtualAccounts_AuthorisePaymentV1
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      - name: iban
        required: true
        in: path
        description: The IBAN of the virtual account
        schema:
          example: GB33BUKB20201555555555
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualAccountPaymentBody'
      responses:
        '201':
          description: The payment was successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountPaymentResponse'
        '404':
          description: The accountId or IBAN is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
  /v1/accounts/{accountId}/virtual/{iban}/close:
    post:
      summary: Close Virtual Account
      description: Closes the virtual account with the given IBAN
      operationId: VirtualAccounts_CloseVirtualAccountV1
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      - name: iban
        required: true
        in: path
        description: The IBAN of the virtual account
        schema:
          example: GB33BUKB20201555555555
          type: string
      responses:
        '202':
          description: The virtual account closure request was received successfully
        '404':
          description: The accountId or IBAN is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
  /v2/accounts/{accountId}/virtual:
    post:
      summary: Create Virtual Account
      description: "Creates new virtual accounts for the given owners (max 1000 owners). \n\t\tRequest body differs for individual vs company owners, and GBP vs EUR virtual accounts.\n\t\tIt is possible to create virtual accounts without owner bank details - see CreateNoBankDetailsVirtualAccount schemas.\n\t\tIt is not possible to make payments out of virtual accounts without owner bank details."
      operationId: VirtualAccounts_CreateVirtualAccountV2
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                anyOf:
                - $ref: '#/components/schemas/CreateEURLocalVirtualAccountForCompany'
                - $ref: '#/components/schemas/CreateEURLocalVirtualAccountForIndividual'
                - $ref: '#/components/schemas/CreateGBPLocalVirtualAccountForCompany'
                - $ref: '#/components/schemas/CreateGBPLocalVirtualAccountForIndividual'
                - $ref: '#/components/schemas/CreateInternationalVirtualAccountForCompany'
                - $ref: '#/components/schemas/CreateInternationalVirtualAccountForIndividual'
                - $ref: '#/components/schemas/CreateNoBankDetailsVirtualAccountForCompany'
                - $ref: '#/components/schemas/CreateNoBankDetailsVirtualAccountForIndividual'
      responses:
        '202':
          description: The virtual account creation request was received successfully
        '404':
          description: The accountId is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
  /v1/accounts/{accountId}/virtual/{iban}/owner-address:
    put:
      summary: Update Owner Address
      description: Updates the owner address for the virtual account with the given IBAN
      operationId: VirtualAccounts_UpdateOwnerAddressV1
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      - name: iban
        required: true
        in: path
        description: The IBAN of the virtual account
        schema:
          example: GB33BUKB20201555555555
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOwnerAddressRequest'
      responses:
        '200':
          description: The owner address was updated successfully
        '400':
          description: The request is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The accountId or iban is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
  /v1/accounts/{accountId}/virtual/{iban}/owner-bank-details:
    put:
      summary: Update Owner Bank Details
      description: Updates the owner bank details for the virtual account with the given IBAN
      operationId: VirtualAccounts_UpdateOwnerBankDetailsV1
      parameters:
      - name: accountId
        required: true
        in: path
        description: The account id for the segregated account
        schema:
          example: 123
          type: number
      - name: iban
        required: true
        in: path
        description: The IBAN of the virtual account
        schema:
          example: GB33BUKB20201555555555
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/UpdateEUROwnerBankDetailsRequest'
              - $ref: '#/components/schemas/UpdateGBPOwnerBankDetailsRequest'
      responses:
        '200':
          description: The owner bank details were updated successfully
        '400':
          description: The request is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The accountId or iban is unknown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Virtual Accounts
      security:
      - bearer: []
components:
  schemas:
    PendingVirtualAccountDetails:
      type: object
      properties:
        id:
          type: string
          description: The ID of the virtual account
          example: 71c33ef0-4af9-4814-b81e-d5f4dfa96dec
        status:
          type: string
          description: The status of the virtual account
          example: PENDING
      required:
      - id
      - status
    UpdateGBPOwnerBankDetailsRequest:
      type: object
      properties:
        iban:
          type: string
          description: The IBAN of the virtual account owner's bank account - optional for GBP accounts
          example: GB33BUKB20201555555555
        accountNumber:
          type: string
          description: The 8-digit account number of the virtual account owner's bank account - mandatory for GBP accounts
          example: '12345678'
        sortCode:
          type: string
          description: The 6-digit sort code of the virtual account owner's bank account - mandatory for GBP accounts
          example: '000000'
        bicSwift:
          type: string
          description: The BIC of the virtual account owner's bank account - optional for GBP accounts
          example: BARCGB22XXX
      required:
      - accountNumber
      - sortCode
    CreateNoBankDetailsVirtualAccountForIndividual:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
          maxLength: 255
        name:
          type: string
          description: The name of the virtual account owner. Must contain at least two words separated by a space. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: GBP Test Individual
          maxLength: 255
        addressLine1:
          type: string
          description: The first line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: One London Wall
          maxLength: 1023
        addressLine2:
          type: string
          description: The second line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: 6th Floor
          maxLength: 1023
        addressLine3:
          type: string
          description: The third line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          maxLength: 1023
        city:
          type: string
          description: The postal city or town of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: London
          maxLength: 255
        region:
          type: string
          description: The region (e.g. county, state, province, etc.) of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Greater London
          maxLength: 255
        postcode:
          type: string
          description: The postal code (e.g. postcode, zip code, etc.) of the virtual account owner. Postcode is required for CHAPS payments. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: EC2Y 5EB
          maxLength: 255
        country:
          type: string
          description: The 2-letter country code of the virtual account owner's bank account
          example: GB
          minLength: 2
          maxLength: 2
        nationality:
          type: string
          description: The 2-letter country code for the virtual account owner's nationality
          example: GB
          minLength: 2
          maxLength: 2
        dateOfBirth:
          type: string
          description: The date of birth of the virtual account owner - only applicable to an individual
          example: '2000-12-31'
          pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}'
        isIndividual:
          type: boolean
          description: Whether the virtual account owner is an individual as opposed to a corporation
          example: true
      required:
      - name
      - addressLine1
      - city
      - country
      - nationality
      - dateOfBirth
      - isIndividual
    CreateEURLocalVirtualAccountForCompany:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
          maxLength: 255
        name:
          type: string
          description: The name of the virtual account owner. Must contain at least two words separated by a space. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: EUR Test Company
          maxLength: 255
        addressLine1:
          type: string
          description: The first line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: Friedrichstrasse
          maxLength: 1023
        addressLine2:
          type: string
          description: The second line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: '100'
          maxLength: 1023
        addressLine3:
          type: string
          description: The third line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          maxLength: 1023
        city:
          type: string
          description: The postal city or town of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Berlin
          maxLength: 255
        region:
          type: string
          description: The region (e.g. county, state, province, etc.) of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Berlin
          maxLength: 255
        postcode:
          type: string
          description: The postal code (e.g. postcode, zip code, etc.) of the virtual account owner. Postcode is required for CHAPS payments. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: '10115'
          maxLength: 255
        country:
          type: string
          description: The 2-letter country code of the virtual account owner's EUR bank account
          example: DE
          minLength: 2
          maxLength: 2
        nationality:
          type: string
          description: The 2-letter country code for the virtual account owner's nationality
          example: DE
          minLength: 2
          maxLength: 2
        registrationNumber:
          type: string
          description: The registration number of the virtual account owner - only applicable to a corporation. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: AB123456
          maxLength: 100
        isIndividual:
          type: boolean
          description: Whether the virtual account owner is an individual as opposed to a corporation
          example: false
        iban:
          type: string
          description: The IBAN of the virtual account owner's EUR bank account
          example: DE53202208000099106929
        bicSwift:
          type: string
          description: The BIC of the virtual account owner's EUR bank account
          example: MHSBDEHBXXX
      required:
      - name
      - addressLine1
      - city
      - country
      - nationality
      - isIndividual
      - iban
      - bicSwift
    CreateEURLocalVirtualAccountForIndividual:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
          maxLength: 255
        name:
          type: string
          description: The name of the virtual account owner. Must contain at least two words separated by a space. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: EUR Test Individual
          maxLength: 255
        addressLine1:
          type: string
          description: The first line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: Friedrichstrasse
          maxLength: 1023
        addressLine2:
          type: string
          description: The second line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: '100'
          maxLength: 1023
        addressLine3:
          type: string
          description: The third line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          maxLength: 1023
        city:
          type: string
          description: The postal city or town of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Berlin
          maxLength: 255
        region:
          type: string
          description: The region (e.g. county, state, province, etc.) of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Berlin
          maxLength: 255
        postcode:
          type: string
          description: The postal code (e.g. postcode, zip code, etc.) of the virtual account owner. Postcode is required for CHAPS payments. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: '10115'
          maxLength: 255
        country:
          type: string
          description: The 2-letter country code of the virtual account owner's EUR bank account
          example: DE
          minLength: 2
          maxLength: 2
        nationality:
          type: string
          description: The 2-letter country code for the virtual account owner's nationality
          example: DE
          minLength: 2
          maxLength: 2
        dateOfBirth:
          type: string
          description: The date of birth of the virtual account owner
          example: '2000-12-31'
          pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}'
        isIndividual:
          type: boolean
          description: Whether the virtual account owner is an individual as opposed to a corporation
          example: true
        iban:
          type: string
          description: The IBAN of the virtual account owner's EUR bank account
          example: DE53202208000099106929
        bicSwift:
          type: string
          description: The BIC of the virtual account owner's EUR bank account
          example: MHSBDEHBXXX
      required:
      - name
      - addressLine1
      - city
      - country
      - nationality
      - dateOfBirth
      - isIndividual
      - iban
      - bicSwift
    IbanVirtualAccountOwnerDetails:
      type: object
      properties:
        name:
          type: string
          description: The name of the virtual account owner
        iban:
          type: string
          description: The IBAN of the virtual account owner
          example: DK5000400440116243
        bic:
          type: string
          description: The bic of the virtual account owner
          example: SXPYDKKK
      required:
      - name
      - iban
    CreateGBPLocalVirtualAccountForCompany:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
          maxLength: 255
        name:
          type: string
          description: The name of the virtual account owner. Must contain at least two words separated by a space. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: GBP Test Company
          maxLength: 255
        addressLine1:
          type: string
          description: The first line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: One London Wall
          maxLength: 1023
        addressLine2:
          type: string
          description: The second line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: 6th Floor
          maxLength: 1023
        addressLine3:
          type: string
          description: The third line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          maxLength: 1023
        city:
          type: string
          description: The postal city or town of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: London
          maxLength: 255
        region:
          type: string
          description: The region (e.g. county, state, province, etc.) of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Greater London
          maxLength: 255
        postcode:
          type: string
          description: The postal code (e.g. postcode, zip code, etc.) of the virtual account owner. Postcode is required for CHAPS payments. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: EC2Y 5EB
          maxLength: 255
        country:
          type: string
          description: The 2-letter country code of the virtual account owner's bank account
          example: GB
          minLength: 2
          maxLength: 2
        nationality:
          type: string
          description: The 2-letter country code for the virtual account owner's nationality
          example: GB
          minLength: 2
          maxLength: 2
        registrationNumber:
          type: string
          description: The registration number of the virtual account owner - only applicable to a corporation. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: AB123456
          maxLength: 100
        isIndividual:
          type: boolean
          description: Whether the virtual account owner is an individual as opposed to a corporation
          example: false
        iban:
          type: string
          description: The IBAN of the virtual account owner's bank account
          example: GB33BUKB20201555555555
        bicSwift:
          type: string
          description: The BIC of the virtual account owner's bank account
          example: BARCGB22XXX
        accountNumber:
          type: string
          description: The 8-digit account number of the virtual account owner's bank account - mandatory for GBP accounts
          example: '55555555'
        sortCode:
          type: string
          description: The 6-digit sort code of the virtual account owner's bank account - mandatory for GBP accounts
          example: '202015'
      required:
      - name
      - addressLine1
      - city
      - country
      - nationality
      - isIndividual
      - accountNumber
      - sortCode
    NoBankDetailsVirtualAccountOwnerDetails:
      type: object
      properties:
        name:
          type: string
          description: The name of the virtual account owner
      required:
      - name
    VirtualAccountPaymentBody:
      type: object
      properties:
        currency:
          type: string
          description: The currency code for the payment
          minLength: 3
          maxLength: 4
          example: GBP
        amount:
          type: string
          description: The amount of the payment
          example: '1.12'
        reference:
          type: string
          description: The reference for the payment
          minLength: 1
          maxLength: 255
          example: payment-ref
        nonce:
          type: string
          description: A unique nonce to guard against duplicate payments
          minimum: 1
          example: '1234567890123456'
        reason:
          type: string
          description: The reason for the payment
          minLength: 1
          maxLength: 255
          example: Internal transfer
      required:
      - currency
      - amount
      - reference
      - nonce
      - reason
    VirtualAccountPaymentResponse:
      type: object
      properties:
        transactionId:
          type: string
        end2EndId:
          type: string
      required:
      - transactionId
      - end2EndId
    CreateNoBankDetailsVirtualAccountForCompany:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
          maxLength: 255
        name:
          type: string
          description: The name of the virtual account owner. Must contain at least two words separated by a space. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: GBP Test Company
          maxLength: 255
        addressLine1:
          type: string
          description: The first line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: One London Wall
          maxLength: 1023
        addressLine2:
          type: string
          description: The second line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          example: 6th Floor
          maxLength: 1023
        addressLine3:
          type: string
          description: The third line of the address of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' ',' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+, ]+$
          maxLength: 1023
        city:
          type: string
          description: The postal city or town of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: London
          maxLength: 255
        region:
          type: string
          description: The region (e.g. county, state, province, etc.) of the virtual account owner. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: Greater London
          maxLength: 255
        postcode:
          type: string
          description: The postal code (e.g. postcode, zip code, etc.) of the virtual account owner. Postcode is required for CHAPS payments. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: EC2Y 5EB
          maxLength: 255
        country:
          type: string
          description: The 2-letter country code of the virtual account owner's bank account
          example: GB
          minLength: 2
          maxLength: 2
        nationality:
          type: string
          description: The 2-letter country code for the virtual account owner's nationality
          example: GB
          minLength: 2
          maxLength: 2
        registrationNumber:
          type: string
          description: The registration number of the virtual account owner - only applicable to a corporation. Only English alphabet letters, numbers, '/-?:().'+' and spaces are allowed (no leading spaces).
          pattern: ^(?! )[a-zA-Z0-9\/\-\?:().'\+ ]+$
          example: AB123456
          maxLength: 100
        isIndividual:
          type: boolean
          description: Whether the virtual account owner is an individual as opposed to a corporation
          example: false
      required:
      - name
      - addressLine1
      - city
      - country
      - nationality
      - isIndividual
    IbanRequestVirtualAccountDataResponse:
      type: object
      properties:
        correlationId:
          type: string
          description: The correlation ID provided on the account creation request. If you did not provide correlation ID, it will be generated
        virtualAccountDetails:
          description: The details of the virtual account
          oneOf:
          - $ref: '#/components/schemas/IbanVirtualAccountDetails'
          - $ref: '#/components/schemas/PendingVirtualAccountDetails'
        ownerDetails:
          description: The details of the virtual account owner
          oneOf:
          - $ref: '#/components/schemas/IbanVirtualA

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bcb-group/refs/heads/main/openapi/bcb-group-virtual-accounts-api-openapi.yml