# Billing

## `GET /v1/plans` - public

Plans, prices and limits. It drives the [pricing page](https://pakdatahub.com/pricing).

```json
{ "success": true, "plans": [
  { "plan": "free", "price_usd_month": 0, "requests_per_day": 500, "requests_per_min": 10, "fair_use": false,
    "free_credits": 500, "free_credits_period": "month", "history": "1 years", "funds_and_alternate": true,
    "webhooks": 0, "for": "Evaluating, students, journalists", "usage_rights": "internal",
    "vintages": false, "sla": false, "support": "community" },
  { "plan": "pro", "price_usd_month": 49, "requests_per_day": 100000, "requests_per_min": 300, "fair_use": true,
    "free_credits": null, "free_credits_period": null, "history": "full", "funds_and_alternate": true,
    "webhooks": 50, "for": "Risk, treasury and research teams", "usage_rights": "internal",
    "vintages": true, "sla": false, "support": "priority" },
  ... ] }
```

Each plan also carries the fields that set it apart: `for`, `history`, `vintages`, `webhooks` (`null` = unlimited), `usage_rights` (`internal`, or `display` = may show the data in your own product), `sla` and `support`. On paid plans the request numbers are fair-use ceilings (`fair_use: true`). On `free`, the binding limit is `free_credits`: a **monthly** allowance of 500 calls (its `requests_per_day` is only a ceiling within that), and it (`free_credits_period: "month"`) resets on the 1st. See [Plans & credits](https://pakdatahub.com/docs/plans-credits.md).

## `POST /v1/checkout` - public

Start a hosted checkout (LemonSqueezy) for a paid plan.

```bash
curl -X POST -H "Content-Type: application/json" \
  -d '{"plan": "pro", "email": "you@example.com"}' \
  "https://api.pakdatahub.com/v1/checkout"
```

```json
{ "success": true, "checkout_url": "https://checkout.pakdatahub.com/..." }
```

`plan` is `developer`, `pro` or `business`, and `email` is optional; pass it to attach the purchase to an existing account. After payment, the buyer is redirected to `https://pakdatahub.com/welcome?token=...`.

## `GET /v1/account/key/{token}` - public

Redeems the one-time token from the post-checkout redirect for the account's API key. The key is returned **once** and also emailed.

## `GET /v1/billing/portal` (key required) / session

Returns `{ "success": true, "url": "..." }`: the customer-portal link where you update your card, see invoices or cancel. It returns `404` if the account has no subscription.

---
Source: https://pakdatahub.com/docs/api-billing - PakDataHub docs index: https://pakdatahub.com/docs/llms.txt
