Simple and safe cryptocurrency arbitrage.

Cryptocurrency arbitrage is a fancy term for selling cryptocurrencies on platforms such as AgoraDesk.

Here's an example of the process for purchasing £10 of XMR on AgoraDesk:

  1. You open a trade on the platform, selecting that you would like to purchase £10. You will see the amount of XMR we will pay to you.
  2. Selected amount of XMR is automatically transferred to the AgoraDesk escrow. You now have 30 minutes to complete the trade before we are able to cancel it (see Safety section below).
  3. If you have not completed verification, you will be sent a KYC link to our partner SumSub to complete this.
  4. Once this is completed (or if you did it previously), you will be sent the bank details to send the payment to, alongside a reference you are required to use to minimise delays in reconciling your payment to your trade.
  5. When our automated system detected an adequate payment has been made, your coins are automatically released. It will take about 30 minutes-1 hour for this to clear due to escrow transfers.


We have a number of provisions to ensure the safety and security of the trade.

Platform safety

Once you open the trade, the cryptocurrency token is moved to the platform's escrow. This means that for a set amount of time, we are not able to cancel the trade, and this cryptocurrency is reserved exclusively for your trade.

Once the timer expires, we will be able to cancel the trade, unless you have marked the payment as completed. In this instance, we would only be able to either:

  1. Release the cryptocurrency to you.
  2. Request the assistance of a moderator for mediation.

This means we can both rest easy that neither party has the ability to run off with the money.

KYC verification

Due to a long history of traders using our services for fradudulent activities like money laundering, we now require KYC for all traders. We partner with SumSub to make this as easy for you as possible. The user experience is as follows:

  1. We send you a link to verify your identity.
  2. You open the link on your phone or desktop (you can also open it on your desktop and scan a QR code with your phone to make it easier).
  3. You input some basic details and then scan your chosen identity card.
  4. You take a selfie and live video which SumSub uses to match your ID's picture to your face.
  5. We receive the results automatically in our application, and if it's all good, we will proceed with sending payment details.

Please get in touch if you experience difficulties with capturing your information, but be warned we will err on the side of caution, it's an incredibly simple process to follow, and we won't be taking any increased risk by proceeding with the trade without verification. We are just trying to make a living, and fraudulent trades have significant implications, including trigger-happy banks freezing our accounts for months at a time, removing our ability to earn any money until we play telephone tennis with often severely under-informed customer service agents, or procure an additional bank account, two extremely admin heavy tasks.

If you're doing cryptocurrency arbitrage and would like to avoid problematic banks, please see our Hall of shame.


We have implemented a customised anti-fraud library which we use to keep track of incoming payments for your username on a platform. We will store a representation of your name, and all future payments must not differ substantially from this name. We use very relaxed matching, so "M Veidemanis" will match "Mark V" as well as "M Veidema", as we know large banks are notorious for bungling the sender field.

Ease of use

Whilst we would prefer all users send the exact amount, in the correct currency, with the correct reference, we have provisions for the following:

  • If your payment has no reference, but matches the exact amount of a trade, and only matches one trade, and is below our "no reference limit", we will release it automatically. If multiple trades are open in the same amount with the same currency, and one of them receives a payment with no reference, human intervention will be required.
  • If your payment is "close enough", we will automatically release the trade. Currently we allow +- 1USD. It is not a percentage. If you would like your 1USD back, please contact us. If you sent more than 1USD too much or too little, human intervention will be required.

Variable pricing

We don't manually set our margins for our trades, instead we will copy the lowest margin within our preconfigured parameters for a market (combination of cryptoasset, payment method and currency, like XMR, Bank Transfer, EUR).

This means that we keep the current market rates without lowballing people. This is always a losing game, since everyone will end up at their minimum and not make any profit.

Our task runs every 5 minutes.

But how?

You're probably wondering how this works. Most traders on these platforms trade manually, but we found it repetitive enough that it was viable for automation.

We pull in trades from AgoraDesk with a customised agoradesk-py library we have rewritten to use aiohttp.

We have a Django site where we can configure our ads, account details, XMR withdrawal addresses and profit calculation parameters.

For important events we can't miss, we use Ntfy. It's the easiest way we've found to send mobile notifications from Python.

For detecting whether a user has paid for a trade, we use Nordigen and TrueLayer Open Banking API aggregators.

We love to have a visual overview of our profit, so we ingest balances from our bank accounts and platform wallets into Elasticsearch. This lets us track our profit (or loss) over time, and is a rather fresh approach to accounting, since often all we want to know is whether or not what we're doing is profitable.

We also ingest data acquired from scrapes of other user's ads to help us pick reasonable values for minimum and maximum margins, and to give us an extremely detailed insight into the liquidity and competition of the markets we trade on.