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

# Quickstart

> Parse your first Nepali bank statement and read a product view in a few minutes.

## 1. Get an API key

Create a key in the [dashboard](https://swippee.com/dashboard). It's shown
exactly once at creation — Swippee only keeps a SHA-256 hash. Issue
**read-only** keys for backend services that only need to fetch existing
reports.

```bash theme={null}
export SWIPPEE_API_KEY="swippee_sk_live_xxxxxxxxxxxxxxxx"
```

## 2. Parse a statement

Upload a statement to `POST /v1/parse`. Pass `bank=auto` to let Swippee detect
the bank, or name it explicitly.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.swippee.com/v1/parse \
    -H "Authorization: Bearer $SWIPPEE_API_KEY" \
    -F "file=@statement.pdf" \
    -F "bank=auto"
  ```

  ```javascript Node.js theme={null}
  import { readFile } from "node:fs/promises";

  const file = await readFile("./statement.pdf");
  const form = new FormData();
  form.append("file", new Blob([file], { type: "application/pdf" }), "statement.pdf");
  form.append("bank", "auto");

  const res = await fetch("https://api.swippee.com/v1/parse", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.SWIPPEE_API_KEY}` },
    body: form,
  });
  const report = await res.json();
  ```

  ```python Python theme={null}
  import os
  import requests

  with open("statement.pdf", "rb") as f:
      res = requests.post(
          "https://api.swippee.com/v1/parse",
          headers={"Authorization": f"Bearer {os.environ['SWIPPEE_API_KEY']}"},
          files={"file": f},
          data={"bank": "auto"},
      )
  report = res.json()
  ```

  ```go Go theme={null}
  package main

  import (
      "bytes"
      "io"
      "mime/multipart"
      "net/http"
      "os"
  )

  func main() {
      body := &bytes.Buffer{}
      w := multipart.NewWriter(body)
      f, _ := os.Open("statement.pdf")
      defer f.Close()
      part, _ := w.CreateFormFile("file", "statement.pdf")
      io.Copy(part, f)
      w.WriteField("bank", "auto")
      w.Close()

      req, _ := http.NewRequest("POST", "https://api.swippee.com/v1/parse", body)
      req.Header.Set("Authorization", "Bearer "+os.Getenv("SWIPPEE_API_KEY"))
      req.Header.Set("Content-Type", w.FormDataContentType())
      http.DefaultClient.Do(req)
  }
  ```
</CodeGroup>

You get back a full `StatementReport`:

```json theme={null}
{
  "report_id": "cl_abc123",
  "status": "complete",
  "statement": {
    "bank": "Nabil Bank",
    "bank_code": "NABIL",
    "currency": "NPR",
    "period": { "from": "2025-11-01", "to": "2026-04-30" },
    "opening_balance": 5028.73,
    "closing_balance": 5062.93,
    "total_transactions": 114
  },
  "signals": { },
  "transactions": [
    {
      "transaction_id": "txn_001",
      "date": "2026-04-12",
      "name": "MPAY 2222000000000000,492738040,MOB",
      "amount": 540,
      "iso_currency_code": "NPR",
      "balance": 4820.5,
      "merchant_name": "Example Store",
      "payment_terminal_id": "2222000000000000",
      "mcc": "5411",
      "personal_finance_category": {
        "primary": "FOOD_AND_DRINK",
        "detailed": "FOOD_AND_DRINK_GROCERIES",
        "confidence_level": "HIGH"
      },
      "counterparties": [
        { "type": "merchant", "name": "Example Store", "confidence_level": "HIGH" }
      ],
      "payment_channel": "fonepay",
      "pending": false
    }
  ]
}
```

<Tip>
  Supported banks today: `NABIL`, `NIC_ASIA`, `NIMB`, `NMB`, `KUMARI`,
  `SIDDHARTHA`, `NBL`, `PRABHU`, `GARIMA`, `MANJUSHREE`, and `GLOBAL_IME` (beta),
  plus the `ESEWA` and `KHALTI` wallets. Use `auto` unless you already know the source.
</Tip>

## 3. Read a product view

Once a report is `complete`, each product is a focused `GET` on it. Reading
products doesn't bill again — they're derived from the parse you already paid
for.

```bash theme={null}
# just the income view
curl https://api.swippee.com/v1/reports/cl_abc123/income \
  -H "Authorization: Bearer $SWIPPEE_API_KEY"
```

## Next steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Scopes, key rotation, and how auth errors surface.
  </Card>

  <Card title="Products" icon="layer-group" href="/concepts/products">
    Every product view and what it returns.
  </Card>

  <Card title="Webhooks" icon="bell" href="/concepts/webhooks">
    Get parse results pushed to your backend.
  </Card>

  <Card title="Swippee Data" icon="database" href="/guides/data-api">
    Read Nepal's public-sector financial datasets.
  </Card>
</CardGroup>
