Update — confirmed with additional diagnostics
Since posting, we added temporary diagnostic logging to the app and reproduced the issue on the affected device. Sharing the findings in case they help others hitting the same problem, and to add data for Apple's investigation:
Both the legacy API and StoreKit 2 return the same wrong value
We logged SKPaymentQueue.default().storefront (StoreKit 1) and await Storefront.current (StoreKit 2) side by side, at the same point in the app, on the same TestFlight build/session:
StoreKit 1: countryCode = USA, identifier = 143462
StoreKit 2: countryCode = USA, identifier = 143462
So this is not limited to the deprecated API — Storefront.current shows the identical wrong result on the affected device.
The storefront identifier is correct; only countryCode is wrong
143462 is Apple's storefront identifier for Japan (JP) — and it matches exactly what a normal, unaffected device on the same build reports. So the storefront the device is actually associated with is correctly Japan. Only the countryCode string field is wrong (USA instead of JPN), on both APIs, at the same time.
This produces real USD product data, not just a wrong label
SKProduct.priceLocale / Product (StoreKit 2) for the same product IDs come back with currency = USD, locale = en_US@currency=USD, e.g. a subscription priced at price = 10.99, localizedPrice = "$10.99". On an unaffected device with the same build, the same product IDs return currency = JPY, localizedPrice = "¥1,200". So this isn't only a diagnostic-field oddity — the product catalog itself is being resolved against the wrong storefront, and the app displays USD as a direct consequence.
Environment
Affected device: iOS 18.7.2, TestFlight build
Unaffected device (same build, same app version): correct JPN / JPY on both APIs
Both the "Media & Purchase" Apple Account and the App Store Connect sandbox tester are set to Japan and have not been changed
Related report
This looks consistent with another open report: Storefront Country Code Inaccuracy on iOS 18 (thread 787109) (https://developer.apple.com/forums/thread/787109), which describes the same iOS 18+ regression across both StoreKit 1 and StoreKit 2, and references FB20541419 for a similar case (French account unexpectedly returning the US storefront).
We're happy to share full diagnostic logs (product IDs, prices, storefront identifiers/country codes at each step from product fetch through purchase sheet) if that would help Apple engineering reproduce this.