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

# Checkout

> List the purchasable catalog, create a hosted checkout session pre-filled for a customer, and poll that session until it settles.

The checkout endpoints cover buying: reading the catalog of what can be purchased, creating a hosted checkout session for a customer, and checking whether that session has settled.

All requests go to `https://api.nodemaven.com/api/v2/base/` and carry the header `Authorization: x-api-key YOUR_API_KEY`. See the [NodeMaven API overview](/proxy-api/overview) for the shared basics.

## Endpoints

| Method | Path | What it does | Request body | Responses |
| - | - | - | - | - |
| `GET` | `/products` | List the purchasable catalog: traffic, subscriptions and ISP | | 200 |
| `POST` | `/checkout-sessions` | Create a pre-filled hosted checkout session | `CheckoutSessionCreate` | 201 |
| `GET` | `/checkout-sessions/{id}` | Poll a checkout session until it settles | | 200 |

## The catalog

`GET /products` returns what can be bought: traffic, subscriptions and ISP. Read the catalog from the API rather than hardcoding product identifiers, so your integration keeps working when the catalog changes.

```bash theme={null}
curl https://api.nodemaven.com/api/v2/base/products \
  -H "Authorization: x-api-key YOUR_API_KEY"
```

## Checkout is hosted

<Note>
  **The checkout session is hosted.** `POST /checkout-sessions` creates a session you send a customer to. It does not charge a card directly, so your integration never handles the payment itself. You pre-fill the session, hand it over, and the customer completes it.
</Note>

### CheckoutSessionCreate

| Field | Type | Required | Notes |
| - | - | - | - |
| `type` | enum | Yes | `traffic`, `subscription` or `isp` |
| `id` | string | No | The item being purchased |
| `config` | `ISPConfig` | No | Configuration for an ISP purchase |
| `payment_method` | enum | Yes | `card`, `crypto`, `russia-card` or `yoomoney` |
| `coupon` | string | No | Defaults to empty |
| `billing` | object | Yes | Billing details for the session |

The payment methods available through the API are the same ones NodeMaven accepts generally. See [Payment methods](/billing/payment-methods) for what each one covers, and [Coupons](/billing/coupons) for how the `coupon` field is used.

### billing

| Field | Type | Required | Default |
| - | - | - | - |
| `country` | string, 2 characters | Yes | |
| `account_type` | string | No | `individual` |

### ISPConfig

`config` uses `ISPConfig`, which applies when the session is for buying ISP proxies:

| Field | Type | Required | Notes |
| - | - | - | - |
| `country` | string, 2 characters | Yes | |
| `quantity` | integer | Yes | Minimum 1, maximum 100 |
| `duration_days` | integer | Yes | Minimum 1 |
| `protocol` | string | No | Defaults to `socks5` |

<Note>
  **One checkout session can buy up to 100 ISP proxies.** If a customer needs more than 100, create more than one session.
</Note>

## Polling a session

A checkout session does not settle the moment you create it, because the customer still has to complete it. `GET /checkout-sessions/{id}` is how you find out whether it has:

```bash theme={null}
curl https://api.nodemaven.com/api/v2/base/checkout-sessions/SESSION_ID \
  -H "Authorization: x-api-key YOUR_API_KEY"
```

Poll it until it settles, then act on the outcome. If you would rather be notified than poll, see [Webhooks](/proxy-api/webhooks) for the events available on your account.


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