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 (140, 150), 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 (140, 150); 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 (140, 150), the purchase token for validation; and receiving, at the computing device from the vending device (140, 150), 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 (140, 150). receiving, at a computing device, a beacon signal including a vending device identifier and a random number generated by a vending device (140, 150), 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 (140, 150); 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 (140, 150), the purchase token for validation; and receiving, at the computing device from the vending device (140, 150), 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 (140, 150). 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 (140, 150).