private async Task <string> processOrder(Utxos utxo, ITransaction txinfo, IShopItem mainItem)
        {
            var amountOfTokens = (int)((mainItem.Price / (utxo.Value / neblio.FromSatToMainRatio)) * mainItem.Lot);

            if (amountOfTokens != 0)
            {
                try
                {
                    var meta = new Dictionary <string, string>();
                    meta.Add("Token Order", "true");
                    meta.Add("PaymentTxId", utxo.Txid);

                    var sutxs = await NeblioTransactionHelpers.FindUtxoForMintNFT(Address, TokenId, amountOfTokens - 1);

                    if (sutxs.Count != 0)
                    {
                        var sendutxos = new List <string>();
                        foreach (var s in sutxs)
                        {
                            sendutxos.Add(s.Txid + ":" + s.Index);
                        }

                        var dto = new SendTokenTxData()
                        {
                            Amount          = amountOfTokens,
                            Id              = TokenId,
                            Metadata        = meta,
                            Password        = string.Empty, // shop must be unlocked
                            SenderAddress   = Address,
                            ReceiverAddress = txinfo.From[0],
                            sendUtxo        = sendutxos,
                            NeblUtxo        = utxo.Txid,
                            UseRPCPrimarily = false
                        };

                        var resp = await NeblioTransactionHelpers.SendNTP1TokenAPI(dto, isItMintNFT : true);

                        return(resp);
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Cannot send ordered tokens!", ex);
                }
            }

            return(string.Empty);
        }