The Affelios integrated transaction engine enables high throughput efficient synchronization of transaction data between external systems and the Affelios Platform.


The Affelios transaction engine ingests transactions asynchronously and reactively in batches via a low latency queue and worker system, and commission is attributed to transactions as they successfully enter the transaction store. The pipeline has five distinct stages.


Transactions first enter the HTTP API either as a single item or as a batch (the latter recommended for performance and throughput), with the payload required to pass basic validation to ensure the data appears correctly defined, before a synchronous HTTP response is returned to confirm the batch has been committed to the durable transaction stream for processing.


Transaction workers dequeue batches of transactions and determine based on each transaction, and the program settings, whether the transaction requires approval or not. This enables the handling of high bursts of transactions on peak, either during peak trading (real-time), or during periodical exports (jobs).


Transactions which require manual approval are inserted into the pending transactions collection and must be approved before progressing further into the pipeline.


Once transactions are automatically or manually approved they are processed and assigned relevant commission in flight. This means all balances are always in lockstep with the state of the transaction collection and all affiliates and program managers are always immediately aware of balance updates.


Transactions which fail to be processed are, depending on the failure reason, retried zero or more times, before entering the transaction failure collection, where they can be retried manually at a later date or discarded.

Creating a single transaction

Good to know: For high throughput workloads and efficient synchronization it is highly recommended that transactions are entered into the system in batches rather than as single transactions. However, the above method is provided for simple low throughput integrations, or systems which are unable to extract transactions in batches.

Creating a transaction batch

Last updated