# SDKs (/developers/sdks/overview)

Fianto ships seven TypeScript packages. One is the API client that runs on your server, three wrap
its route handlers for a web framework, two open checkout in the browser, and one is a command line
for development. Every package is version 0.1.0 and needs Node.js 20.3 or later. The six library packages ship as
ESM and CommonJS; the CLI is ESM only.

## The packages [#the-packages]

| Package                                       | What it is for                                                                                           | Runs on             | Peer dependency               |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------- | ----------------------------- |
| [`@fianto/sdk`](/developers/sdks/sdk)         | The typed API client, webhook verification (`/webhooks`) and framework-free route handlers (`/handlers`) | Your server         | —                             |
| [`@fianto/nextjs`](/developers/sdks/nextjs)   | `Webhooks()` and `Checkout()` as App Router route handlers                                               | Your server         | `next` 15 or later (optional) |
| [`@fianto/express`](/developers/sdks/express) | `webhooks()` and `checkout()` as Express middleware                                                      | Your server         | `express` 4 or later          |
| [`@fianto/hono`](/developers/sdks/hono)       | `webhooks()` and `checkout()` as Hono handlers                                                           | Your server         | `hono` 4 or later             |
| [`@fianto/js`](/developers/sdks/js)           | `openCheckout`, `redirectToCheckout` and the `<fianto-button>` element                                   | The browser         | —                             |
| [`@fianto/react`](/developers/sdks/react)     | `useCheckout` and `FiantoButton`                                                                         | The browser (React) | `react` 19 or later           |
| [`@fianto/cli`](/developers/cli)              | The `fianto` command: signed samples, event forwarding, `whoami`                                         | Your machine or CI  | —                             |

The server packages hold your app secret. `new Fianto()` throws when it runs in a browser, and there
is no publishable key: your server always creates the checkout session, and the browser packages
only open the page your server created.

## Which to install [#which-to-install]

Each stack needs a server package for the checkout and webhook routes, and a browser package for the
pay button.

#### pnpm

```bash
# Next.js
pnpm add @fianto/nextjs @fianto/react @fianto/sdk
# Express
pnpm add @fianto/express @fianto/js @fianto/sdk
# Hono
pnpm add @fianto/hono @fianto/js @fianto/sdk
# Any other server: the client and the framework-free handlers
pnpm add @fianto/sdk
```

#### npm

```bash
# Next.js
npm install @fianto/nextjs @fianto/react @fianto/sdk
# Express
npm install @fianto/express @fianto/js @fianto/sdk
# Hono
npm install @fianto/hono @fianto/js @fianto/sdk
# Any other server: the client and the framework-free handlers
npm install @fianto/sdk
```

#### yarn

```bash
# Next.js
yarn add @fianto/nextjs @fianto/react @fianto/sdk
# Express
yarn add @fianto/express @fianto/js @fianto/sdk
# Hono
yarn add @fianto/hono @fianto/js @fianto/sdk
# Any other server: the client and the framework-free handlers
yarn add @fianto/sdk
```

#### bun

```bash
# Next.js
bun add @fianto/nextjs @fianto/react @fianto/sdk
# Express
bun add @fianto/express @fianto/js @fianto/sdk
# Hono
bun add @fianto/hono @fianto/js @fianto/sdk
# Any other server: the client and the framework-free handlers
bun add @fianto/sdk
```

Each line adds `@fianto/sdk` next to the adapter, so your own code can import `Fianto` and the
webhook helpers from it. Run the CLI without installing it: `npx @fianto/cli whoami`.

## Runtimes [#runtimes]

> **Tested on Node.js, designed for more:**
>
> CI tests the SDK on Node.js 22 and 24 and smoke-tests the built `@fianto/sdk` on Node.js 20.3.0. `@fianto/sdk`, `@fianto/nextjs` and `@fianto/hono` use only `fetch` and Web Crypto in the request
> path, so they are designed for Vercel Edge, Cloudflare Workers, Bun and Deno too, but those runtimes
> are not tested yet. `@fianto/express` is for Node.js: it reads Express's Node request stream.

On Cloudflare Workers there is no `process.env`: pass your secrets to the handlers yourself. The
[Hono page](/developers/sdks/hono) shows how.

## Where to go next [#where-to-go-next]

- [@fianto/sdk](/developers/sdks/sdk): Options, resources, errors and retries.

- [Next.js](/developers/sdks/nextjs): Webhooks() and Checkout() route handlers.

- [Express](/developers/sdks/express): Mount order, body size and proxies.

- [Hono](/developers/sdks/hono): Node and Cloudflare Workers.

- [Browser](/developers/sdks/js): openCheckout and the fianto-button element.

- [React](/developers/sdks/react): useCheckout and the FiantoButton component.

## See also [#see-also]

- [Quickstart](/get-started/quickstart): Take a first payment with the SDK.

- [CLI](/developers/cli): Every Fianto command and flag.

- [Examples](/developers/examples): Two runnable apps built on the SDK.