Handling timeouts
Terminal is down
The client successfully sends a sale request to CloudLink but the terminal is down. A callback is therefor never delivered to the client.

CloudLink API is down after successful sale
The client sends a sale request to the terminal and the sale is displayed on the terminal and the cardholder makes the payment. When the terminal then tries to send a SALE_COMPLETED to CloudLink, it can not be contacted.
The terminal voids the previous sale.

Sale is not confirmed
The client sends a sale request to the terminal and the sale is displayed on the terminal and the cardholder makes the payment. When the terminal then sends a SALE_COMPLETED to CloudLink and the client polls the response (or not), but does not confirm within a time period.
The terminal voids the previous sale.

Terminal busy
A client tries to send a sale to a terminal who is already processing a sale from another client, the terminal sends back an event TERMINAL_BUSY.
