# Installation (https://docs.billwave.example/getting-started/installation)

Installation [#installation]

Install the Billwave SDK in your Node.js project. This guide covers SDK setup; provider configuration happens in the dashboard.

Package Manager [#package-manager]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npm i @digvijay-x1/billwave
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm add @digvijay-x1/billwave
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn add @digvijay-x1/billwave
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun add @digvijay-x1/billwave
    ```
  </CodeBlockTab>
</CodeBlockTabs>

Configuration [#configuration]

Initialize the SDK with your API key:

```ts
import { Billwave } from "@digvijay-x1/billwave";

const billwave = new Billwave({
  secretKey: process.env.BILLWAVE_SECRET_KEY,
  // Optional: override the API URL (for self-hosted)
  // apiUrl: "https://api.billwave.example"
});
```

in .env

```sh
BILLWAVE_SECRET_KEY=billwave_sk_your_api_key_here
```

TypeScript [#typescript]

The SDK is written in TypeScript and includes full type definitions. No additional `@types/*` packages are needed.

```ts
import {
  Billwave,
  AttachResult,
  CheckResult,
  TrackResult,
} from "@digvijay-x1/billwave";

const billwave = new Billwave({ secretKey: "..." });

// All methods are fully typed
const result: AttachResult = await billwave.attach({
  customer: "user_123",
  product: "pro",
});
```

Next Steps [#next-steps]

<Cards>
  <Card title="attach()" href="/sdk/attach" />

  <Card title="check()" href="/sdk/check" />

  <Card title="track()" href="/sdk/track" />
</Cards>