How to Check GST-Inclusive Prices in Indian Product Page Screenshots
Learn what a product screenshot can prove about GST and MRP, how to calculate tax included in a known price, and how to verify the invoice.
Short answer: For a pre-packaged commodity covered by India’s Legal Metrology rules, the retail sale price (RSP), commonly shown as MRP, is inclusive of all taxes. CBIC says GST should not be charged over the declared package RSP. But a screenshot alone does not establish that every displayed amount is MRP, which GST rate applies, how the seller calculated tax, or what the buyer ultimately paid. Identify the amount and its label, record the listing context, and compare it with the invoice when available. ScreenshotNeo can capture a product page for that record.
1. Understand what the screenshot shows
Do not treat every number on a product page as the package MRP. A screenshot might show a sale price, a crossed-out reference price, a selected variant’s price, a delivery charge, or a checkout total. The packaged-commodity rule applies within its scope and exceptions; it does not automatically give every subtotal or online listing amount the legal status of package MRP. The Department of Consumer Affairs’ 2017 amendment defines retail sale price as the maximum price at which the commodity may be sold to the consumer, inclusive of all taxes. Check the current consolidated rules and any relevant amendments for a specific product or dispute. Department of Consumer Affairs amendment notification
| Visible label or amount | What to check |
|---|---|
| MRP / RSP | Is this the retail sale price declared on the package, and is the item a covered pre-packaged commodity? |
| Offer price / sale price | Is it a discounted transaction price? Do not assume it is the package MRP or apply the package-MRP rule to it without context. |
| Tax or GST line | Does the page say tax is included or added? Record its wording and which base amount the tax line refers to. |
| Delivery / handling | Record separately. These charges can change the amount due without changing the package MRP. |
| Order total | Check selected item, quantity, discounts, shipping, and any checkout adjustments. A product-page screenshot may not show this final amount. |
CBIC’s GST FAQ says the retail sale price declared on a package is inclusive of GST. The Department of Consumer Affairs FAQ similarly says GST is included in MRP and is not to be charged over it. These are useful official guidance, but the Department FAQ discusses historical MRP guidance; check current consolidated rules for a product-specific legal conclusion. CBIC GST Rates FAQs · Department of Consumer Affairs GST-related FAQs
2. Preserve the listing context
A screenshot is evidence of what appeared on a page at a particular capture, not proof by itself of the seller’s tax treatment or the exact amount paid. Before drawing a conclusion, preserve or note:
- Page URL and capture date and time, including time zone if known.
- Seller name and the product title, description, and quantity.
- Selected size, model, color, pack, or other variant.
- Currency and each visible amount, retaining its label: MRP, offer price, tax, delivery, or total.
- Crossed-out MRP, discount or coupon wording, and any explicit tax-inclusive or tax-extra statement.
- Delivery location or PIN code, and whether login, a coupon, or checkout was required to see the amount.
- Any visible shipping or handling charge and whether the capture shows a product page, cart, or final order page.
If the screenshot does not show one of these details, mark it as unknown. Do not infer the selected variant, seller, delivery location, or final payable amount from a partial capture.
3. Check whether GST appears to be added over package MRP
- Confirm that the item is a pre-packaged commodity within the relevant Legal Metrology rules and check applicable exceptions or amendments.
- Identify the package’s declared RSP/MRP, if the screenshot or package evidence shows it. Keep it separate from the offer price and checkout total.
- Read the displayed tax wording and compare the amounts. For covered package MRP, CBIC consumer guidance says GST is included and should not be charged over that declared MRP.
- Record a potential discrepancy precisely: quote the displayed labels and amounts, and say what the screenshot does and does not show. Do not infer a seller’s tax calculation from a price image alone.
- Where possible, compare with the invoice and the underlying product classification and applicable rate for the transaction date.
Rates depend on the goods’ classification and applicable rate entries. CBIC’s footwear FAQ gives a specific example involving an 18% rate when footwear RSP exceeds ₹500 per pair; that threshold and rate are not a general rule for other products. The same FAQ distinguishes package RSP from transaction value: the RSP can determine the rate threshold in that example, while GST is payable on transaction value. Do not generalize that example to other goods. CBIC GST Rates FAQs
4. Calculate tax embedded in a known GST-inclusive amount
If the amount is explicitly GST-inclusive and the applicable rate has been established independently, CGST Rule 35 gives this calculation:
Embedded tax = inclusive value × tax rate ÷ (100 + tax rate)
For example, at an independently known 18% rate, an inclusive amount of ₹1,180 contains ₹180 tax: ₹1,180 × 18 ÷ 118 = ₹180. The pre-tax value is ₹1,000. This is an arithmetic illustration only. The screenshot cannot establish that an unspecified product is taxed at 18%, and the calculation does not determine whether the amount shown is MRP, an offer price, or the taxable transaction value.
CGST Rules, Rule 35 (CBIC PDF)
5. Compare with the invoice
A tax invoice provides stronger corroboration of the transaction’s tax details than a product-page screenshot. Compare the supplier name and GSTIN, invoice date, goods description and quantity, taxable value, tax rate, tax amount, and total. Check that the invoice item corresponds to the same seller and selected product or variant shown in the screenshot. CBIC lists invoice particulars in its guidance on tax invoices, credit notes, and debit notes. CBIC: Tax Invoice, Credit and Debit Notes
An exempt supply or a supply by a composition taxpayer may be documented with a bill of supply, which has different tax details. An absent GST line on a document does not by itself prove a pricing error; establish the supplier’s and supply’s circumstances before reaching that conclusion. For a dispute, verify the applicable classification, rate notification, jurisdiction or delivery location, seller identity, and rules in force on the invoice date.
6. Capture a product page with a repeatable browser workflow
For a record you may need to review later, capture the exact product URL after setting the relevant variant and delivery location. Keep the original screenshot and its capture time; annotate a separate copy if you need to point out labels. A screenshot can preserve visible page evidence, but it cannot recover content hidden behind login, establish the correct tax classification, or prove what checkout ultimately charged.
Browser capture with Playwright
The following runnable Python example opens a page, waits for it to render, and saves a full-page screenshot. Install Playwright and its Chromium browser first. Set the URL to the listing you are documenting. Use an authorized session only if the page requires login; do not put credentials into source code or a shared capture record.
python -m pip install playwright
python -m playwright install chromium
import asyncio
from pathlib import Path
from playwright.async_api import async_playwright
URL = "https://example.com/product"
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page(viewport={"width": 1440, "height": 1000}, device_scale_factor=1)
response = await page.goto(URL, wait_until="domcontentloaded", timeout=60000)
await page.locator("body").wait_for(state="visible", timeout=15000)
await page.screenshot(path="product-page.png", full_page=True)
print({
"url": page.url,
"http_status": response.status if response else None,
"title": await page.title(),
"screenshot": str(Path("product-page.png").resolve()),
})
await browser.close()
asyncio.run(main())
Replace the example URL with the product page. If a key price appears only after choosing a variant or location, make that selection before capture and record it separately. For an evidence record, also save the capture timestamp and note the browser viewport. Avoid modifying the page or hiding overlays if the purpose is to document exactly what a visitor saw.
7. Or skip the browser setup
Make one request for a screenshot with ScreenshotNeo. See the ScreenshotNeo API documentation for available parameters.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', new Uint8Array(await res.arrayBuffer()));
Change the example target URL to the product listing you need to document. ScreenshotNeo removes cookie and consent banners, newsletter popups, and chat widgets before the shot; for strict evidence capture, check whether those page changes fit your purpose and turn off individual steps when needed. Bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is on every plan. Sign up for 1,000 free screenshots a month, no card required.
8. Troubleshooting capture and interpretation
| Problem | Likely cause | What to do |
|---|---|---|
| Screenshot shows a loading skeleton or missing price | The listing has not rendered its client-side content yet, or the amount requires a selection. | Wait for a specific price element or make the variant/location selection before capture. Record the selection. |
| Screenshot shows a CAPTCHA, bot check, or access-denied page | The site is restricting automated access or the session. | Do not treat the resulting image as a product listing. Use an authorized browser session or another permitted method and label the failed capture. |
| Price differs from another screenshot | Capture times, sellers, variants, location, stock, discounts, or shipping context may differ. | Compare timestamps and all visible context; preserve both captures instead of assuming one is definitive. |
| GST seems to be added above a number marked MRP | The amount may be an offer price, subtotal, or another line rather than package MRP; the item may also fall outside the assumed rule’s scope. | Verify package status and current rules, inspect the exact labels, and compare the invoice before concluding. |
| Invoice tax does not match a quick calculation | The rate, taxable base, classification, supply details, or transaction value may differ from the assumptions. | Verify the applicable rate and invoice line items. Use Rule 35 arithmetic only when the amount is known to include tax at a known rate. |
| Browser capture times out | The page or a third-party resource may be slow or never reach the chosen load condition. | Use a bounded timeout and a suitable readiness condition, such as a visible price selector, instead of waiting indefinitely for every network connection to stop. |
9. Performance, reliability, and recordkeeping
- Wait for the evidence you need. Waiting for a visible product title or price is usually more targeted than requiring every network request to finish; some pages keep analytics connections open.
- Keep capture settings consistent. Use the same viewport and browser workflow when comparing pages. Record locale and delivery context because displayed prices can depend on them.
- Retain provenance. Store the original image with URL, capture time, seller, selected variant, location context, and any known login or coupon state. A screenshot without those details is harder to interpret.
- Separate observation from conclusion. State what pixels and labels show, then separately state what the invoice and applicable rules establish. A static capture can be incomplete or stale.
- Control retries and cost. Browser automation consumes compute and can repeatedly load third-party assets. Set timeouts, avoid unnecessary recaptures, and retain the first capture when it is adequate. ScreenshotNeo offers caching with a TTL you choose; check its response headers to distinguish billed clean shots from page verdicts and cache hits.
10. Frequently asked questions
Is GST included in every price shown on an Indian shopping site?
No universal conclusion follows from a product-page amount. The package MRP rule applies to covered pre-packaged commodities; identify whether the amount is actually package RSP/MRP and what other charges or adjustments it represents.
Can I tell the GST rate from the screenshot?
Usually not. A price image does not establish product classification or the applicable rate. Verify the goods and the rate entry in force for the transaction.
Does a screenshot prove that I paid the amount shown?
No. It records what appeared in the captured page. Use the order confirmation, receipt, or invoice to corroborate the final transaction.
What if the listing has no tax breakdown?
Record that the breakdown is not visible. Do not reverse-engineer the rate unless both the inclusive amount and applicable rate are independently known.
Official references
- CBIC GST Rates FAQs — includes the footwear RSP example and GST guidance.
- CGST Rules, Rule 35 (CBIC PDF) — tax-inclusive value calculation.
- CBIC invoice guidance — tax invoice particulars.
- Department of Consumer Affairs GST FAQs — consumer guidance on GST and MRP.
- Department of Consumer Affairs 2017 amendment notification — RSP definition.


