Live App Testing builds on VegaOS and FireOS return INVALID_SKU when initiating Amazon IAP purchase

:backhand_index_pointing_right: Bug Description


1. Summary

VegaOS and FireOS builds distributed through Live App Testing cannot initiate an in-app subscription purchase. The Amazon purchase screen does not open, and the Amazon IAP SDK returns PurchaseResponse.RequestStatus.INVALID_SKU.

This prevents testing purchases of Surfshark subscription on Live App Testing builds.

App Name: Surfshark
App Link on Amazon Appstore (found through Developer Console → Actions column in App List → View on Amazon.com): Surfshark VPN - Fast, Secure & Private. Best VPN for FireOS & Fire TV. - App on Amazon Appstore

Bug Severity
Select one that applies

  • Impacts operation of app
  • Blocks current development
  • Improvement suggestion
  • Issue with documentation (If selected, please share the doc link and describe the issue)
  • Other

2. Steps to Reproduce

  1. Configure the Surfshark subscription SKU in the Amazon Developer Console.

  2. Upload a VegaOS or FireOS build to Live App Testing.

  3. Install the build through Live App Testing.

  4. Launch Surfshark.

  5. Create or sign in to an account without an active subscription.

  6. Open the subscription plan-selection screen.

  7. Select a plan and initiate the purchase.

  8. The app uses Amazon IAP SDK methods equivalent to:

    PurchasingService.getProductData(setOf(configuredSku))
    PurchasingService.purchase(configuredSku)
    

3. Observed Behavior

The Amazon purchase screen does not open. After several seconds, the SDK invokes onPurchaseResponse with:

PurchaseResponse.RequestStatus.INVALID_SKU
The app then displays “Payment couldn’t be completed.”

The attached FireOS diagnostics show that this is consistently reproducible:

AmazonPayTv: onProductDataResponse, status=SUCCESSFUL, priceCount=0
AmazonPayTv: launching Amazon native purchase UI
AmazonPayTv: onPurchaseResponse, status=INVALID_SKU
Amazon payment flow failed - INVALID_SKU
The same behavior occurs in VegaOS Live App Testing builds.

4. Expected Behavior

The configured subscription SKU should resolve in Live App Testing, and calling PurchasingService.purchase() should open the Amazon purchase screen so the tester can complete the test transaction.

4.a Possible Root Cause & Temporary Workaround
The product-data request reports SUCCESSFUL but returns no product prices (priceCount=0). A subsequent purchase request then returns INVALID_SKU.

This suggests that the SKU is not being resolved or associated with the Live App Testing build, despite being configured in the Developer Console. Possible areas include SKU availability, app/SKU association, marketplace configuration, or Live App Testing catalog propagation.

No temporary workaround has been found. Retrying the purchase and reinstalling/relaunching the build produce the same result.

4.a Possible Root Cause & Temporary Workaround

The product-data request reports SUCCESSFUL but returns no product prices (priceCount=0). A subsequent purchase request then returns INVALID_SKU.

This suggests that the SKU is not being resolved or associated with the Live App Testing build, despite being configured in the Developer Console. Possible areas include SKU availability, app/SKU association, marketplace configuration, or Live App Testing catalog propagation.

No temporary workaround has been found. Retrying the purchase and reinstalling/relaunching the build produce the same result.

5. Logs or crash report

VegaOS logs — sanitized relevant excerpt
Device hostname, UUIDs, process IDs and unrelated events removed.

-– Purchase attempt 1 —

Jul 30 11:09:54.071 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted
Jul 30 11:09:54.100 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted
Jul 30 11:09:54.585 PackageManager: Found default component ‘com.amazon.iap.core.ui’
Jul 30 11:09:54.630 MessageRouter: Launch requested for orpheus://com.amazon.iap.core.ui
Jul 30 11:09:54.631 LifecycleManager: Processing launch request for com.amazon.iap.core.ui
Jul 30 11:09:54.773 LifecycleManager: Bound com.amazon.iap.core.ui to parent com.surfshark.vpnclient.android.main
Jul 30 11:09:57.084 LifecycleManager: com.amazon.iap.core.ui execution completed
Jul 30 11:09:57.084 LifecycleManager: Dismissing bound component com.amazon.iap.core.ui
Jul 30 11:09:57.084 LifecycleManager: Unbound com.amazon.iap.core.ui from parent application
Jul 30 11:09:57.187 LifecycleManager: com.amazon.iap.core.ui stopped
Jul 30 11:09:57.239 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted

-– Purchase attempt 2 —

Jul 30 11:10:01.152 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted
Jul 30 11:10:01.596 PackageManager: Found default component ‘com.amazon.iap.core.ui’
Jul 30 11:10:01.621 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted
Jul 30 11:10:01.624 MessageRouter: Launch requested for orpheus://com.amazon.iap.core.ui
Jul 30 11:10:01.625 LifecycleManager: Processing launch request for com.amazon.iap.core.ui
Jul 30 11:10:01.760 LifecycleManager: Bound com.amazon.iap.core.ui to parent com.surfshark.vpnclient.android.main
Jul 30 11:10:03.194 DataStoreDaemon: SecurityManager ERROR: Privilege ‘com.amazon.venezia.datastore.privilege.AppCatalogDB.write’ not granted
Jul 30 11:10:03.196 LifecycleManager: com.amazon.iap.core.ui moved to background and was removed

FireOS logs
Issue: Amazon IAP purchase returns INVALID_SKU in Live App Testing

Source environment:

  • App version: 3.31.0 (310045656)
  • Distribution: Amazon release / Live App Testing
  • Device type: Fire TV
  • Device model: Amazon AFTMM
  • OS version: 7.1.2
  • ABI: armeabi-v7a
  • Amazon IAP SDK: 2.0.76
  • App state: Foreground

The following excerpt contains only events relevant to the purchase flow.
User identifiers, network information, account data, experiment assignments,
and unrelated diagnostics have been removed.

[2026-07-29 12:23:01.401] [INFO] AmazonPayTv: getPurchaseUpdates, mode=PAYWALL_SYNC, active update mode=null
[2026-07-29 12:23:03.146] [INFO] AmazonPayTv: onProductDataResponse, status=SUCCESSFUL, priceCount=0
[2026-07-29 12:23:03.873] [INFO] AmazonPayTv: onPurchaseUpdatesResponse, mode=PAYWALL_SYNC
[2026-07-29 12:23:03.876] [INFO] AmazonPayTv: onPurchaseUpdatesResponse success, mode=PAYWALL_SYNC, receiptCount=0
[2026-07-29 12:23:03.877] [INFO] AmazonPayTv: no pending receipts, proceeding with purchase
[2026-07-29 12:23:03.886] [INFO] AmazonPayTv: launching Amazon native purchase UI
[2026-07-29 12:23:08.568] [INFO] AmazonPayTv: onPurchaseResponse, status=INVALID_SKU
[2026-07-29 12:23:08.570] [WARN] Amazon payment flow failed - INVALID_SKU

java.lang.Exception: Amazon payment flow failed - INVALID_SKU
at com.amazon.device.iap.internal.b.e$1.run(SourceFile:96)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6202)

Repeated attempt:

[2026-07-29 13:12:32.534] [INFO] AmazonPayTv: getPurchaseUpdates, mode=PAYWALL_SYNC, active update mode=null
[2026-07-29 13:12:33.668] [INFO] AmazonPayTv: onProductDataResponse, status=SUCCESSFUL, priceCount=0
[2026-07-29 13:12:34.688] [INFO] AmazonPayTv: onPurchaseUpdatesResponse, mode=PAYWALL_SYNC
[2026-07-29 13:12:34.691] [INFO] AmazonPayTv: onPurchaseUpdatesResponse success, mode=PAYWALL_SYNC, receiptCount=0
[2026-07-29 13:12:34.691] [INFO] AmazonPayTv: no pending receipts, proceeding with purchase
[2026-07-29 13:12:34.701] [INFO] AmazonPayTv: launching Amazon native purchase UI
[2026-07-29 13:12:38.500] [INFO] AmazonPayTv: onPurchaseResponse, status=INVALID_SKU
[2026-07-29 13:12:38.502] [WARN] Amazon payment flow failed - INVALID_SKU

End of sanitized excerpt.

6. Environment

Vega

  • SDK Version: Active SDK Version: 0.23.8358
    Vega CLI Version: 1.2.22

  • App State: Foreground

  • OS Information: NAME=“OS”
    OE_VERSION=“4.0.0”
    OS_MAJOR_VERSION=“1”
    OS_MINOR_VERSION=“2”
    RELEASE_ID=“21”
    OS_VERSION=“1.2”
    BRANCH_CODE=“TV Ship”
    BUILD_DESC=“OS 1.2 (TV Ship/547)”
    BUILD_FINGERPRINT=“4.0.378951.0(3072cab629675a74)/547N:user/release-keys”
    BUILD_VARIANT=“user”
    BUILD_TAGS=“release-keys”
    BUILD_DATE=“Tue Jul 14 08:13:13 UTC 2026”
    BUILD_TIMESTAMP=“1784016793”
    VERSION_NUMBER=“2101020054720”

FireOS

  • SDK Version: Amazon IAP SDK Version: 2.0.76
    App Version: Surfshark 3.31.0 (310045656)
    Build Type: Release, Amazon distribution
    App State: Foreground

  • App State: Foreground

  • OS Information: Manufacturer: Amazon
    Model: AFTMM
    Android base OS version: 7.1.2
    ABI: armeabi-v7a

7. Example Code Snippet / Screenshots / Screengrabs

Relevant native Android integration:

PurchasingService.registerListener(context, purchasingListener)
PurchasingService.getProductData(productSkus)
PurchasingService.purchase(purchaseSku)


:backhand_index_pointing_right: Playback Issues


N/A — this issue is unrelated to media playback.


:backhand_index_pointing_right: Additional Context


Any Additional Context you would like to provide?

Product-data callbacks return SUCCESSFUL, but with an empty product result.
Purchase-update synchronization succeeds and reports zero pending receipts.
Multiple purchase attempts consistently return INVALID_SKU.
No application crash occurs.

Hi @Erikas_Baronas,

Thank you for the detailed bug report on the INVALID_SKU issue with Live App Testing.

Our team is investigating this issue and will provide an update as soon as we have more information.

From your logs, getProductData returns SUCCESSFUL with priceCount=0 - the IAP system is responding but can’t resolve the SKU in the LAT catalog. The INVALID_SKU on purchase follows from that.

A few things to verify on the Developer Console side:

  1. How was the IAP item submitted? For SKUs to work in LAT, they need to be explicitly submitted via “Submit to Test” or “Submit to Test and Live”. If submitted only as a live item, LAT builds won’t resolve it. You should see a “TEST” label next to the item in the console.
  2. Are you passing the terms SKU or the parent SKU? For subscriptions, the terms SKU (with price/duration) is the purchasable item. Passing the parent SKU to purchase() will return INVALID_SKU.
  3. Marketplace alignment? The test device’s Amazon account marketplace needs to match where the IAP item was configured.

Could you share:

  • Whether you used “Submit to Test” or “Submit to Test and Live” when submitting the IAP item
  • Which marketplace the SKU is configured for

References:

Thanks for helping us improve the Vega platform.

Warm regards,
Aishwarya

Hi @Erikas_Baronas,

We identified and resolved the issue - your subscription SKU was not propagating correctly to the Live App Testing catalog, which caused the INVALID_SKU response.

This has been fixed. Could you please retry the purchase flow on your LAT build and let us know if it works?

Feel free to reach back to me if you have any questions!

Thanks,
Aishwarya