Shopee SG Chargeback Portal

โ€“
Total Cases
โ€“
Unique Checkouts
โ€“
Screenshots Uploaded
โ€“
Reports Ready

Cases from Google Sheet

 Loading cases...
Chargeback Ref NoCheckout IDOrder IDOrder SNBuyer ID Buyer UsernameAddressTypeCard Device IDGrand TotalPay Date

Upload Screenshots

Upload a ZIP of your output\ folder, select individual PNG files, or select a folder. All methods can be used together โ€” files accumulate.

๐Ÿ“
Drag & drop ZIP file or PNG files here

Or use the buttons below

Reports

๐Ÿ“– User Guide

Shopee SG Chargeback Automation Portal

โš ๏ธ Sessions expire regularly. Always run check_sessions.py before run_all.py or run_all_multi.py to avoid partial or missing screenshots.

Section 1 โ€” Prerequisites

What to Install

Scripts Required

Place all scripts + fleet-rhino-499805-i8-03adf5832bca.json in the same folder. Session JSONs are saved to the same folder automatically.

ScriptWhat it does
run_all.pyMain script โ€” reads all cases from Google Sheet, runs all 4 portals sequentially per order, saves screenshots to output\{order_id}\
run_all_multi.pyFaster version โ€” same as run_all.py but runs all 4 portals in parallel simultaneously. Recommended for large batches (10+ orders)
check_sessions.pyChecks whether all 4 portal sessions are valid or expired, tells you which ones need renewal
save_session.pySaves session for order-admin.shopee.sg โ†’ shopee_session.json
save_session_dms.pySaves session for dms.cs.shopee.sg โ†’ dms_session.json
save_session_user_admin.pySaves session for admin.user.shopee.io โ†’ user_admin_session.json
save_session_antifraud.pySaves session for antifraud.admin.shopee.io โ†’ antifraud_session.json
status_timeline.pyIndividual retry script โ€” status timeline screenshot for one order
dms_order_id.pyIndividual retry script โ€” DMS buyer rating screenshot for one order
admin_user.pyIndividual retry script โ€” address binding screenshot for one order
antifraud_user.pyIndividual retry script โ€” device binding screenshot for one order
antifraud_cc.pyIndividual retry script โ€” credit card binding screenshot for one order

Section 2 โ€” How Each Portal Works

Understanding the flow helps diagnose issues when screenshots are missing or incorrect.

๐Ÿ›’ order-admin.shopee.sg โ€” Status Timeline
  • Navigates to order details โ†’ Status & Timeline tab
  • Screenshots from page top down to the last relevant row in Order and Logistic History
  • Red box on: Order ID, timeline columns (Delivered + Buyer Confirmed), and key history rows
  • Completed orders: highlights from COMPLETED down to logistics_delivery_done
  • Cancelled orders: highlights only the CANCEL_COMPLETED row โ€” no timeline highlight
๐Ÿ’ฌ dms.cs.shopee.sg โ€” Buyer Rating
  • Navigates to order info page
  • Checks if Order Ratings field exists โ€” skips silently if not found
  • Clicks View Detail to open the ratings popup
  • Checks if Buyer Rating tab has actual data (not "No Result") โ€” skips if empty. Note: Seller Rating being empty does not trigger a skip โ€” only Buyer Rating is checked
  • Screenshots General Info card + ratings popup, red box on Order ID + Order SN
๐Ÿ‘ค admin.user.shopee.io โ€” Address Binding
  • Navigates to buyer's user detail page โ†’ Addresses tab
  • Clicks Unmask All to reveal full address data
  • Expands the table to full width (it's wider than the visible viewport)
  • Filters by address using the column search โ€” address is chosen based on is_bsc:
      โ€ข is_bsc = 1 (self-collection) โ†’ uses default_delivery_address
      โ€ข is_bsc = 0 (doorstep) โ†’ uses buyer_shipping_address
  • โš ๏ธ Address filter is space-sensitive โ€” trailing spaces are preserved intentionally. Do not trim addresses in the sheet
  • Red box on: user ID header + matched address row
๐Ÿ” antifraud.admin.shopee.io โ€” Device & Credit Card Binding
Device tab:
  • Searches by buyer ID โ†’ Entity Linkage โ†’ Device tab
  • Fast path: if the target device is already pre-expanded with shared users loaded, proceeds immediately (most orders)
  • Fallback path: if fast path times out (10s), collapses any pre-expanded device rows, then explicitly expands the target device and waits for shared users to load
  • Screenshots device row + Shared Users table, cropped just above Switch Account Users
  • Red box on device row + matched buyer row. Other shared users are blurred

Credit Card tab:
  • Stays on same page, switches to Credit Card tab
  • Clicks eye icon to unmask all card numbers
  • Finds the target card row by card number, expands it to reveal Shared Users
  • Red box on card row + matched buyer rows. Other shared users are blurred

Section 3 โ€” Step by Step

1

Check Sessions

Before running anything, verify all sessions are valid:

python "C:\Users\giaing.yap\Desktop\playwright test\check_sessions.py"

For any EXPIRED session, run the corresponding save script and log in manually:

python "C:\Users\giaing.yap\Desktop\playwright test\save_session_dms.py"

A browser window will open โ€” log in, come back to the terminal, press Enter. Session is saved next to the script.

2

Run Screenshots

Once all sessions are OK, run the main script. Use run_all_multi.py for larger batches:

python "C:\Users\giaing.yap\Desktop\playwright test\run_all_multi.py"

Or the sequential version:

python "C:\Users\giaing.yap\Desktop\playwright test\run_all.py"

Screenshots are saved to:

output\
  โ””โ”€โ”€ {order_id}\
        โ”œโ”€โ”€ {checkout_id}_{order_id}_status_timeline.png
        โ”œโ”€โ”€ {checkout_id}_{buyer_id}_admin_user.png
        โ”œโ”€โ”€ {checkout_id}_{buyer_id}_antifraud_device.png
        โ”œโ”€โ”€ {checkout_id}_{buyer_id}_antifraud_cc.png
        โ””โ”€โ”€ {checkout_id}_{order_id}_dms_rating.png  โ† only if buyer rating exists

At the end, check the summary for any skipped orders:

============================================================
COMPLETED WITH 2 SKIP(S):
  [SKIP] antifraud_device | order 232225751202187 | Timeout exceeded
  [SKIP] antifraud_device | order 234430692270636 | Timeout exceeded
============================================================
3

Upload Screenshots

Go to the Upload Screenshots tab. Three options โ€” all accumulate:

  • Upload ZIP โ€” zip the output\ folder contents and upload at once. Recommended.
  • Select PNG Files โ€” pick individual PNG files
  • Select Folder โ€” pick a single order ID subfolder
4

Generate & Review Reports

Go to the Reports tab:

  • Click โšก Generate per case or โšก Generate Selected for all at once
  • Click ๐Ÿ‘ Preview to review before exporting
  • If anything looks wrong, fix the data in the Google Sheet, refresh the Cases tab, and regenerate
  • Use โฌ‡ DOCX for an editable Word file if manual edits are needed
5

Package for Bank

Select all approved cases and click ๐Ÿ“ฆ Package for Bank. A ZIP named {YYYYMMDD_HHMM}.zip will download:

{YYYYMMDD_HHMM}.zip
  โ””โ”€โ”€ {chargeback_ref_no}/
        โ”œโ”€โ”€ {chargeback_ref_no}.pdf
        โ”œโ”€โ”€ address_binding_time.pdf
        โ”œโ”€โ”€ card_binding_time.pdf
        โ”œโ”€โ”€ device_binding_time.pdf
        โ”œโ”€โ”€ POD_1 Order ID {order_id}.pdf
        โ”œโ”€โ”€ POD_2 Order ID {order_id}.pdf    โ† if multiple orders
        โ””โ”€โ”€ Rating_1.pdf                     โ† only if buyer rating exists

Note: / in chargeback ref numbers is replaced with - in folder/file names.

๐Ÿ” Handling Skipped Orders

If the summary shows skipped orders, use the individual scripts to retrigger only the failed portal. Each script reads all needed data from the Google Sheet automatically โ€” just pass the order ID:

python "C:\Users\giaing.yap\Desktop\playwright test\antifraud_user.py" 232225751202187
python "C:\Users\giaing.yap\Desktop\playwright test\antifraud_cc.py" 232225751202187
python "C:\Users\giaing.yap\Desktop\playwright test\status_timeline.py" 232225751202187
python "C:\Users\giaing.yap\Desktop\playwright test\dms_order_id.py" 232225751202187
python "C:\Users\giaing.yap\Desktop\playwright test\admin_user.py" 232225751202187

To retrigger multiple orders at once for the same portal:

python "C:\Users\giaing.yap\Desktop\playwright test\antifraud_user.py" 232225751202187 234430692270636

Output saves directly to output\{order_id}\ with the correct filename, ready for upload to the portal.