Skip to content

Bermuda Commercial Bank RESTful Open Banking API Implementation (v1)

The Bermuda Commercial Bank (BCB) RESTful Open Banking API provides secure, programmatic access to BCB's banking services, enabling developers to integrate financial services into their applications.

Key Features

  • Account details retrieval
  • Internal transfers
  • Payments (Swift)
  • Virtual Accounts
  • Transaction information access
  • Robust security and compliance
  • Comprehensive documentation

Available Environments

UAT Environment

URL: https://api-uat.bcb.bm

Purpose: Testing and integration

Production Environment

URL: https://api.bcb.bm

Purpose: Live production use

Download OpenAPI description
Overview
URL
Bermuda Commercial Bank Limited, 34 Bermudiana Road, Hamilton HM 11, Bermuda
Languages
Servers
Mock server
https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/
UAT Environment - Used for testing and integration purposes
https://api-uat.bcb.bm/
Production Environment - Live environment for production use
https://api.bcb.bm/

Accounts

Operations

Payments

Operations

Credentials

Operations

Testing

Operations

Create a test SWIFT deposit

Request

Creates a SWIFT deposit in the system using test-environment data and returns the created deposit details. This endpoint is available only in non-production environments and is intended for integration testing, validation of payload formatting, and pre-production workflow checks.

Although the route contains the word simulate, the request creates a deposit record in the system. If there is a matching and active deposit notification subscription, the created deposit may also trigger a deposit notification workflow.

Content Negotiation

Clients must use the HTTP Accept header to indicate the desired response format:

  • Set Accept: application/json for JSON responses (default) If the Accept header is omitted, application/json is assumed.

Headers

  • Authorization: Bearer {token}
  • Idempotency-Key: {uuid} (optional, but recommended for safe retries)

Validation Rules / Constraints

  • creditAccountNumber is required and must not exceed 36 characters.
  • instructedAmount.currency is required and must be a 3-letter ISO currency code.
  • instructedAmount.amount is required and must be a valid decimal number with up to 2 decimal places.
  • externalAccountNumber is required and must not exceed 34 characters.
  • orderingBank is required and must not exceed 35 characters.
  • orderingCustomer must contain between 1 and 4 lines, each up to 35 characters.
  • remittanceInformation must contain at least 1 line, up to 4 lines total, each up to 35 characters.

Request / Response Signing

This endpoint uses request signature verification and response signing. Clients should sign requests according to their configured signing method, and should verify the signature on the response when response signing is enabled for their API credentials.

Base URL

All API requests use the versioned base URL:

https://api.bcb.bm/v1/test-deposits/swift/simulate

Sample Request in JavaScript

async function simulateDeposit(token, idempotencyKey) {
  const response = await fetch('https://api.bcb.bm/v1/test-deposits/swift/simulate', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Idempotency-Key': idempotencyKey
    },
    body: JSON.stringify({
      creditAccountNumber: '1000078766',
      instructedAmount: {
        currency: 'USD',
        amount: '5000.00'
      },
      externalAccountNumber: 'GB29NWBK60161331926819',
      orderingBank: 'DEUTDEFF',
      orderingCustomer: [
        'Global Trading Corp',
        '100 Finance Street',
        'London, EC2V 8AB'
      ],
      remittanceInformation: [
        'Invoice INV-2024-0042',
        'Q1 advisory fees'
      ]
    })
  });
            
  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.message || 'Deposit simulation failed');
  }
            
  return await response.json();
}

Required Permission: simulate-deposit

This endpoint requires the permission claim simulate-deposit to be present in the JWT token. These permissions are embedded in the token during the authentication process and cannot be modified afterward. The token must be obtained with the appropriate permissions to access this endpoint.

Security
(Authorization and Feature Permissions) or Authorization
Bodyapplication/json

The SWIFT deposit details to create, including the credit account, instructed amount, ordering party, and remittance information.

creditAccountNumberstring[ 1 .. 36 ] charactersrequired
instructedAmountobject(CurrencyAmount)required
instructedAmount.​currencystringrequired

Currency ISO code

instructedAmount.​amountstringrequired

Amount

externalAccountNumberstring[ 1 .. 34 ] charactersrequired
orderingBankstring[ 1 .. 35 ] charactersrequired
orderingCustomerArray of stringsrequired
remittanceInformationArray of stringsrequired
curl -i -X POST \
  https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/test-deposits/swift/simulate \
  -H 'Authorization: Bearer <YOUR_jwt_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "creditAccountNumber": 1000078766,
    "instructedAmount": {
      "currency": "USD",
      "amount": 5000
    },
    "externalAccountNumber": "GB29NWBK60161331926819",
    "orderingBank": "DEUTDEFF",
    "orderingCustomer": [
      "Global Trading Corp",
      "100 Finance Street",
      "London, EC2V 8AB"
    ],
    "remittanceInformation": [
      "Invoice INV-2024-0042",
      "Q1 advisory fees"
    ]
  }'

Responses

OK - The test deposit was created successfully.

Bodyapplication/json
idstringrequired
statusstringrequired
transactionStatusstringrequired
uniqueIdentifierstringrequired
detailsobject(DepositSimulationResponseDetails)required
details.​amountCreditedobject(CurrencyAmount)required
details.​amountCredited.​currencystringrequired

Currency ISO code

details.​amountCredited.​amountstringrequired

Amount

details.​amountDebitedobject(CurrencyAmount)required
details.​amountDebited.​currencystringrequired

Currency ISO code

details.​amountDebited.​amountstringrequired

Amount

details.​orderingBankstringrequired
details.​debitCurrencystringrequired
details.​creditAccountNumberstringrequired
details.​instructedAmountobject(CurrencyAmount)required
details.​instructedAmount.​currencystringrequired

Currency ISO code

details.​instructedAmount.​amountstringrequired

Amount

details.​externalAccountNumberstringrequired
details.​orderingCustomerArray of objects(UnstructuredInformation)required
details.​orderingCustomer[].​unstructuredstringrequired

The narrative text (e.g. remittance line, beneficiary note, etc.).

details.​remittanceInformationArray of objects(UnstructuredInformation)required
details.​remittanceInformation[].​unstructuredstringrequired

The narrative text (e.g. remittance line, beneficiary note, etc.).

linkedActivitiesArray of objects(Activity)required
linkedActivities[].​idstringrequired

The unique identifier for the activity.

linkedActivities[].​transactionStatusstringrequired

The current processing status of the transaction.

linkedActivities[].​statusstringrequired

The general status of the activity.

linkedActivities[].​uniqueIdentifierstring or null

A unique identifier specific to this instance of the activity.

linkedActivities[].​activityDetailsobjectrequired
linkedActivities[].​activityDetails.​arrangementIdstringrequired

Unique identifier for the arrangement associated with this activity.

linkedActivities[].​activityDetails.​activityIdstringrequired

Identifier for the type of activity.

linkedActivities[].​activityDetails.​productIdstringrequired

Product identifier related to the activity.

linkedActivities[].​activityDetails.​currencyIdstringrequired

Currency code for the activity.

linkedActivities[].​activityDetails.​effectiveDatestringrequired

Date when the activity becomes effective.

Response
application/json
{ "id": "DEP-SIM-20240321-001", "status": "success", "transactionStatus": "SIMULATED", "uniqueIdentifier": "dep-sim-uid-001", "details": { "amountCredited": { … }, "amountDebited": { … }, "orderingBank": "DEUTDEFF", "debitCurrency": "USD", "creditAccountNumber": 1000078766, "instructedAmount": { … }, "externalAccountNumber": "GB29NWBK60161331926819", "orderingCustomer": [ … ], "remittanceInformation": [ … ] }, "linkedActivities": [ { … } ] }

Fx Quotes

Operations

Internal Transfers

Operations

Public Keys

Operations

Token

Operations

Transactions

Operations

Virtual Accounts

Operations

Notifications

Operations

Background Jobs

Operations

System

Operations