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

# VAS overview

> Bill payments and eSIM: discover with List billers, then purchase airtime, data, cable, electricity, betting, internet, or eSIM.

# VAS (Bill payments)

Base path: `/api/v1/merchant/vas`

Scopes: `vas:read`, `vas:write`. Money-moving writes require **Idempotency-Key**.

Settlements are **NGN** by default — do not send a `currency` field unless documented.

## Typical flow

1. **List billers** — discover providers, plans, or eSIM destinations/packages.
2. **Validate (cable / electricity)** — confirm smart card or meter before purchase.
3. **Purchase** — call the matching write endpoint (airtime, data, cable, electricity, betting, internet, or eSIM).
4. **Get VAS transaction** — poll status with the returned transaction id.

## eSIM (same VAS API)

eSIM is part of VAS, not a separate product API.

**1. List destinations**

`GET /vas/billers?category=esim` → `data.esim.locations[]`. Each location has a `locationCode` (ISO country code, e.g. `NG`, `ES`).

**2. List packages for a country**

`GET /vas/billers?category=esim&locationCode=NG` → `data.esim.packages[]`. Each package has a `price` in USD. Use the package’s UUID `id` (not `packageCode`).

**3. Purchase**

`POST /vas/esim` with `packageId` set to that UUID, plus customer details and `deviceType`.

`locationCode` is **eSIM-only**. Ignore it for airtime, data, cable, electricity, betting, and internet.

Regional codes like `EU-42` currently return no packages. Multi-country bundles (e.g. Europe, Global) are currently listed under one country they cover — e.g. Europe bundles appear under `NO`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.