<!-- ZenPays documentation · https://docs.zenpayz.com/docs/getting-started/installation -->

# Installation

Get started with the ZenPays SDK in your project.

## Requirements

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

Node.js 18.0 or later, plus npm, yarn, or pnpm

  </TabItem>
  <TabItem value="python" label="Python">

Python 3.8 or later, plus pip

  </TabItem>
</Tabs>

## Install the package

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

<Tabs>
  <TabItem value="npm" label="npm" default>

```bash
npm install @zenxdigitalholdings/zenpays
```

  </TabItem>
  <TabItem value="yarn" label="yarn">

```bash
yarn add @zenxdigitalholdings/zenpays
```

  </TabItem>
  <TabItem value="pnpm" label="pnpm">

```bash
pnpm add @zenxdigitalholdings/zenpays
```

  </TabItem>
</Tabs>

  </TabItem>
  <TabItem value="python" label="Python">

```bash
pip install zenpays
```

  </TabItem>
</Tabs>

## TypeScript Support

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

The SDK is written in TypeScript and includes complete type definitions out of the box. No additional `@types/*` package is needed.

```typescript
import type { PaymentIntent } from '@zenxdigitalholdings/zenpays'
import { ZenPays } from '@zenxdigitalholdings/zenpays'

const zenpays = new ZenPays({
  apiKey: process.env.ZENPAYS_API_KEY!,
})

// Full type safety
const intent: PaymentIntent = await zenpays.payments.getPaymentIntent('pi_xxx')
```

  </TabItem>
  <TabItem value="python" label="Python">

The Python SDK includes full type hints and works seamlessly with mypy and other type checkers.

```python
from zenpays import ZenPays
from zenpays.types.payment import PaymentIntent
import os

zenpays = ZenPays(api_key=os.environ["ZENPAYS_API_KEY"])

# Full type hints support
intent: PaymentIntent = zenpays.payments.get_payment_intent("pi_xxx")
```

  </TabItem>
</Tabs>

## Browser Support

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

The SDK works in both Node.js and browser environments. For browser usage, you can import directly:

```html
<script type="module">
  import { ZenPays } from 'https://unpkg.com/@zenxdigitalholdings/zenpays@latest/dist/index.mjs'

  const zenpays = new ZenPays({
    apiKey: 'your-publishable-key',
  })
</script>
```

:::warning
Never expose your secret API key in client-side code. Use publishable keys for browser environments.
:::

  </TabItem>
  <TabItem value="python" label="Python">

The Python SDK is designed for server-side use and is not compatible with browser environments.

:::tip
Use the JavaScript SDK for browser-based integrations and the Python SDK for server-side operations.
:::

  </TabItem>
</Tabs>

## Next Steps

- [Quick Start](/docs/getting-started/quick-start) - Create your first payment
- [Configuration](/docs/getting-started/configuration) - Learn about SDK options
- [Authentication](/docs/getting-started/authentication) - Manage API keys
