> For the complete documentation index, see [llms.txt](https://onestore-dev.gitbook.io/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://onestore-dev.gitbook.io/dev/chi/ai/iap-skill.md).

# IAP SKILL

The first skill introduced in Launch on ONEstore with AI. This page covers actual usage only.

**IAP SKILL** is a tool that lets an AI coding agent integrate the ONE store in-app purchase (IAP) SDK for you. Just install it, then tell your usual AI tool what you want in plain language — that's it.

<table><thead><tr><th width="223.716796875">Skill</th><th>When to use</th></tr></thead><tbody><tr><td><code>onestore-iap</code></td><td>To add ONE Store in-app purchase to an app that <strong>doesn't have billing yet</strong></td></tr><tr><td><code>onestore-iap-migrate</code></td><td>To add ONE Store billing to an app that <strong>already uses Google Play Billing</strong></td></tr></tbody></table>

### Install

{% stepper %}
{% step %}

#### Before you start

You'll need an existing Android project and a working build setup (Android Studio, etc.) — a vibe-coded project is fine too. The install script is bash, so macOS/Linux works out of the box; on Windows you'll need WSL or Git Bash.
{% endstep %}

{% step %}

#### Install it

**Repo**: [github.com/ONE-store/onestore\_iap\_skills](https://github.com/ONE-store/onestore_iap_skills)

{% tabs %}
{% tab title="Tell your agent" %}
Copy the text below and paste it into your agent.

```
Clone https://github.com/ONE-store/onestore_iap_skills.git into a temp folder, then run the
install script inside it against [my Android project path] to install IAP SKILL.
Let me know the result in one line when done.
```

{% endtab %}

{% tab title="Run it yourself" %}
bash

```bash
git clone https://github.com/ONE-store/onestore_iap_skills.git
cd onestore_iap_skills
./install.sh <my Android project path>
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Confirm it's installed

Ask "check the ONE store IAP integration status." If you get a status table back, you're set.
{% endstep %}
{% endstepper %}

### Where it runs

| Supported tools          |
| ------------------------ |
| Claude Code              |
| Cursor                   |
| GitHub Copilot (VS Code) |
| Gemini CLI               |
| OpenAI Codex             |
| Grok Build               |

### What it can do

| Task                   | Nature            | By hand                                                                           | With this skill                                                                                     |
| ---------------------- | ----------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Diagnose status        | 🟢 Read-only      | Not sure where to start, so you read through the whole doc                        | Reads your project and shows a table plus what to do next (each finding links to the relevant file) |
| SDK integration        | 🟡 Modifies files | Wiring the manifest (app config file) and source code by hand                     | Wires it up in the same order, and asks first if placement is ambiguous                             |
| Fill in product values | 🟡 Modifies files | Mixing up consumable vs. non-consumable fails silently, discovered as a bug later | Asks directly — "is this a consumable product?" — so nothing gets mixed up                          |
| Verification screen    | 🟡 Creates files  | You build a test screen yourself                                                  | Builds a tappable test screen for you (Compose projects only)                                       |
| Diagnose errors        | 🟢 Read-only      | Search the error code and cross-reference docs, guessing                          | Explains the cause, how to reproduce it, the fix, and reference docs                                |
| Pre-release check      | 🟢 Read-only      | Go through a checklist by hand, top to bottom                                     | Surfaces blockers first, and collapses everything that passed into one line                         |

### Try it — natural language prompts

Copy these straight into your agent.

| Prompt                                                                  | Result                                                                                                                                                                                                                   |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `What can the ONE store payment skill do?`                              | Lays out everything this skill can help with                                                                                                                                                                             |
| `What should I do next?`                                                | Re-checks current status and tells you what to ask for next                                                                                                                                                              |
| `Check my ONE store IAP integration status`                             | Shows what's done, what's left, and what to do next                                                                                                                                                                      |
| `Integrate the ONE store IAP SDK`                                       | Walks through dependencies, manifest setup, and payment code in order                                                                                                                                                    |
| `Fill in the values for [product ID], checking whether it's consumable` | Asks about anything ambiguous while filling in the values                                                                                                                                                                |
| `Add a screen I can use to test payments`                               | Builds a test screen for login, purchase, and consume/acknowledge                                                                                                                                                        |
| `Check why I'm getting this error` (paste the error log)                | For example, if you see `responseCode 7`, it means "already owned." For unconsumed products it explains the cause and fix; for non-consumables or subscriptions, it tells you that's expected and there's nothing to fix |
| `Check the payment integration before I release`                        | Surfaces only what could block release; everything else is marked as passed                                                                                                                                              |
| `My app uses Google Play Billing — migrate it to ONEstore billing`      | Diagnoses your existing billing code, extracts a product table for your confirmation, then wires ONEstore billing into your existing entitlement logic                                                                   |

### FAQ

<details>

<summary>Is there anything this skill can't do?</summary>

* **Gradle sync and building**: after dependencies are added, you'll need to sync yourself.
* **Real payment testing**: sandbox testing and registering test accounts happen in the developer console.
* **Server-side receipt verification**: server-to-server verification isn't something an app can do. If your setup delivers items from a server, the skill only wires up the connection point — the purchase signature itself is already verified by the SDK once you've supplied the public key.
* **Turning the verification screen into a production screen**: it's a verification screen only, and stays that way.
* **Changing build settings**: `compileSdk`, `minSdk`, and your Java target are left untouched.

</details>

<details>

<summary>What version is this built against?</summary>

Built against `sdk-iap 21.04.00` (and `sdk-licensing 2.2.1` for paid apps). Verified against the public dev guide and sample app, and tested end-to-end on a real device — purchase, consume, acknowledge, and subscription. Once integrated, `com.onestorecorp.sdk:sdk-iap:21.04.00` gets added to `build.gradle.kts`.

</details>

<details>

<summary>What's coming next?</summary>

Automatic migration from PBL to ONE store payment code, `onestore CLI`, then engine support for Unity, Unreal, and Flutter — in that order.

</details>

<details>

<summary>Is the license key handled safely?</summary>

Yes. The license public key is never left as plaintext in source — it's obfuscated, and the skill verifies the round trip against the original before confirming.

</details>

<details>

<summary>What should I have ready before filling in product values?</summary>

You'll be asked "is this product consumable?" — answer carefully, since a wrong answer fails silently with no error. There are 3 values you'll need ready.

| Value                     | Where to find it                                                |
| ------------------------- | --------------------------------------------------------------- |
| License public key        | Developer Console → General Info → License Management           |
| Product ID list           | Developer Console → the In-App IDs registered under In-App Info |
| Which ones are consumable | Your app's design — which products need to be purchasable again |

Even without these, code placement proceeds, and the value fields are just left blank.

</details>

<details>

<summary>How does the verification screen get wired into my app?</summary>

You'll be asked whether to wire it in first. If you say yes, you'll get three options that avoid disturbing your existing entry screen — a separate screen, overlaying the current screen, or not wiring it in at all.

</details>

<details>

<summary>My product list comes back empty</summary>

Product IDs need to already be registered as real products in the developer console — if they're not registered yet, the lookup returns an empty list. Register them in the developer console first, following the product registration guide.

</details>

<details>

<summary>Are there install options?</summary>

Yes, there are 6.

| Option      | What it does                                                                  |
| ----------- | ----------------------------------------------------------------------------- |
| `--dry-run` | Shows what would be copied where, without changing anything                   |
| `--user`    | Installs to your home directory so it's available in every project            |
| `--all`     | Also installs to `.cursor/`, `.github/`, `.gemini/`, `.codex/`, and `.junie/` |
| `--pull`    | Pulls the latest version before installing                                    |
| `--force`   | Overwrites your install even if you've modified it                            |
| `--offline` | Skips the remote check                                                        |

You can also skip the script and copy the `skills/onestore-iap` folder straight into your tool's skill path.

</details>

<details>

<summary>I'd rather integrate manually, without the skill</summary>

The existing payment integration guide works fine on its own. This skill is built off the same public guide, so you can switch to manual work partway through and pick up right where you left off.

</details>

<details>

<summary>I reinstalled and nothing changed</summary>

Files you've modified yourself are never overwritten — you'll be told which ones. Merge them by hand and run it again, or pass `--force` if you really want to overwrite them.

</details>

<details>

<summary>My agent isn't using the skill</summary>

Ask "list the skills available right now" first.

* **Not in the list** — that's an install path issue. Double-check your tool reads from the right path, then restart your session after installing.
* **In the list but not being used** — try mentioning "ONE store" or "in-app purchase" in your request. If it still tries to write the code itself, add "use the skill for this."

</details>

<details>

<summary>My build is failing</summary>

This is usually a Java (JDK) setup issue, not a payment-code problem — especially if you see `Unsupported class file major version`, `Android Gradle plugin requires Java …`, or `JAVA_HOME is not set`. Paste the full error into your agent and it'll walk you through the cause and the fix.

</details>

<details>

<summary>Where can I learn more?</summary>

* [In-app purchase development guide (API V7 / SDK V21)](https://onestore-dev.gitbook.io/dev/tools/billing/v21)
* [Public sample app](https://github.com/ONE-store/onestore_iap_release)
* [ONEconsole](https://dev.onestore.net/dev/)
* [Maven Central](https://repo1.maven.org/maven2/com/onestorecorp/sdk/)

</details>
