TCRDD

TechStud’s Costco Receipt Downloader (TCRD)

Version License

TCRD is a client-side JavaScript utility designed to extract and archive your Costco in-warehouse receipts, saving the raw data in a standardized JSON format.

Running directly in your web browser, it will fetch up to 3 years of data-rich receipt history for the logged in Costco member and then intelligently export the history to a new JSON format file or merge any new receipt data with your existing archives (if you select an existing Costco Receipt file), ensuring a clean, duplicate-free record.


🌟 Features


🚀 How to Use (Step-by-Step)

Prerequisites

Instructions

1. Log In to your Costco Account

2. Navigate to Orders & Returns -> In-Warehouse

3. Open the Developer Console

4. Run the Script

5. Choose Your Action


📂 File Output & Naming

The script automatically generates filenames based on the data found:

Note on Saving:


📸 Screenshots

image

  1. Click ‘Orders & Returns’ and then click ‘Warehouse
  2. Open Developer Tools (F12 or Cmd/Ctrl + Shift + I) and click the ‘Console’ tab

image

  1. Paste in the entire TCRD script into the Browser Console and press Enter (or press Run)
  2. Click one of the two on-screen buttons (lower-right corner of the webpage):

    • ↳ If this is your first run, click the Start Fresh (No File) button.
    • ↳ If you’re re-running this script, click the Load Existing Receipt File button.
      • ↳ From here you can select your existing Costco Receipt file (eg: Costco_In-Warehouse_Receipts_123456789.json)

image

 * Console logging showing the output after clicking the **`Start Fresh (No File)`** button press

image


⚠️ Privacy & Liability Disclaimer


🤓 For Advanced Users

The Merging Logic

The script uses a composite key of MembershipNumber + TransactionBarcode to identify unique receipts.

  1. Ingest: Loads the JSON provided by the user.
  2. Fetch: Scrapes the API for the last 3 years of data.
  3. Merge: Combines arrays.
  4. Dedupe: Iterates through the merged list. If a conflict is found, it prioritizes the existing local data (assuming you may have manually edited it), though usually, the data is identical.

JSON Structure

Reviewing the data, it appears;

Receipts Are Ledger Documents

Multiple Economic Roles

Coupons Exist in Parallel Forms

Item Numbers Are Contextual

Quantity & Price Are Non‑Semantic

Refunds Are First‑Class Transactions

Below is an example of a single Sales Receipt (Refund Receipts have a similar layout):

Click to expand... ```json [ { "documentType": "WarehouseReceiptDetail", "receiptType": "In-Warehouse", "membershipNumber": "123456789012", "transactionType": "Sales", "transactionDateTime": "2023-10-25T14:30:00", "transactionDate": "2023-10-25", "warehouseShortName": "SEATTLE", "warehouseNumber": 1, "warehouseName": "SEATTLE", "warehouseAddress1": "4401 4TH AVE S", "warehouseAddress2": null, "warehouseCity": "SEATTLE", "warehouseState": "WA", "warehouseCountry": "US", "warehousePostalCode": "98134-2311", "companyNumber": 4, "transactionBarcode": "21000100602972310251430", "totalItemCount": 10, "instantSavings": 21, "subTotal": 101.66, "taxes": 3.77, "total": 105.43, "registerNumber": 6, "transactionNumber": 297, "operatorNumber": 601, "itemArray": [ { "itemNumber": "17120", "itemUPCNumber": 0, "itemDescription01": "GYRO KIT", "itemDescription02": "GREEK STYLE", "frenchItemDescription1": "PITA GYRO", "frenchItemDescription2": "À LA GRECQUE", "itemIdentifier": null, "itemDepartmentNumber": 63, "transDepartmentNumber": 63, "itemUnitPriceAmount": 13.49, "unit": 1, "amount": 21.75, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1715281", "itemUPCNumber": 0, "itemDescription01": "TPD/17120", "itemDescription02": null, "frenchItemDescription1": "PITA GYRO", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 63, "transDepartmentNumber": 63, "itemUnitPriceAmount": 0, "unit": -1, "amount": -3, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1661969", "itemUPCNumber": 0, "itemDescription01": "BULGOGI BOWL", "itemDescription02": null, "frenchItemDescription1": "BOEUF BULGOGI 6X229G P99", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 16.99, "unit": 1, "amount": 16.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1715228", "itemUPCNumber": 0, "itemDescription01": "TPD/1661969", "itemDescription02": null, "frenchItemDescription1": "BOEUF BULGOGI 6X229G P99", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 0, "unit": -1, "amount": -4, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1363537", "itemUPCNumber": 0, "itemDescription01": "CREPES", "itemDescription02": "20 COUNT P400 ECSL45", "frenchItemDescription1": "LA BOULANGERE CREPES 640G", "frenchItemDescription2": "COMPTE DE 20 P400 ECSL45", "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 11.99, "unit": 1, "amount": 11.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1716231", "itemUPCNumber": 0, "itemDescription01": "TPD/1363537", "itemDescription02": null, "frenchItemDescription1": "LA BOULANGERE CREPES 640G", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 0, "unit": -1, "amount": -3, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1667742", "itemUPCNumber": 0, "itemDescription01": "RUFFLES KFC", "itemDescription02": "525G P126", "frenchItemDescription1": "RUFFLES CHIPS SAVEUR PFK", "frenchItemDescription2": "525G P126", "itemIdentifier": null, "itemDepartmentNumber": 12, "transDepartmentNumber": 12, "itemUnitPriceAmount": 5.99, "unit": 1, "amount": 5.99, "taxFlag": "Y", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1696237", "itemUPCNumber": 0, "itemDescription01": "RUFFLES REG", "itemDescription02": "612 G P96", "frenchItemDescription1": "RUFFLES NATURE", "frenchItemDescription2": "612 G P96", "itemIdentifier": null, "itemDepartmentNumber": 12, "transDepartmentNumber": 12, "itemUnitPriceAmount": 5.99, "unit": 1, "amount": 5.99, "taxFlag": "Y", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1448167", "itemUPCNumber": 0, "itemDescription01": "PUFF PASTRY", "itemDescription02": "6T3H 216P 792G", "frenchItemDescription1": "BOUCHES FEUILLETTEES", "frenchItemDescription2": "6T3H 216P 792G", "itemIdentifier": null, "itemDepartmentNumber": 18, "transDepartmentNumber": 18, "itemUnitPriceAmount": 11.99, "unit": 1, "amount": 11.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1714123", "itemUPCNumber": 0, "itemDescription01": "TPD/1448167", "itemDescription02": null, "frenchItemDescription1": "BOUCHES FEUILLETTEES", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 18, "transDepartmentNumber": 18, "itemUnitPriceAmount": 0, "unit": -1, "amount": -3, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1076115", "itemUPCNumber": 0, "itemDescription01": "MINI BELLAS", "itemDescription02": "680G / 1.5 LB", "frenchItemDescription1": "CHAMPIGNONS MINI BELLA", "frenchItemDescription2": "PRODUIT DU CANADA", "itemIdentifier": null, "itemDepartmentNumber": 65, "transDepartmentNumber": 65, "itemUnitPriceAmount": 5.99, "unit": 1, "amount": 5.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "380444", "itemUPCNumber": 0, "itemDescription01": "SWIFFER DRY", "itemDescription02": "T56H3 80207786 P168", "frenchItemDescription1": "SWIFFER LINGES JETABLES", "frenchItemDescription2": "80 PK P168", "itemIdentifier": null, "itemDepartmentNumber": 14, "transDepartmentNumber": 14, "itemUnitPriceAmount": 21.99, "unit": 1, "amount": 21.99, "taxFlag": "Y", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1713164", "itemUPCNumber": 0, "itemDescription01": "TPD/SWIFFER", "itemDescription02": null, "frenchItemDescription1": "SWIFFER LINGES JETABLES", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 14, "transDepartmentNumber": 14, "itemUnitPriceAmount": 0, "unit": -1, "amount": -5, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "357576", "itemUPCNumber": 0, "itemDescription01": "APPLE CIDER", "itemDescription02": "ECSL35", "frenchItemDescription1": "JUS DE POMME 3L C6", "frenchItemDescription2": "ECSL35", "itemIdentifier": null, "itemDepartmentNumber": 17, "transDepartmentNumber": 17, "itemUnitPriceAmount": 4.99, "unit": 1, "amount": 4.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1621817", "itemUPCNumber": 0, "itemDescription01": "GARDEN SOUP", "itemDescription02": "SOUP 6X400ML P220", "frenchItemDescription1": "ALLEN SUPER GARDENHARVEST", "frenchItemDescription2": "SOUP 6X400ML P220", "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 14.99, "unit": 1, "amount": 14.99, "taxFlag": "N", "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": 10, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null }, { "itemNumber": "1712143", "itemUPCNumber": 0, "itemDescription01": "TPD/1621817", "itemDescription02": null, "frenchItemDescription1": "ALLEN SUPER GARDENHARVEST", "frenchItemDescription2": null, "itemIdentifier": null, "itemDepartmentNumber": 13, "transDepartmentNumber": 13, "itemUnitPriceAmount": 0, "unit": -1, "amount": -3, "taxFlag": null, "refundFlag": null, "voidFlag": null, "merchantID": null, "entryMethod": null, "fuelUnitQuantity": null, "fuelUomCode": null, "fuelUomDescription": null, "fuelUomDescriptionFr": null, "fuelGradeCode": null, "fuelGradeDescription": null, "fuelGradeDescriptionFr": null } ], "couponArray": [ { "couponNumber": "1715228", "upcnumberCoupon": "410099692305", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -4, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null }, { "couponNumber": "1714123", "upcnumberCoupon": "410099695061", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -3, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null }, { "couponNumber": "1713164", "upcnumberCoupon": "410099699236", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -5, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null }, { "couponNumber": "1716231", "upcnumberCoupon": "410099689244", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -3, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null }, { "couponNumber": "1715281", "upcnumberCoupon": "410099692114", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -3, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null }, { "couponNumber": "1712143", "upcnumberCoupon": "410099702981", "associatedItemNumber": "0", "unitCoupon": -1, "amountCoupon": -3, "taxflagCoupon": null, "voidflagCoupon": null, "refundflagCoupon": null } ], "subTaxes": { "tax1": null, "tax2": null, "tax3": null, "tax4": null, "aTaxPercent": 13, "aTaxLegend": "HST", "aTaxAmount": 3.77, "aTaxPrintCode": null, "aTaxPrintCodeFR": null, "aTaxIdentifierCode": null, "bTaxPercent": null, "bTaxLegend": null, "bTaxAmount": null, "bTaxPrintCode": null, "bTaxPrintCodeFR": null, "bTaxIdentifierCode": null, "cTaxPercent": null, "cTaxLegend": null, "cTaxAmount": null, "cTaxIdentifierCode": null, "dTaxPercent": null, "dTaxLegend": null, "dTaxAmount": null, "dTaxPrintCode": null, "dTaxPrintCodeFR": null, "dTaxIdentifierCode": null, "uTaxLegend": "GST/HST", "uTaxAmount": null, "uTaxableAmount": null }, "tenderArray": [ { "tenderTypeCode": "062", "tenderSubTypeCode": null, "tenderTypeName": "Master Card", "tenderTypeNameFr": null, "tenderDescription": "Master Card", "amountTender": 105.43, "displayAccountNumber": "1234", "sequenceNumber": null, "approvalNumber": null, "responseCode": null, "transactionID": null, "merchantID": null, "entryMethod": null, "tenderAcctTxnNumber": null, "tenderAuthorizationCode": null, "tenderEntryMethodDescription": null, "walletType": null, "walletId": null } ] } ] ```

## 🤝 Contributing

Found a bug? Want to add new data fields?