Memo Bank · AsyncAPI Specification

Memo Bank Webhooks

Version

View Spec View on GitHub CompanyFintech InsurtechBankingBusiness BankingPaymentsSEPASEPA Direct Debitvirtual-ibanWire TransfersOpen BankingPSD2Berlin GroupWebhookMCPFranceAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-17'
method: searched
source:
- openapi/memo-bank-premium-bank-api-openapi.yml
- https://docs.api.memo.bank/group/webhook-webhook
- https://docs-marketplace.api.memo.bank/topic/topic-webhooks
- https://memo.bank/en/product/api/
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Memo Bank publishes NO AsyncAPI document. Probed https://docs.api.memo.bank/asyncapi.yaml,
  /asyncapi.json and https://api.memo.bank/asyncapi.yaml on 2026-08-17 - all 404. The event surface is
  real and well specified, but it is expressed through the OpenAPI 3.1 top-level `webhooks` object rather
  than AsyncAPI. This catalogue is therefore captured from that webhooks block plus the prose docs; no
  AsyncAPI has been fabricated.
transport:
  protocol: HTTPS webhook POST
  direction: Memo Bank -> subscriber
  delivery_url_requirement: Must use HTTPS (stated on the CreateWebhook schema).
  content_types:
  - application/json
  - application/vnd.memo-bank.v1+json
  content_type_note: >-
    The versioned vendor media type carries the same Event schema, giving subscribers a media-type
    versioning lever independent of the /v2/ path version.
  authentication:
    mechanism: bearer token issued by Memo Bank per webhook
    header: Authorization
    detail: >-
      Creating a webhook returns a bearer_token which Memo Bank includes in the Authorization header of every
      delivery to that endpoint. The subscriber verifies it to authenticate the sender.
    signature: none
    signature_note: >-
      There is no HMAC request signature and no timestamp header, so deliveries are authenticated by a
      shared bearer secret rather than a per-payload signature. That means a subscriber cannot detect
      replay, and the secret is exposed to anyone who can read the webhook resource. An HMAC signature over
      the body with a timestamp would be the standard hardening here.
  retry_policy: >-
    Memo Bank states a retry policy exists and that an event with the same id may be sent multiple times on
    error, but the backoff schedule and maximum attempt count are not published.
  ordering: not guaranteed / not published
management:
  api_managed: true
  operations:
  - listWebhooks
  - createWebhook
  - getWebhook
  - deleteWebhook
  introduced: '2026-03-18'
  fields:
    id: uuid
    name: human label for the webhook
    url: HTTPS delivery target
    bearer_token: token Memo Bank sends in the Authorization header
  update_supported: false
  update_note: >-
    There is no update operation - a webhook is created and deleted, so changing a delivery URL means
    tearing down and re-registering, and the bearer token rotates with it.
idempotency:
  contract: >-
    Event.id is a UUID and Memo Bank documents it explicitly as the deduplication key: an event with the
    same id can be sent multiple times in case of error but should only be processed once.
  key_field: id
message:
  name: Event
  schema_ref: openapi/memo-bank-premium-bank-api-openapi.yml#/components/schemas/Event
  operation_id: handleEvent
  required:
  - id
  - date
  - event_type
  - resource_id
  - resource_type
  fields:
    id: UUID of the event; the idempotency key.
    date: Event creation date, ISO 8601 date-time.
    event_type: One of 34 enumerated event types.
    resource_type: One of 11 enumerated resource types.
    resource_id: UUID of the resource the event refers to.
  payload_style: >-
    Thin/reference payload. The event carries only identifiers and a type - not the changed resource - so a
    subscriber must call the corresponding GET operation to fetch state. This is the safer pattern for
    banking data but doubles the round trips.
  extensibility_contract: >-
    Memo Bank reserves the right to add EventType and ResourceType members without a version bump, and
    states subscribers must handle additions gracefully.
marketplace_extension:
  header: X-Memo-Connection-Id
  purpose: >-
    Identifies which marketplace connection an event belongs to, so a multi-tenant application can route the
    event to the right customer context.
  webhook_scoping: >-
    Webhooks created with a marketplace OAuth access token are tied to that connection, allowing a distinct
    URL per connected customer. Memo Bank can alternatively configure one global webhook for the whole
    application.
  source: https://docs-marketplace.api.memo.bank/topic/topic-webhooks
event_count: 34
resource_type_count: 11
resource_types:
- account
- attachment
- collection
- iban
- transaction
- transfer
- wire_transfer
- bulk_transfers
- bulk_collections
- mandate_signature_request
- account_assessment
events:
- group: account
  types:
  - event_type: account_created
    resource_type: account
  - event_type: account_updated
    resource_type: account
  - event_type: account_closed
    resource_type: account
- group: attachment
  types:
  - event_type: attachment_created
    resource_type: attachment
  - event_type: attachment_deleted
    resource_type: attachment
- group: iban
  types:
  - event_type: iban_created
    resource_type: iban
  - event_type: iban_updated
    resource_type: iban
  - event_type: iban_deleted
    resource_type: iban
- group: transaction
  types:
  - event_type: transaction_scheduled
    resource_type: transaction
  - event_type: transaction_authorized
    resource_type: transaction
  - event_type: transaction_confirmed
    resource_type: transaction
  - event_type: transaction_rejected
    resource_type: transaction
  - event_type: transaction_canceled
    resource_type: transaction
- group: transfer (SEPA)
  types:
  - event_type: transfer_confirmed
    resource_type: transfer
  - event_type: transfer_returned
    resource_type: transfer
  - event_type: transfer_canceled
    resource_type: transfer
  - event_type: transfer_failed
    resource_type: transfer
- group: wire transfer (SWIFT/RTGS)
  types:
  - event_type: wire_transfer_confirmed
    resource_type: wire_transfer
  - event_type: wire_transfer_returned
    resource_type: wire_transfer
  - event_type: wire_transfer_canceled
    resource_type: wire_transfer
  - event_type: wire_transfer_failed
    resource_type: wire_transfer
  - event_type: wire_transfer_attachment_required
    resource_type: wire_transfer
    note: >-
      A compliance-driven event - the bank is asking for supporting documentation before the wire proceeds,
      which an integrator can satisfy with createWireTransferAttachment.
- group: collection (SEPA Direct Debit)
  types:
  - event_type: collection_confirmed
    resource_type: collection
  - event_type: collection_returned
    resource_type: collection
  - event_type: collection_canceled
    resource_type: collection
  - event_type: collection_failed
    resource_type: collection
- group: bulk
  types:
  - event_type: bulk_transfers_completed
    resource_type: bulk_transfers
  - event_type: bulk_collections_completed
    resource_type: bulk_collections
- group: mandate signature request
  types:
  - event_type: mandate_signature_request_sent
    resource_type: mandate_signature_request
  - event_type: mandate_signature_request_expired
    resource_type: mandate_signature_request
  - event_type: mandate_signature_request_completed
    resource_type: mandate_signature_request
  - event_type: mandate_signature_request_deleted
    resource_type: mandate_signature_request
- group: account assessment
  types:
  - event_type: account_assessment_completed
    resource_type: account_assessment
  - event_type: account_assessment_failed
    resource_type: account_assessment
lifecycle_coverage:
  assessment: >-
    Every asynchronous state machine in the product emits terminal events in both directions. Transfers,
    wire transfers and collections each publish confirmed / returned / canceled / failed; transactions
    publish the full scheduled -> authorized -> confirmed path plus rejected and canceled; bulk batches
    signal completion; mandates and assessments signal both success and failure. For reconciliation
    purposes this is complete - a subscriber never has to poll to discover a terminal outcome.
gaps:
- No AsyncAPI document, so the event surface is invisible to AsyncAPI tooling and event catalogues.
- >-
  No HMAC payload signature or timestamp header - deliveries are authenticated with a static bearer token
  only, leaving no replay protection.
- No published retry schedule or maximum attempt count.
- No webhook update operation; changing a URL forces re-registration and rotates the bearer token.
- No event-type subscription filter is documented, so a subscriber appears to receive all 34 types.
- No delivery-log or event-replay endpoint for recovering missed events after an outage.

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/memo-bank-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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