Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 79 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<p align="center">
<a href="https://zoneless.com">
<img src="https://zoneless.com/assets/images/screenshots/og.png" alt="Zoneless — The open-source Stripe, built on stablecoins" width="800" />
<img src="https://zoneless.com/assets/images/screenshots/og.png" alt="Zoneless, an open-source Stripe Connect alternative" width="800" />
</a>
</p>

<h1 align="center">Zoneless</h1>

<p align="center">
<strong>The open-source Stripe alternative, built on stablecoins.<br>Payments infrastructure you actually own. Same API and dashboard you already know, minus the fees.</strong>
<strong>The open-source Stripe Connect replacement, built on stablecoins.<br>Onboard sellers and send payouts without percentage fees.</strong>
</p>

<p align="center">
Expand All @@ -23,95 +23,111 @@

---

Zoneless is a free, open-source payments platform with a **one-to-one mapping of Stripe's API, objects, and dashboard** — except every payment settles in USDC, moving wallet to wallet with no banks in between.
Zoneless gives marketplaces and platforms a self-hosted replacement for Stripe Connect. It includes connected account onboarding, transfers, payouts, and an Express-style dashboard for sellers.

If you know Stripe, you already know Zoneless. Same webhooks, same object shapes, same SDK patterns. Swap `stripe` for `@zoneless/node`, point it at your instance, and your integration keeps working.
Payouts settle in USDC on Solana. Funds move from a wallet controlled by the platform to a wallet controlled by the seller. Zoneless does not hold the funds.

<table>
<tr>
<td align="center"><strong>~$0.002</strong><br><sub>network cost per payment</sub></td>
<td align="center"><strong>Seconds</strong><br><sub>to settle, 24/7/365</sub></td>
<td align="center"><strong>220+</strong><br><sub>countries &amp; regions</sub></td>
<td align="center"><strong>450k+</strong><br><sub>users on platforms running Zoneless</sub></td>
<td align="center"><strong>~$0.002</strong><br><sub>average network cost per payout</sub></td>
<td align="center"><strong>Seconds</strong><br><sub>to settle on Solana</sub></td>
<td align="center"><strong>2,500+</strong><br><sub>sellers onboarded in production</sub></td>
<td align="center"><strong>73%</strong><br><sub>of eligible sellers chose USDC payouts</sub></td>
</tr>
</table>

## Your own full payments stack
## What is included

- **Dashboard** — Payments, customers, products, and balances in one place. If you know the Stripe dashboard, you know this one.
- **Checkout** — A hosted payment page your customers pay from in seconds. One redirect to integrate, guided wallet flow built in.
- **Connect** — Pay sellers and partners worldwide in seconds, for fractions of a cent. Each seller gets their own Express dashboard to track earnings and payouts.
- **Developer Tools** — API keys, webhooks, and event logs. Everything you need to integrate, test, and debug.
- **Platform dashboard:** View connected accounts, transfers, payouts, and balances.
- **Seller onboarding:** Collect account details and wallet addresses through a hosted onboarding flow.
- **Express dashboard:** Give each seller a place to view earnings, payouts, and account details.
- **Stripe-style API:** Work with familiar resources such as Accounts, Account Links, Transfers, Payouts, Persons, and External Accounts.
- **Developer tools:** Manage API keys, webhook endpoints, events, and logs.
- **Self-hosting:** Run the API, dashboard, database, and wallet infrastructure on your own servers.

## Why Zoneless?
## Why it exists

- **Keep the 2.9%** — Payments cost fractions of a cent in network fees, not a percentage cut.
- **Stripe-compatible API** — Same webhooks, events, object shapes, and SDK patterns. Migrate in an afternoon.
- **Instant settlement** — USDC settles on Solana in seconds, 24/7/365. Not 2–7 business days.
- **Truly global** — Accept payments and send payouts in 220+ countries & regions. No banking restrictions.
- **No chargebacks** — Payments are final. No disputes or fraud reversals.
- **No frozen accounts** — No processor can hold your balance or shut you off.
- **Self-custodial** — Your keys, your money. Funds never touch a third party.
- **Open source** — Apache 2.0 licensed. Audit, fork, self-host. No vendor lock-in or surprise shutdowns.
Stripe Connect can become expensive for marketplaces with lots of sellers, small balances, or frequent payouts. It can also leave platforms dependent on Stripe's country coverage and account approval process.

## Migrate in an afternoon
Zoneless uses USDC and Solana to make the payout part simpler:

Zoneless mirrors Stripe's API one-to-one. Swap the SDK, point it at your instance, and your integration keeps working — same event names, same payloads, same signature verification, same idempotency keys.
- Payouts cost fractions of a cent in network fees.
- Transfers settle in seconds instead of business days.
- The platform and seller keep control of their own wallets.
- The API follows Stripe Connect's resource names and object shapes.
- The whole stack is available under the Apache 2.0 license.

## A drop-in replacement for Stripe Connect

Swap the SDK, point it at your Zoneless instance, and keep your existing payout flow. Accounts, Account Links, Transfers, Payouts, webhook events, idempotency keys, and object shapes follow Stripe Connect's API.

```typescript
// Before — Stripe
// import Stripe from 'stripe';
// const client = new Stripe('sk_live_...');

// After — Zoneless
import { Zoneless } from '@zoneless/node';
const client = new Zoneless('sk_z_...', 'api.example.com');

// Same API you already know
const session = await client.checkout.sessions.create({
mode: 'payment',
line_items: [
{
price: 'price_z_...',
quantity: 1,
},
],
success_url: 'https://example.com/success',
const client = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const account = await client.accounts.create({
type: 'express',
country: 'US',
email: 'seller@example.com',
});

await client.payouts.create({
amount: 10000,
currency: 'usdc',
destination: account.id,
});
```

## How the money moves
The payout is sent as USDC on Solana instead of through a bank. See the [migration guide](https://zoneless.com/docs/migrate-from-stripe) for setup instructions and a complete example.

Every payment settles in USDC — digital dollars worth exactly $1 — moving wallet to wallet with no banks in between.
## How a payout works

1. **Customer pays** — USDC leaves their wallet at checkout. Hosted Checkout guides first-timers through wallet setup in about a minute.
2. **You hold the funds** — Money lands instantly in a wallet you control. No processor sits between you and your revenue.
3. **Send money anywhere** — Payouts, refunds, or withdrawals land in seconds, anywhere in the world.
1. **Create a connected account:** Add the seller through the API or platform dashboard.
2. **Onboard the seller:** Send the seller a hosted Account Link. They enter their details and connect a Solana wallet.
3. **Transfer their earnings:** Allocate funds to the connected account using the Transfers API.
4. **Send the payout:** USDC moves from the platform wallet to the seller's wallet and the API emits the relevant webhook events.

## Battle-tested in production
Sellers can hold or spend the USDC, or move it to an exchange that supports withdrawals in their country.

Zoneless powers payments on [PromptBase](https://promptbase.com), an AI marketplace with **450,000+ users**. At the peak, PromptBase was paying Stripe over **$9,400/month** in fees. After switching to Zoneless:
## Used in production

<table>
<tr>
<td align="center"><strong>~$0.002</strong><br><sub>avg. payout cost</sub></td>
<td align="center"><strong>73%</strong><br><sub>of sellers chose Zoneless over Stripe</sub></td>
<td align="center"><strong>2,200+</strong><br><sub>sellers onboarded</sub></td>
</tr>
</table>
Zoneless was built for [PromptBase](https://promptbase.com), an AI marketplace serving more than 450,000 users. PromptBase had reached more than $9,400 per month in Stripe Connect fees, so it began offering sellers USDC payouts through Zoneless.

Over a 14-week period, 73% of eligible sellers chose Zoneless instead of Stripe for their payouts. More than 2,500 sellers completed onboarding.

## Dashboard and onboarding

> _"At the peak we were paying Stripe over $9,400 a month in Connect fees. I built Zoneless to replace it — payouts now cost fractions of a cent, sellers get paid in seconds, and we onboard countries Stripe never supported."_
>
> — **Ben Stokes**, Founder of [PromptBase](https://promptbase.com)
### Platform dashboard

## Dashboard
Manage connected accounts, transfers, payouts, and balances from the platform dashboard.

You get the full platform dashboard; connected sellers get a familiar Express-style dashboard to view payouts, track earnings, and manage their account — plus guided wallet onboarding.
<p align="center">
<img src="https://zoneless.com/assets/images/screenshots/hero-dashboard.webp" alt="Zoneless platform dashboard" width="700" />
</p>

### Seller onboarding

Send each seller a hosted onboarding link where they can enter their account details and connect a wallet.

<p align="center">
<img src="https://zoneless.com/assets/images/screenshots/hero-dashboard.webp" alt="Zoneless Dashboard" width="700" />
<img src="https://zoneless.com/assets/images/screenshots/onboard.webp" alt="Zoneless connected account onboarding" width="700" />
</p>

### Express dashboard

Each seller gets an Express-style dashboard for viewing earnings, payouts, and account details.

<p align="center">
<img src="https://zoneless.com/assets/images/screenshots/connect.webp" alt="Zoneless Express dashboard for connected accounts" width="700" />
</p>

## Payments

The repository also includes checkout, payment links, customers, products, invoices, and subscriptions. These can be used alongside Connect, but connected accounts and marketplace payouts are the current focus of the project.

## Quick Start

```bash
Expand All @@ -128,10 +144,10 @@ See the full [Quickstart Guide](https://zoneless.com/docs/quickstart) for creati

All guides and API reference docs live at **[zoneless.com/docs](https://zoneless.com/docs)**:

- [Quickstart](https://zoneless.com/docs/quickstart) — end-to-end setup in under 5 minutes
- [Deployment](https://zoneless.com/docs/deployment) — deploy to a VPS with Docker
- [API Reference](https://zoneless.com/docs/account-links) — Checkout, Accounts, Transfers, Payouts, Webhooks, and more
- [Migrate from Stripe](https://zoneless.com/docs/migrate-from-stripe) — step-by-step migration guide
- [Quickstart](https://zoneless.com/docs/quickstart): Set up an instance and make your first API requests
- [Deployment](https://zoneless.com/docs/deployment): Deploy Zoneless with Docker
- [Account Links](https://zoneless.com/docs/account-links): Build hosted onboarding for connected accounts
- [Migrate from Stripe](https://zoneless.com/docs/migrate-from-stripe): Move an existing Stripe Connect payout flow

## Local Development

Expand Down Expand Up @@ -187,4 +203,4 @@ See [SECURITY.md](./SECURITY.md) to report vulnerabilities.

---

If Zoneless is useful to you, consider giving it a star — it helps others find the project.
If Zoneless is useful to you, consider giving it a star. It helps others find the project.
Loading