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

Raw ↑
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.
All 92 tools →

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.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.