A computer-implemented method comprising: receiving, at a computing device , a beacon signal including a vending device identifier and a random number generated by a vending device , the random number being for a single transaction; sending, to a cloud-based vending service , the vending device identifier; receiving, from the cloud-based vending service , an indication of at least one product available for purchase from the vending device ; receiving, at the computing device , an indication of a selected product of the at least one product available for purchase; sending, at the computing device to the cloud based vending service , a request to purchase the selected product, the request including the random number; receiving, at the computing device from the cloud-based vending service , a purchase token for the selected product, wherein the purchase token includes a first hash value that is based on the random number; sending, at the computing device to the vending device , the purchase token for validation; and receiving, at the computing device from the vending device , an acknowledgment that the purchase token has been validated and used to purchase the selected product, the validation including: generating a second hash value based on the same set of values and same hashing algorithm as used by the cloud-based vending service to generate the purchase token including the first hash value; and comparing the purchase token with the second hash value and, if they match, dispensing the selected product or products by the vending device . receiving, at a computing device , a beacon signal including a vending device identifier and a random number generated by a vending device , the random number being for a single transaction; sending, to a cloud-based vending service , the vending device identifier; receiving, from the cloud-based vending service , an indication of at least one product available for purchase from the vending device ; receiving, at the computing device , an indication of a selected product of the at least one product available for purchase; sending, at the computing device to the cloud based vending service , a request to purchase the selected product, the request including the random number; receiving, at the computing device from the cloud-based vending service , a purchase token for the selected product, wherein the purchase token includes a first hash value that is based on the random number; sending, at the computing device to the vending device , the purchase token for validation; and receiving, at the computing device from the vending device , an acknowledgment that the purchase token has been validated and used to purchase the selected product, the validation including: generating a second hash value based on the same set of values and same hashing algorithm as used by the cloud-based vending service to generate the purchase token including the first hash value; and comparing the purchase token with the second hash value and, if they match, dispensing the selected product or products by the vending device . generating a second hash value based on the same set of values and same hashing algorithm as used by the cloud-based vending service to generate the purchase token including the first hash value; and comparing the purchase token with the second hash value and, if they match, dispensing the selected product or products by the vending device . <EOS>