> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mysubwallet.ng/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Integrate mySubwallet to sell data, airtime, cable, electricity, exam pins and bulk SMS programmatically.

## Welcome

The **mySubwallet API** lets you purchase services, manage transactions, and access resources in our system directly from your own application — so you can resell airtime and data, pay bills, verify customers, and more, all funded from your wallet balance.

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Generate your access token and authenticate every request.
  </Card>

  <Card title="Quickstart" icon="bolt" href="/quickstart">
    Make your first successful purchase in minutes.
  </Card>

  <Card title="API Reference" icon="code" href="/reference/data">
    Interactive endpoints for data, airtime, cable, electricity and more.
  </Card>

  <Card title="Plans & Catalogs" icon="list" href="/guides/catalogs">
    Fetch data plan IDs, DISCOs, cable plans and exam bodies.
  </Card>
</CardGroup>

## Base URL

All **production** endpoints are relative to:

```text theme={null}
https://api.mysubwallet.ng
```

## Sandbox

Build and test your integration against the **sandbox** — the same endpoints with full request validation, but **no wallet is ever charged** and nothing is vended:

```text theme={null}
https://sandbox.mysubwallet.ng
```

Authenticate with your **sandbox (test) key** (`sk_test_…`), found under **Pricing & Plan IDs** in your [dashboard](https://app.mysubwallet.ng). See the [Sandbox guide](/sandbox) for details.

## How it works

<Steps>
  <Step title="Fund your wallet">
    Top up your mySubwallet balance from the [dashboard](https://app.mysubwallet.ng). Every API purchase is debited from this balance.
  </Step>

  <Step title="Get your API key">
    Authenticate once to retrieve your `AccessToken` (API key). See [Authentication](/authentication).
  </Step>

  <Step title="Call the API">
    Send authenticated `POST` requests to buy services. Always include a unique `request-id` for idempotency.
  </Step>
</Steps>

<Note>
  Every purchase request must include a unique **`request-id`**. Reusing the same `request-id` returns the original transaction instead of charging you twice — this protects you from accidental duplicate purchases on retries.
</Note>
