var content = new StringContent(JsonConvert.SerializeObject(new {Amount = amount}), Encoding.ASCII, "application/json");

        var saleRequest = await client.PostAsync($"/Terminal/{_tid}/Sale/", content);
            
        saleRequest.EnsureSuccessStatusCode();
        
        var saleResponse = JsonConvert.DeserializeObject(await saleRequest.Content.ReadAsStringAsync());

        TransactionModel transaction = null;
        
        async Task WaitForCompleteStatusAsync()
        {
            transaction = await GetTransaction(saleResponse.ResourceId);

            while (transaction == null || transaction.status is "InProgress" or "Pending" or "404")
            {
                transaction = await GetTransaction(saleResponse.ResourceId);
                
                Thread.Sleep(500);
            }
        }

        await WaitForCompleteStatusAsync();

        return transaction;