The Bank of London · AsyncAPI Specification
The Bank Of London Webhooks
Version
View Spec
View on GitHub
CompanyBankingClearing BankPaymentsBanking as a ServiceEmbedded FinanceOpen BankingPSD2Faster PaymentsFinancial-ServicesUnited KingdomVirtual AccountsAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-30'
method: searched
source: >-
https://developer.bankoflondon.com/docs/guides/manage-webhooks-guide +
openapi/the-bank-of-london-api-openapi.json (Webhook Management tag, components.schemas.WebhookEvent)
summary: >-
The Bank of London publishes a real, well-specified webhook surface — six event types, a versioned
payload envelope, PS256 JWS signature verification with a per-webhook public key the caller
retrieves at creation time, a documented 15-attempt retry ladder, and explicit at-least-once /
unordered delivery semantics. It does NOT publish an AsyncAPI document; no /asyncapi.json or
/asyncapi.yaml exists on any host and the docs reference none. This artifact is the webhook catalog,
and apis.yml carries a `Webhooks` pointer — not an `AsyncAPI` one.
asyncapi_document:
published: false
checked: '2026-08-30'
note: >-
No AsyncAPI spec is served by the provider. None is authored here — the pipeline does not
fabricate an event contract on a provider's behalf.
transport: HTTPS POST to a subscriber-supplied endpoint
subscription_management:
api_tag: Webhook Management
operations:
- operationId: CreateWebhook
http: POST /v2/webhooks
note: Returns the public key to store for signature verification.
- operationId: GetWebhooks
http: GET /v2/webhooks
- operationId: PatchWebhook
http: PATCH /v2/webhooks/{id}
- operationId: DeleteWebhook
http: DELETE /v2/webhooks/{id}
- operationId: CreateTestEvent
http: POST /v2/webhooks/{id}/create-test-event
- operationId: RegenerateWebhookKey
http: POST /v2/webhooks/{id}/regenerate-key
configuration:
- url — the HTTPS endpoint events are delivered to
- events — the event types subscribed to
- version — the API version that fixes the object schema of the `data` property
events:
- type: PAYMENT_PENDING
object: Payment
description: Payment has been created and is PENDING or SCHEDULED.
- type: PAYMENT_SUCCESSFUL
object: Payment
description: Payment has become SUCCESSFUL.
- type: PAYMENT_FAILED
object: Payment
description: Payment has been updated with a status of REJECTED or FAILED.
- type: TRANSACTION_SUCCESSFUL
object: Transaction
description: A transaction has been created and successfully settled.
- type: TRANSACTION_EXPORT_SUCCESSFUL
object: TransactionExport
description: A transaction export has completed successfully.
- type: TRANSACTION_EXPORT_FAILED
object: TransactionExport
description: A transaction export has failed.
extensible: true
extensibility_warning: >-
The contract states event type values are extensible and new values can be added without a major
version change; consumers must default-case unknown types.
payload_envelope:
fields:
- name: id
description: Unique identifier of the event (use it to de-duplicate).
- name: eventType
description: The event type, e.g. PAYMENT_FAILED.
- name: eventVersion
description: The API version of the event, e.g. 2. Fixes the schema of `data`.
- name: data
description: The event object, in the format of the API response for that type.
- name: timestamp
description: When the event occurred within the system — the field to sort on, since ordering is not guaranteed.
security:
mechanism: detached JWS in the x-jws-signature request header on the delivered webhook
algorithm: PS256
key_distribution: >-
A key pair is generated per webhook at creation; the public key is returned in the CreateWebhook
response for the subscriber to store, and the private key is held by the bank, bound to the
environment (Sandbox or Live) whose API key created it. RegenerateWebhookKey rotates it.
jws_payload_claims:
- name: content-digest
description: Request body hashed with SHA-256, expressed as a hexadecimal number.
- name: created
description: Creation time as an integer UNIX timestamp; usable for replay prevention.
delivery_semantics:
acknowledgement: HTTP 200 from the subscriber endpoint
guarantee: at-least-once
duplicates: >-
Possible. The bank recommends storing processed event ids and ignoring an id already seen.
ordering: not guaranteed — sort on the `timestamp` property
latency: event delivery can take up to 20 minutes after the event occurs
endpoint_requirements: publicly reachable over HTTPS
retry_policy:
attempts: 15
schedule:
- attempt: 1
after: 1 minute
- attempt: 2
after: 5 minutes
- attempt: 3
after: 15 minutes
- attempt: 4
after: 30 minutes
- attempt: 5
after: 1 hour
- attempt: 6
after: 3 hours
- attempt: 7
after: 6 hours
- attempt: 8
after: 12 hours
- attempts: 9-15
after: 24 hours
docs: https://developer.bankoflondon.com/docs/guides/manage-webhooks-guide
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.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.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/the-bank-of-london-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.