Skip to main content
The Bank Transfer plugin emits 21 JSON business facts as CloudEvents 1.0 in binary content mode over Kafka. The same facts feed its webhooks.

Transport contract

Set STREAMING_ENABLED=true and the streaming variables. While streaming is off, the plugin discards events. If you set STREAMING_CLOUDEVENTS_SOURCE, its value must be exactly plugin-br-bank-transfer. In production, the plugin serves the manifest only when authentication is on. Some events are best effort: when their outbox write fails, the plugin keeps the change that they announce and does not publish the event. If an expected event does not arrive, read the transfer with Get Transfer.

Event catalog

Initiation and transfer lifecycle

Reconciliation

Incoming transfers

Devolutions and P2P returns

Deduplication

Deduplicate on (ce-source, ce-id), and keep consumers idempotent. Two events also need a business key:
  • transfer_incoming.chargeback: the TED IN worker and an operator can each announce one chargeback, under two ids. Deduplicate on tenantId, transferId, and status.
  • transfer.reconciliation_resolved: an operator resolution can arrive twice. convergedOntoExistingResolution marks the copy that found the resolution already written. Deduplicate on tenantId, transferId, status, and reconciliationStatus, not on that marker.

Payload contracts

Amounts are decimal strings, for example "1500.00". Timestamps are UTC RFC 3339 strings. Fields marked with ? are optional. tenantId is empty in single-tenant mode.