Optional. The record from which the response should be displayed (default: 1).
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.
- Account details retrieval
- Internal transfers
- Payments (Swift)
- Virtual Accounts
- Transaction information access
- Robust security and compliance
- Comprehensive documentation
Request
Registers a webhook subscription to receive real-time deposit notifications.
This endpoint is part of a two-stage deposit notification system:
Stage 1: Subscription Setup (this endpoint)
- Customers register their webhook URL and topic (e.g., "Deposits")
- The system stores the subscription with optional custom headers
- Subscriptions can be activated or deactivated
Stage 2: Webhook Delivery
- The system matches received events with active subscriptions
- Webhooks are delivered to registered endpoints with retry logic
When a deposit matches your subscription, you'll receive a POST request to your webhook URL containing:
{
"subscriptionId": "e2a55504-3924-4b48-9d7e-540efcd6fa30",
"topic": "Deposits",
"accountNumber": "1046406142",
"transactionId": "FT2384654NXF6",
"type": "Credit",
"value": {
"amount": "1000.00",
"currency": "USD"
},
"transactionType": "Swift payment",
"transactionDetails": "Payment details"
}The webhook payload is defined by the NotificationResponse model.
Webhook requests are signed for authenticity and replay protection.
- Asymmetric option (RSA-PSS + SHA-256): When response signing is enabled for your client configuration, webhooks include
Bcb-Signature,Bcb-Timestamp,Bcb-Nonce, andBcb-Signature-Version(e.g.,rsa-v1). Verify using the bank public key from/v1/.well-known/jwks.jsonand the canonical string{timestamp}{nonce}{METHOD}{path}{body}. - HMAC option: If
Bcb-Signature-Versionis absent, the webhook uses your Message Signing Secret returned by the credentials endpoints. Use the same signature string{timestamp}{nonce}{METHOD}{path}{body}and compare an HMAC-SHA256 hash. - Replay protection: Enforce ±5 minute timestamp tolerance and reject any repeated
{timestamp}:{nonce}pairs (cache the nonce for 5 minutes). See the Message Signing guide for full RSA and HMAC verification examples.
This endpoint supports idempotency through the optional Idempotency-Key header:
- If no idempotency key is provided, the request is processed normally
- If a valid UUID idempotency key is provided, the system prevents duplicate subscriptions
- The idempotency key must be a valid UUID format (e.g., "123e4567-e89b-12d3-a456-426614174000")
Required Permission: receive-notifications
This endpoint requires the permission claim receive-notifications 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.
- Mock serverhttps://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions
- UAT Environment - Used for testing and integration purposeshttps://api-uat.bcb.bm/v1/notifications/subscriptions
- Production Environment - Live environment for production usehttps://api.bcb.bm/v1/notifications/subscriptions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions \
-H 'Authorization: Bearer <YOUR_jwt_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"topic": "Deposits",
"callbackUrl": "https://your-webhook-endpoint.example.com/notifications/deposits",
"customHeaders": {
"X-Custom-Header": "your-custom-value",
"X-Api-Key": "your-api-key"
}
}'{ "subscriptionId": "e2a55504-3924-4b48-9d7e-540efcd6fa30", "topic": 0, "webhookUrl": "https://your-webhook-endpoint.example.com/notifications/deposits", "isActive": true, "createdUtc": "2025-01-15T11:30:00.0000000+01:00", "updatedUtc": "2025-01-15T11:30:00.0000000+01:00", "customHeaders": { "X-Custom-Header": "your-custom-value", "X-Api-Key": "your-api-key" } }
Request
Retrieves all notification subscriptions for the authenticated client with pagination support.
- Use
pageStartto specify the starting page (default: 1) - Use
pageSizeto specify the number of items per page (default: 100, max: 500) - The response includes total count and pagination metadata
Returns a paginated list of subscriptions, each containing:
- Subscription ID (guid)
- Topic (e.g., "Deposits")
- Webhook URL
- Status (IsActive flag)
- Creation and update timestamps
- Only returns subscriptions owned by the authenticated client
- Includes both active and inactive subscriptions
- Results are ordered by creation date (newest first)
Required Permission: receive-notifications
This endpoint requires the permission claim receive-notifications 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.
- Mock serverhttps://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions
- UAT Environment - Used for testing and integration purposeshttps://api-uat.bcb.bm/v1/notifications/subscriptions
- Production Environment - Live environment for production usehttps://api.bcb.bm/v1/notifications/subscriptions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions?pageStart=0&pageSize=0' \
-H 'Authorization: Bearer <YOUR_jwt_HERE>'{ "meta": { "pagination": { … } }, "data": [ { … }, { … } ] }
Request
Deactivates an existing notification subscription. Once deactivated:
- The subscription will no longer receive webhook notifications
- Future deposits will not be matched to this subscription
- In-flight notifications will continue to be delivered
- The subscription record remains in the system but with IsActive=false
- Only the subscription owner can deactivate their own subscription
- Attempting to deactivate another client's subscription returns 404 Not Found
- Deactivating an already inactive subscription is idempotent (returns success)
This endpoint supports idempotency through the optional Idempotency-Key header:
- If a valid UUID idempotency key is provided, repeated calls with the same key return the same result
- The idempotency key must be a valid UUID format (e.g., "123e4567-e89b-12d3-a456-426614174000")
Required Permission: receive-notifications
This endpoint requires the permission claim receive-notifications 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.
- Mock serverhttps://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions/{subscriptionId}
- UAT Environment - Used for testing and integration purposeshttps://api-uat.bcb.bm/v1/notifications/subscriptions/{subscriptionId}
- Production Environment - Live environment for production usehttps://api.bcb.bm/v1/notifications/subscriptions/{subscriptionId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions/{subscriptionId}' \
-H 'Authorization: Bearer <YOUR_jwt_HERE>'{ "subscriptionId": "e2a55504-3924-4b48-9d7e-540efcd6fa30", "topic": 0, "webhookUrl": "https://your-webhook-endpoint.example.com/notifications/deposits", "isActive": true, "createdUtc": "2025-01-15T11:30:00.0000000+01:00", "updatedUtc": "2025-01-15T11:30:00.0000000+01:00", "customHeaders": { "X-Custom-Header": "your-custom-value", "X-Api-Key": "your-api-key" } }
Request
Retrieves a specific notification subscription by its unique identifier.
The response includes:
- Subscription ID (guid)
- Topic (e.g., "Deposits")
- Webhook URL
- Status (IsActive flag)
- Creation and update timestamps
- Client association
- Only the subscription owner can retrieve their own subscription
- Attempting to retrieve another client's subscription returns 404 Not Found
Required Permission: receive-notifications
This endpoint requires the permission claim receive-notifications 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.
- Mock serverhttps://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions/{subscriptionId}
- UAT Environment - Used for testing and integration purposeshttps://api-uat.bcb.bm/v1/notifications/subscriptions/{subscriptionId}
- Production Environment - Live environment for production usehttps://api.bcb.bm/v1/notifications/subscriptions/{subscriptionId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.bcb.bm/_mock/apis/open-banking-api/open-banking-api/v1/notifications/subscriptions/{subscriptionId}' \
-H 'Authorization: Bearer <YOUR_jwt_HERE>'{ "subscriptionId": "e2a55504-3924-4b48-9d7e-540efcd6fa30", "topic": 0, "webhookUrl": "https://your-webhook-endpoint.example.com/notifications/deposits", "isActive": true, "createdUtc": "2025-01-15T11:30:00.0000000+01:00", "updatedUtc": "2025-01-15T11:30:00.0000000+01:00", "customHeaders": { "X-Custom-Header": "your-custom-value", "X-Api-Key": "your-api-key" } }