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

# Nomba API Surface

> Every distinct Nomba endpoint Duro integrates, with method, path, and purpose.

Duro talks to a single processor, Nomba, through one typed client (`packages/nomba-client/src/client.ts`) plus its token manager (`packages/nomba-client/src/token-manager.ts`). Every call goes through `NombaClient.call` (or `callBill` for the bills envelope), which attaches a cached bearer token, the `accountId` header, and a timeout. The list below is the exact set of Nomba endpoints Duro calls, one row per distinct endpoint (method + path counted distinctly).

<Note>
  **Duro integrates 30 distinct Nomba API endpoints.** Counting rule: the same path under two HTTP methods (for example `GET` vs `DELETE` on `/v1/checkout/tokenized-card-data`) counts as two; `{...}` path segments are one endpoint.
</Note>

## Auth (1)

| # | Method | Path                   | Purpose                                                                                       |
| - | ------ | ---------------------- | --------------------------------------------------------------------------------------------- |
| 1 | `POST` | `/v1/auth/token/issue` | Issue an access token via `client_credentials`; cached per mode until expiry (token manager). |

## Checkout & cards (6)

| # | Method   | Path                                  | Purpose                                              |
| - | -------- | ------------------------------------- | ---------------------------------------------------- |
| 2 | `POST`   | `/v1/checkout/order`                  | Create a hosted/inline checkout order for a payment. |
| 3 | `POST`   | `/v1/checkout/tokenized-card-payment` | Charge a saved (tokenized) card by `tokenKey`.       |
| 4 | `GET`    | `/v1/checkout/tokenized-card-data`    | List the tokenized cards on the account.             |
| 5 | `DELETE` | `/v1/checkout/tokenized-card-data`    | Delete a tokenized card.                             |
| 6 | `GET`    | `/v1/checkout/transaction`            | Fetch a checkout transaction by reference.           |
| 7 | `POST`   | `/v1/checkout/refund`                 | Refund a settled checkout payment.                   |

## Transfers & payouts (3)

| #  | Method | Path                        | Purpose                                           |
| -- | ------ | --------------------------- | ------------------------------------------------- |
| 8  | `GET`  | `/v1/transfers/banks`       | List supported banks for transfers/payouts.       |
| 9  | `POST` | `/v1/transfers/bank/lookup` | Resolve an account name for a bank code + number. |
| 10 | `POST` | `/v2/transfers/bank`        | Send a bank transfer (merchant payout).           |

## Direct-debit mandates (4)

| #  | Method | Path                              | Purpose                                |
| -- | ------ | --------------------------------- | -------------------------------------- |
| 11 | `POST` | `/v1/direct-debits`               | Create a NIBSS e-mandate.              |
| 12 | `POST` | `/v1/direct-debits/debit-mandate` | Debit an active mandate for an amount. |
| 13 | `GET`  | `/v1/direct-debits/status`        | Get a mandate's status by `mandateId`. |
| 14 | `PUT`  | `/v1/direct-debits/update-status` | Suspend or reactivate a mandate.       |

## Virtual accounts (2)

| #  | Method | Path                                  | Purpose                                                  |
| -- | ------ | ------------------------------------- | -------------------------------------------------------- |
| 15 | `POST` | `/v1/accounts/virtual/{subAccountId}` | Create a customer virtual account under the sub-account. |
| 16 | `GET`  | `/v1/accounts/virtual/{identifier}`   | Fetch a virtual account by identifier.                   |

## Transactions (2)

| #  | Method | Path                                   | Purpose                                              |
| -- | ------ | -------------------------------------- | ---------------------------------------------------- |
| 17 | `GET`  | `/v1/transactions/requery/{sessionId}` | Requery a transaction by session id.                 |
| 18 | `GET`  | `/v1/transactions/accounts/single`     | Verify a transaction by order/transaction reference. |

## Bills / VAS (12)

| #  | Method | Path                          | Purpose                                       |
| -- | ------ | ----------------------------- | --------------------------------------------- |
| 19 | `GET`  | `/v1/bill/data-plan/{telco}`  | List data plans for a telco.                  |
| 20 | `POST` | `/v1/bill/topup`              | Vend airtime top-up.                          |
| 21 | `POST` | `/v1/bill/data`               | Vend a data bundle.                           |
| 22 | `GET`  | `/v1/bill/betting/providers`  | List betting providers.                       |
| 23 | `GET`  | `/v1/bill/betting/lookup`     | Look up a betting customer name.              |
| 24 | `POST` | `/v1/bill/betting`            | Fund a betting account.                       |
| 25 | `GET`  | `/v1/bill/cableTvProduct`     | List cable TV plans for a provider.           |
| 26 | `GET`  | `/v1/bill/cabletv/lookup`     | Look up a cable TV smartcard name.            |
| 27 | `POST` | `/v1/bill/cabletv`            | Pay a cable TV subscription.                  |
| 28 | `GET`  | `/v1/bill/electricity/discos` | List electricity discos.                      |
| 29 | `GET`  | `/v1/bill/electricity/lookup` | Look up an electricity meter name.            |
| 30 | `POST` | `/v1/bill/electricity`        | Vend electricity (prepaid token or postpaid). |

## Totals

| Group                 | Endpoints |
| --------------------- | --------- |
| Auth                  | 1         |
| Checkout & cards      | 6         |
| Transfers & payouts   | 3         |
| Direct-debit mandates | 4         |
| Virtual accounts      | 2         |
| Transactions          | 2         |
| Bills / VAS           | 12        |
| **Total**             | **30**    |

Every one of these is a real call in `NombaClient` (or its token manager); no Nomba endpoint is documented here that Duro does not invoke.
