Skip to main content
Skip table of contents

Synthetic Currency Exchange Mechanism


This article outlines the principles of exchange operations using the standard approach within the Crassula system. It emphasizes the universality and flexibility of our approach, making it suitable for multi-provider environments. Our method leverages additional mechanisms of the Crassula system for handling fees while eliminating dependencies on providers and their limitations.

While there are exceptions where a provider's native exchange API is used, we strive to avoid such integrations. Instead, we implement our "synthetic" exchange, where Crassula does not perform actual conversions but moves users' funds between specified accounts using third-party rates.

To fully understand the overall picture, review the following articles:

Crassula Service Providers

FX Principles

No Real FX

Crassula does not conduct currency exchanges per se. We merely instruct the provider on how to move funds so that, for the user, it appears as a currency exchange. This means:

  • For virtual accounts: We simulate the movement of funds on the user's accounts.

  • For real accounts: We debit/credit the user's account using the liquidity of the White Label (WL) on interledger accounts.


This approach is universal for most providers, allowing for exchanges to be conducted uniformly, even when they involve different providers.

Flexible Rates

Crassula can use exchange rates from third-party providers, ensuring we are not tied to the rates of the provider handling banking operations. This allows us to connect to external resources with their rates, which can be applied even if the exchange involves accounts from different providers. Different providers can be set for different currencies, useful if one provider does not support a required currency.

FX Markup Fees

Since Crassula instructs the provider on the "exchange" amount and destination, we can apply FX markup fees within this mechanism. This means we are not limited by the provider's rates and restrictions. For these fees to work, we influence the user's exchange rate, resulting in the user receiving less than they would with the standard rate.

No Native FX Limitations

Not all providers have an internal exchange mechanism. Our universal mechanism is useful for providers that do not fully support currency exchanges or offer user-friendly options. Providers with native exchanges often impose restrictions like cut-off times, daily transaction limits, and total transaction amounts.

Liquidity Management

Manual liquidity management is essential to support this mechanism in banking operations.

  • For virtual accounts: The WL must maintain sufficient funds in pooling accounts. We simulate the movement for the user, so if there are insufficient funds in the pooling account, the user may be unable to make a payment in that currency despite having "received" it through an exchange.

  • For real accounts: The WL must monitor the funds in interledger accounts. We debit the source amount from the user's account in favor of the WL's interledger account and instruct the provider to credit the target amount from the WL's interledger account to the user's account. If there are insufficient funds in the second interledger account, the exchange operation will fail. The WL must also monitor liquidity if connected to an exchange, ensuring sufficient funds are available on the provider's side to initiate the exchange order.

Real and Virtual Accounts in ClearBank

Crassula system has both Real and Virtual accounts integrated in ClearBank.

Newly created clients' accounts should be activated to be operational. The WhiteLabels are also able to close their accounts. Sometimes, the clients ask to activate an account that was closed, e.g., by mistake. According to ClearBank documentation, a closed account, no matter its type, cannot be reopened.

Once a virtual or real account has been closed, it cannot be reopened. In this case, the client should be encouraged to open a new account.

See Real and Virtual accounts for details.

ClearBank is NOT an Exchange Provider

When the exchange rate provider is not ClearBank but a third-party provider like ECB or , Crassula applies their rates. The user sees the ECB rate, and all operations are created with amounts based on ECB rates.

Example with ECB

Crassula creates necessary transactions using interledgers and instructs ClearBank on what, where, and how much to credit.

Exchange Between Real ClearBank Accounts

  • Debit 90 euros from the client's account (transfer type: currency exchange)

  • Credit 100 pounds to the client's account (transfer type: currency exchange)

  • Credit 90 euros to the interledger account (transfer type: interledger)

  • Debit 100 pounds from the interledger account (transfer type: interledger)

Exchange Between Virtual ClearBank Accounts

  • Debit 90 euros from the client's account (transfer type: currency exchange)

  • Credit 100 pounds to the client's account (transfer type: currency exchange)

Exchange Between Real and Virtual ClearBank Accounts

  • Debit 90 euros from the real client's account (transfer type: currency exchange)

  • Credit 100 pounds to the virtual client's account (transfer type: currency exchange)

  • Credit 90 euros to the interledger account (transfer type: interledger)

In cases where the involved accounts are not ClearBank accounts, the presence of an interledger account depends on the account type (real or virtual).

FX Markup Fee Example

If an FX markup fee is set, the process looks as follows (based on the first scenario described):

The user wants to buy 100 pounds. The actual rate for this operation would be 90 euros. We show the user a higher rate, and the exchange amount becomes 95 euros. Interledger operations will have corresponding amounts of 100 pounds and 95 euros.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.