Rozo Intent Pay enables seamless crypto payments for your app. Onboard users from any chain, any coin into your app with one click and maximize your conversion.
Every payment takes a required appId. You do not need to email anyone or wait for approval to get one — appId is a namespace string you choose to group your transactions in the Rozo dashboard.
There are two ways to get going:
Use the shared sandbox appId rozoSandbox to run the SDK end-to-end immediately, no signup required:
"use client";
import { RozoPayButton } from "@rozoai/intent-pay";
<RozoPayButton
appId="rozoSandbox" // public shared sandbox — testing only
toChain={8453} // Base
toAddress="0xRecipient..." // your receiving address
toToken="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" // USDC on Base
toUnits="1" // display amount, in USDC (string, not base units)
intent="Pay"
preferredSymbol={["USDC", "USDT"]}
onPaymentCompleted={(e) => console.log("done", e.paymentId)}
/>
rozoSandboxis a shared, public sandbox namespace meant only for trying the SDK out. Do not use it in production — transactions under it are co-mingled with everyone else's test traffic and the namespace may be cleared at any time. Switch to your ownappId(below) before you ship.
When you're ready for production — your own namespace, webhook events, branded checkout, and API-key auth — self-register through the Rozo merchant portal. It's a 2-minute, fully self-serve flow (email OTP → pick a slug → done). No human approval step:
- Open the Rozo Partners portal and enter your email; you'll get a 6-digit code.
- Choose "Wallet (Dapp developer)" as the account type (developers don't need to provide a settlement wallet — that's only for merchants).
- Pick a slug (e.g.
coffee-studio). The portal derives yourappIdautomatically:wallet_<slug>(ormerchant_<slug>for merchant accounts). - You're dropped into Settings → API Keys, where you issue your first
rz_live_...API key (shown once — copy it). Pass it as theX-API-Keyheader when yourappIduses a portal-issued prefix.
That's the whole loop — no email to support, no domain whitelisting request.
npm install @rozoai/intent-pay @rozoai/intent-common \
@tanstack/react-query wagmi viem \
@creit.tech/stellar-wallets-kit @stellar/stellar-sdk// providers.tsx — wrap your app once (see docs/PROVIDER_SETUP.md for SSR details)
"use client";
import { getDefaultConfig, RozoPayProvider } from "@rozoai/intent-pay";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { useState } from "react";
import { createConfig, WagmiProvider } from "wagmi";
export function Providers({ children }: { children: React.ReactNode }) {
const [config] = useState(() =>
createConfig(getDefaultConfig({ appName: "Your App", ssr: true })));
const [qc] = useState(() => new QueryClient());
return (
<WagmiProvider config={config}>
<QueryClientProvider client={qc}>
<RozoPayProvider>{children}</RozoPayProvider>
</QueryClientProvider>
</WagmiProvider>
);
}Then drop a <RozoPayButton appId="rozoSandbox" ... /> (snippet above) anywhere inside the provider and read the result from onPaymentCompleted, or poll with the useRozoPayStatus() hook / getPayment(id) on your backend.
Result truth lives on the backend. Treat
onPaymentCompletedas a UI hint and confirm settlement server-side (webhook orgetPayment) before fulfilling.
- 🌱 Cross-chain payments from 1000+ tokens in under 1 minute.
- 💡 Single transaction — no multiple wallet steps.
- ⚡️ Permissionless — we never hold funds.
- 💱 Works with major wallets and exchanges.
- 💨 Integrate in minutes, minimal code required.
EVM Wallets: MetaMask, Coinbase Wallet, Trust Wallet, Rainbow Wallet, Family Wallet, Zerion, OKX, Bitget
Solana Wallets: Phantom, Backpack, Solflare
Stellar Wallets: Albedo, Freighter, Hot Wallet, etc. (Refer to: https://stellarwalletskit.dev/#compatible-wallets)
Mobile Wallets: All above wallets with mobile app support and deep-linking
For a complete list of supported tokens and chains, see the Supported Tokens and Chains documentation.
You can find the full Rozo Pay documentation at docs.rozo.ai.
For in-repo SDK prop reference, see RozoPayButton Props.
For correct provider setup (Next.js App Router, Vite, SSR patterns), see Provider Setup Guide.
For analytics, telemetry opt-out, and what data is tracked, see Analytics & Telemetry.
Check out complete examples and code snippets at Complete Examples, including:
- Framework-specific examples (Next.js, Vite/CRA)
- Use case examples (E-commerce checkout, Donation component, Stellar payout)
- Complete code examples ready to copy-paste
You can also check out the Next.js example app in this repository.
Check out our Demo Page at demo.rozo.ai
Clone the repository and build the SDK in dev mode:
git clone https://github.com/RozoAI/intent-pay.git
cd intent-pay/packages/connectkit
pnpm i
pnpm run devThe rollup bundler will now watch file changes in the background. Try using one of the examples for testing:
cd examples/nextjs-app
pnpm i
pnpm run devAny changes will be reflected on the Pay button in the example app.
Daimo Pay is noncustodial and runs on open-source, audited contracts. See packages/contract.
Audits:
Contact us if you'd like to integrate Rozo Pay.
See LICENSE for more information.
Rozo Intent Pay SDK is a fork of Daimo developed by Daimo. We're grateful to them for making cross chain payment fast, simple and open-source.
Daimo Pay SDK is a fork of Connectkit developed by Family. We're grateful to them for making Connectkit fast, beatiful and open-source.
To publish a new version of @rozoai/intent-pay:
# Beta release (bumps prerelease version, publishes with `beta` tag)
pnpm run publish:beta
# Latest release (bumps stable version, updates CHANGELOG, publishes with `latest` tag)
pnpm run publish:latest