Cryptocurrency, like many markets, is volatile. As a result, the question naturally arises of how operators of cryptocurrency ATMs can make a consistent profit without exposure to fluctuations in market prices undercutting their return.
Let’s first delve into the flow of coins and cash between you, your customer, and your exchange, followed by an example showing how you profit regardless of market swings.
The cryptomat dispenses from wallets you own and stock with coins. The commission you make is yours to keep: it's a percentage you set above each coin’s ticker price.
Your profit is realized as more cash in the cash box (or more coin left in the wallet) than there would be if the commission were set at 0%.
For cash-out, it's the opposite: the user sends coins to the same wallet and the machine dispenses cash, accounting for your commission in the total amount of coins it requests from the user.
The machine can be linked to an exchange so that with each customer transaction, you purchase back the same amount of coins at the current price (less your commission).
This allows you to avoid volatility and keep a constant supply. Every so often you'll transfer the coins purchased on your exchange account to replenish the machine's wallet.
The float of coins with which you first stock machine's wallet is a buffer and can be thought of as an initial investment. When using an exchange linkage, the only true exposure you'd have to price swings is on your initial float, as every coin purchased thereafter by customers is replenished at cost at time of transaction.
How much float you hold depends upon how frequently you'd like to refill coins from the exchange account to your wallet. As you work up a steady pace of transactions, you'll get a feel of how often this should be.
Your machine's wallet has 3 BTC in it and the machine has 0 USD. You transfer $9,000 to your Bitcoin exchange, so your exchange account has $9,000 and 0 BTC.
A user comes up to the machine, puts in $275 for 0.1 BTC, assuming a $2,500/BTC rate and 10% commission, and the machine immediately puts in a buy order on the exchange for 0.1 BTC.
Status: 2.9 BTC in the machine's wallet, $275 in the cash box. In the exchange you have $8,750 (0.1 BTC @ $2,500 rate) and 0.1 BTC.
This keeps happening until you have $8,800 (base price + 10% profit) in the cash box on the machine and 0.4 BTC or so and it's time to refill. At this point you will have about 2.6 BTC in your exchange account and ~$1,000 left. Now you send the 2.6 BTC from the exchange to your machine's wallet so it has 3 BTC and, having collected $8,000 from your machine, you send the cash to the exchange via your bank so you have $9,000 in the exchange.
And now you're back where you started, your machine's wallet has 3 BTC in it and the machine has 0 USD. Your exchange account has $9,000 and 0 BTC.
No matter the price of Bitcoin, you will have 3 BTC and $9,000 in the exchange, the only difference being your profit of $800 for this cycle that stays in the bank. Price goes up leading to a frenzy, you profit, price goes down leading to a frenzy, you profit.
Wallet and Exchange Separation
Separating the machine’s hot wallets and your exchange account is important for a few key reasons.
First, using a hot wallet has the effect of an immediate transaction for the customer, and gives the assurance that you have the funds on hand to give them.
A hot wallet is also greater security for the operator, as only he or she will hold the private keys to their hot wallet, keeping less on-hand with a third-party.
Most importantly, this helps avoid being considered a money transmitter in many jurisdictions, as only two parties are involved in a direct sale, instead of a third if coins were sent directly from an exchange to the user with the operator facilitating the transaction.
As noted above, the coins that are purchased on the exchange will need to be periodically sent to your wallet to replenish it. This is done by logging into the exchange account and placing a withdrawal to an address in your wallet.
This is not done automatically for reasons of security. If the trading API allows the machine to trade coins with the fiat account as well as send it, and the server is compromised, the attacker will be able to use all of the fiat to buy coins and send it to their address. By limiting the API to trade-only, without the ability to send, a compromised server would allow the theft of coins just to those currently on the server.