Given a store ID, order number, and date/time of purchase, this script will generate a code that can be entered in the Food for Thoughts survey that, upon completion, gives you another code that can be redeemed for discounted items.
As of August 2023 you only need to enter the code to begin the survey; a price is not required.
Call the script with 3 arguments:
get_code.py 1553 1743 "2023-03-14 16:48"
The above will output 7ZWW-NGH3-ZFWJ
which matches the following receipt:
A non-exhaustive list of store IDs is included (stores.tsv). You can also find store IDs by inspecting the return data from the McDonald's store locator or by simply checking receipts from stores.
The survey code above can be broken down as follows:
Code | Decimal | Meaning |
---|---|---|
7ZW |
1553 | Store ID. |
W |
3 | Not sure, but the vast majority of receipts always seem to have W here. |
NG |
168 | Order ID: last two digits + 125 (usually). |
H3ZFW |
3,742,128 | Date/time of purchase (represented as number of minutes since 2016-02-01 00:00 ). |
J |
23 | Check digit (Luhn mod N algorithm; uses 25 as a base). |
Values are encoded using the following base 25 system:
Decimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Base 25 | C | M | 7 | W | D | 6 | N | 4 | R | H | F | 9 | Z | L | 3 | X | K | Q | G | V | P | B | T | J | Y |
Further discussion on Reverse Engineering Stack Exchange where this was originally posted: https://reverseengineering.stackexchange.com/questions/32129/mcdonalds-receipt-codes
If the above made no sense to you and/or you just want to generate a code, download this repository using the green "<> Code" button at the top of the page, open demo/page.html in a web browser on your computer/laptop, then fill out the parameters as required.