Genome · AsyncAPI Specification
Genome Webhooks
Version
View Spec
View on GitHub
FinancePaymentsBankingOpen BankingPSD2SEPACard ProcessingPayoutsElectronic Money InstitutionEuropeAsyncAPIEvents
AsyncAPI Specification
generated: '2026-09-12'
method: searched
source: https://developers.genome.eu/webhooks/ + https://developers.genome.eu/sepa-payout-api/ + https://developers.genome.eu/merchants/host-to-host-api/ + https://developers.genome.eu/merchants/hosted-payment-page/
provider: Genome
providerId: genome
description: >-
Genome's event surface. There is no AsyncAPI document and no event catalog endpoint — Genome
publishes THREE separate server-to-server callback channels, each with its own content type, its own
signature scheme and its own payload shape. This file records all three as published; nothing here
is invented.
asyncapi_published: false
asyncapi_note: >-
No /asyncapi.yaml, /asyncapi.json or event-catalog surface exists on any Genome host, and the GitHub
organisation publishes none. The webhook documentation is prose-and-table only, so no AsyncAPI
pointer is emitted — writing one would be authoring a contract on the provider's behalf.
subscription_model:
self_service: false
mechanism: >-
A merchant cannot register a webhook through an API or a dashboard. Genome's documented process is
to email accounts@genome.eu with the delivery URL, attemptMax, direction and outcome, and a person
configures it. There is no list, update or delete endpoint, and no way to read back the current
configuration.
configuration_fields:
- name: url
format: varchar
description: URL to receive data
- name: attemptMax
format: uint16
description: Number of retries to deliver data
- name: direction
format: enum(incoming_only)
description: incoming_only — transactions that increase balance (credit transactions)
- name: outcome
format: enum(success_only)
description: success_only — information about successful transactions only
source: https://developers.genome.eu/webhooks/
channels:
- id: incoming-payment-notification
name: Incoming payment notification
transport: HTTPS POST to the merchant URL
content_type: application/json
direction: Genome -> merchant
docs: https://developers.genome.eu/webhooks/
headers:
- name: User-Agent
value: Genome Callback System
- name: Content-Type
value: application/json
- name: X-Version
value: '1'
description: Callback version. Current value is 1.
- name: X-Signature
description: HmacSHA256 of the full callback request body, keyed with the per-customer secret, hex encoded.
payload_fields:
- name: transaction_id
type: uint64
required: true
description: Transaction ID in the Genome system
- name: transaction_type
type: enum
required: true
examples: [direct, sepa_incoming, sepa_instant_incoming, swift_incoming]
- name: transaction_status
type: enum
required: true
examples: [processing, success, error, decline]
- name: created_at
type: string (RFC 3339)
required: true
- name: booked_at
type: string (RFC 3339)
required: false
- name: processed_at
type: string (RFC 3339)
required: false
- name: amount
type: object {amount decimal major units, currency ISO 4217 alpha-3}
required: false
description: May be absent on error or decline
- name: description
type: string
required: false
- name: error
type: object {code uint32, message string}
required: false
description: May be absent under incoming_only / success_only settings
- name: sender
type: participant {wallet_id, account_id, iban, bic, name}
required: false
- name: receiver
type: participant {wallet_id, account_id, iban, bic, name}
required: false
- name: reference
type: transaction
required: false
description: The full referenced transaction, when this callback references another transaction
- name: bulk_id
type: uint64
required: false
description: Bulk ID when the transaction belongs to a mass-transfer batch
- name: payment_id
type: uint64
required: false
acknowledgement: HTTP 200
delivery:
guarantee: at-least-once
duplicates: >-
Genome states explicitly that the same event can be resent multiple times for a single
transaction, so the receiver must deduplicate on transaction_id.
retry_schedule_after_last_attempt:
- attempt: 1
after: 00:00:01
- attempt: 2
after: 00:00:03
- attempt: 3
after: 00:00:09
- attempt: 4
after: 00:00:27
- attempt: 5
after: 00:01:21
- attempt: 6
after: 00:04:03
- attempt: 7
after: 00:12:09
- attempt: 8
after: 00:36:27
- attempt: 9
after: 01:49:21
- attempt: 10
after: 05:28:03
- attempt: 11
after: 16:24:09
- attempt: 12
after: 49:12:27
backoff: exponential, x3 per attempt, capped by the per-customer attemptMax
total_window: about 72 hours across 12 attempts
on_exhaustion: Genome stops sending notifications after the last unsuccessful retry.
- id: card-transaction-callback
name: Host-to-Host transaction callback
transport: HTTPS POST to callback_url supplied on the request
content_type: application/x-www-form-urlencoded
direction: Genome -> merchant
docs: https://developers.genome.eu/merchants/host-to-host-api/
signature:
field: checkSum
algorithm: >-
SHA-256 over the callback fields excluding checkSum, sorted by key, joined as key=value with a
pipe separator, with the merchant private signature appended as the final segment.
payload_fields:
- name: token
type: string(36)
- name: reference
type: string(20)
- name: transaction_unique_id
type: string(1-45)
- name: status
type: enum
values: [SUCCESS, DECLINED, ERROR, FRAUDED]
- name: code
type: integer
description: Response code from errors/genome-error-codes.yml
- name: message
type: string(6-255)
- name: checkSum
type: string(64)
acknowledgement: HTTP 200 required, body text "OK" optional
delivery:
guarantee: at-least-once
note: >-
If Genome does not get a 200 the callback is not considered received and Genome re-sends
periodically; the number of attempts is limited but the schedule is not published for this channel.
- id: sepa-payout-callback
name: SEPA Payout callback
transport: HTTPS POST to callback_url supplied on the payout request
content_type: application/x-www-form-urlencoded
direction: Genome -> merchant
docs: https://developers.genome.eu/sepa-payout-api/
signature:
field: checkSum
algorithm: same pipe-joined, key-sorted SHA-256 scheme as the card transaction callback
statuses: [SUCCESS, ERROR, DECLINED, PENDING, FRAUDED]
note: >-
The synchronous payout response carries status "pending" and is explicitly NOT final. The final
outcome arrives only on this callback, so a caller with no reachable HTTPS endpoint cannot learn a
payout's result except by polling https://api.genome.eu/api/mp/transaction.
acknowledgement: HTTP 200 required, body text "OK" optional
- id: hpp-callback
name: Hosted Payment Page callback
transport: HTTPS POST to the URL configured in the payment page settings
content_type: application/json
direction: Genome -> merchant
docs: https://developers.genome.eu/merchants/hosted-payment-page/
headers:
- name: X-Signature
description: HmacSHA256 of the request body, hex encoded
- name: X-Signature-Algorithm
value: HmacSHA256
- name: X-API-Key
description: The merchant's API key from the Genome portal HPP settings
- name: X-Request-Id
description: Unique identifier of the request; quote it to support on any issue.
note: Custom claims sent in the session JWT (custom_*) are forwarded in this callback.
gaps:
- No AsyncAPI or other machine-readable event contract.
- No self-service subscription management; webhooks are configured by email.
- No event replay or backfill endpoint.
- Four channels with three different signature schemes and two content types.
- The incoming-payment channel can only be filtered to incoming_only / success_only, so outgoing and failed transactions have no notification path.
summary:
channels: 4
asyncapi_documents: 0
signature_schemes: 3
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
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/genome-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.