Use App Tester
The App Tester tool enables you to test Amazon In-App Purchasing (IAP) features before publishing your app to the Amazon Appstore. Once you have downloaded, installed, and set up the App Tester tool, start testing purchase features in your app.
notifyFulfillment() call. This logic helps you correctly implement this part of the IAP SDK and it only applies to App Tester, not production behavior.If you have not already set up the App Tester for your app, see Install and Configure App Tester.
Amazon App Tester is a tool to simulate authorization with the Appstore. Download the App Tester.
Steps to use App Tester
To use Amazon App Tester to verify your app, do the following:
- Add the following configuration info to the manifest.toml file.
[wants]// ... other wants [[wants.service]]id = "com.amazon.iap.tester.service" -
Connect your computer to a Fire TV through VDA. See details about VDA.
- Set your app in sandbox mode using the following steps:
- Create a JSON file and name it amazon.config.json. Use the following JSON content in your file.
{ "debug.amazon.sandboxmode": "debug" }This content is different from the JSON file provided for the IAP Tester.
- Create a directory
/tmp/scratch/<your-application-id>inside the Vega Virtual Device (VVD) or the device. - Push the JSON file to the location you created. To push to a device, see Install App Tester on your device. To push to VVD, see How to install App Tester on VVD.
- Relaunch (terminate and relaunch) the app for the changes to take place.
-
Change the value present in the JSON file from
debugtoprodor delete the JSON file, to disable sandbox mode.Note: Every time you make a change in the JSON file, the app should be relaunched (terminated and relaunched). If you don’t, the changes won't be applied.
Sandbox mode constrains calls that would normally go to the Appstore client to route to the Amazon App Tester app instead. Use this mode only for testing locally.
- Create a JSON file and name it amazon.config.json. Use the following JSON content in your file.
- Uninstall any existing version of the Amazon App Tester, and then download it and open it on the device.
How to install App Tester on VVD
Install App Tester on VVD with the following.
vpm install <appname.vpkg>
Uninstall App Tester from VVD with the following.
vpm uninstall <package_id>
Choose the IAP API
When you first launch the App Tester App, you'll see the following splash screen:

Tap the Appstore SDK API's prompt to begin.
The App Tester displays a list of navigation options for the IAP API:
- User Account Settings: Configure the user test accounts for your app.
- Subscription Purchase Settings: Use Subscription Purchase Settings to test RVS Sandbox responses.
- IAP API Response Settings: Configure the conditions and responses for your test cases.
- Manage Transactions: Manage the active IAP transactions for your app.
- Notification Settings: Enable or disable additional drawer notifications.
- IAP Items in JSON File: View the data that you added to the App Tester from your JSON file in an easily human-readable format.
Manage users
You can log a user in and out, change users, and change the market place associated with a user. These options facilitate testing different scenarios with different users in different marketplaces.
To access the user management screen, select the IAP API from the App Tester landing page, then tap User Account Settings.

Log in and out
To toggle the current user between logged in and logged out, under Status tap the Logged in or Logged Out option.
Change the current user
App Tester provides three different test user accounts. Test users are named Amazon User 1, Amazon User 2, and Amazon User 3.
To change users, look under Amazon User Id, and select the user Id that you want to use for testing.
Change the user marketplace for the current user
App Tester provides you with the ability to test your app in different international markets. To change the market place associated with the current user, look under User Marketplace and select a new market. Here's a list of available markets:
- US: United States of America
- CA: Canada
- BR: Brazil
- MX: Mexico
- GB: Great Britain
- DE: Germany
- ES: Spain
- FR: France
- IT: Italy
- IN: India
- JP: Japan
- AU: Australia
Change the consent status for user profile access
App Tester provides two options for consent status: UNAVAILABLE and CONSENTED. To change the consent status, select the status you want to use for testing in User Profile Access > Consent Status.
Subscription settings
Use Subscription Purchase Settings to test RVS Sandbox responses.

Configure API response settings
Use the IAP API Response Settings tab to set the conditions and responses for your test calls to the IAP API:

When specifying a response, "Default" in the following sections means to use the existing default settings. The "Default" setting isn't an available setting. If you explicitly select a value, such as SUCCESSFUL or FAILED, the App Tester returns the selected value. For example, getProductData returns SUCCESSFUL if the JSON file contains the requested SKU. GetUserData returns FAILED if the user is Logged Out in User Account Settings.
The following table shows the available responses for the IAP APIs.
| API Name | Available Responses |
|---|---|
GetProductData |
Default, SUCCESSFUL, FAILED |
GetPurchaseUpdates |
Default, SUCCESSFUL, FAILED |
GetUserData |
Default, SUCCESSFUL, FAILED |
Purchase |
Default, SUCCESSFUL, FAILED, ALREADY_PURCHASED, INVALID_SKU |
modifySubscription |
Default, SUCCESSFUL, FAILED, INVALID_REQUEST, INVALID_SKU |
UserProfileAccess |
Default, SUCCESSFUL, FAILED |
Manage transactions
Use the Manage Transactions tab to view, cancel, and delete purchase transactions for the current user. Cancelling and deleting transactions are helpful tools when testing entitlements and subscriptions. This tab displays all transactions for the current user.

The Manage Transactions tab contains the following information for each transaction:
- RECEIPT: The type of product purchased. Valid values for IAP are CONSUMABLE, ENTITLEMENT, and SUBSCRIPTION.
- RECEIPT ID: Unique identifier for the transaction.
- SOLD BY: The app that sold the item.
- PURCHASED ON: The date the user purchased the item.
- STATUS: The transaction status. Valid values are PURCHASED or CANCELED. These App Tester values map to the IAP API values FULFILLED and UNAVAILABLE, respectively.
When an app calls PurchasingService.notifyFulfillment({receiptId: receipt.receiptId, fulfillmentResult: FulfillmentResult.FULFILLED}), the receipt shows up in the Manage Transactions section with status: FULFILLED.
From the Manage Transactions tab, you can perform the following tasks:
- Refresh the list of transactions for the current user.
- Delete all transactions for the current user.
- Cancel an individual transaction.
- Delete an individual transaction.
Enable or disable your notifications
Use the Notifications Settings tab to easily enable or disable additional drawer notifications.
The following image shows the Notification Settings tab:

The following notification settings are available:
-
Purchase Updates Notifications: By default, Amazon sends a notification when an app loads a purchase dialog but has never called
getPurchaseUpdates(). Amazon stops sending this notification after the app callsgetPurchaseUpdates()once. Use the Purchase Updates Notifications setting to toggle whether Amazon ever sends this notification. -
Notify Fulfillment Notifications: By default, Amazon sends a notification if a user makes a purchase and the item is not fulfilled within 30 seconds. Use Notify Fulfillment Notifications to toggle this notification on or off.
-
Reset Purchase Updates: This setting resets the state indicating if
getPurchaseUpdates()was called.
View the IAP items in your JSON file
To provide an easy way to view your configured IAP items in the JSON file, tap the IAP Items in JSON File tab. If you correctly added a valid JSON file, the App Tester parses and displays the contents of the file under this tab.

If you have not correctly added a valid JSON file, this tab either displays an error message or specifies that the JSON file does not exist.
Simulate the user's experience
Basides providing API responses, App Tester displays purchase flow dialogs, just like a live, published app does. The benefit of this feature is that the dialogs help you evaluate the user experience for your app's purchase process.
App Tester displays two interstitial dialogs for each Purchase Request. The first dialog is a detail screen that shows the purchase price and other details, as shown in the following IAP example:
Here is an example of an in-app purchase:

The second dialog is a "thank you" screen a user must manually close by tapping the "X" button in the upper right-hand corner. The following image displays an example of the close button.

IAP Tester logs
Here are some details about logging in to the IAP Tester:
- To learn more, see Debug Your App.
- To get the IAP Tester logs, grep for this keyword:
AmazonIAPTester.grep "AmazonIAPTester" -rn .
Last updated: Jan 30, 2026

