Ask a US online store what its revenue was last month and you'll often get three numbers: one from the store platform, one from the finance system and one from GA4. Sales tax and shipping are usually why they differ.

In most of Europe, prices are shown with VAT included, so the price a customer sees is the price that gets tracked. In the US, sales tax is added at checkout, at a rate that depends on where the order is going. That one difference catches out a lot of GA4 setups.

What Google says.

Google's reference for the GA4 purchase event is clear. The value parameter should be the sum of each item's price times its quantity, and shouldn't include shipping or tax. Those have parameters of their own, shipping and tax.

So a correct purchase looks like this: value is what the products sold for after discounts, tax is the sales tax charged, and shipping is the delivery charge.

Why it matters more in the US.

  • Tax varies by order. The same basket costs a different amount in Oregon, which has no state sales tax, than in a city with a high combined rate. If tax is inside value, revenue by state or by campaign is distorted by where customers live, not by what they bought.
  • Tax isn't your money. It's collected for the states. Revenue that includes it overstates what the business earned, and so does return on ad spend.
  • Free shipping thresholds move averages. When shipping sits inside value, a change to your free shipping offer looks like a change in what customers spend.

Common mistakes.

  1. Sending the order total as value. The checkout's grand total includes tax and shipping. It's the easiest number to grab, so it's the most common error.
  2. Items that don't add up. The item prices in the items array should add up to value. When they don't, item revenue and purchase revenue disagree in reports.
  3. Different rules on different routes. One payment method or a subscription checkout sends a different total from the main one.
  4. Missing currency. Without currency: "USD", revenue can be dropped or misreported.
  5. Google Ads sent a different figure. If Google Ads conversions carry the grand total while GA4 carries the net figure, the two will never agree, and bidding learns from the inflated one.

Matching your platform's reports.

Store platforms usually show several revenue figures: gross sales, net sales after discounts and returns, and a total that adds tax and shipping. Decide which one GA4 should match, write it down, and compare against that one only.

GA4 will still never match to the cent. Some visitors decline analytics cookies, some block scripts, and refunds reach GA4 only if you send them.

A steady gap of a few per cent is normal. A gap that moves around, or one where GA4 is higher than the store, points to a tracking fault, such as purchases counted twice. The guide to GA4 revenue not matching Shopify or Stripe walks through the checks.

What to check.

  1. Place a test order to an address in a state with sales tax, and look at the purchase event in GA4's DebugView.
  2. Check that value equals the items' total, with tax and shipping sent separately.
  3. Repeat for each payment method and checkout type.
  4. Check that Google Ads conversion values use the same definition.
  5. Compare a week of GA4 revenue with the matching figure from your platform.

Marc Alexander sets up ecommerce tracking for US businesses, and the GA4 for ecommerce page covers what's involved. The GA4 mini audit checks your purchase data against your store.