1. Getting Started
Five minutes from sign-up to your first payment. Everything here happens in this dashboard, with no server to run.
Step 1: Create your account#
- Go to Sign in and enter your email or phone number.
- We send you a one-time code (8 digits by email, 6 by SMS). No password.
- Enter the code. On first sign-in your account is created automatically.
Step 2: Set your sweep destination#
Open Settings → Sweep destination and paste the Solana wallet address where you want payments to land. It can be your treasury, an exchange deposit address, a Phantom wallet, or anything else you control.
This is the single most important setting. Funds are swept here as soon as a payment is confirmed. It's a public address, safe to paste. If it isn't set, payments can't settle.
Optionally also configure:
- Webhook URL: set it to get pushed events (see Webhooks). Recommended for production. The signing secret is generated for you: reveal it in Credentials and copy it into your server's secrets.
A small platform fee is deducted from each settlement by Zuuppa (the platform). You don't configure it and it's not yours to set. You receive your revenue net of that fee. See the accounting note in the Integration guide.
Click Save.
Step 3: Create an API key#
Open API keys → Create key, give it a name (e.g. production), and copy the
key. It looks like:
sk_live_9f2c... (or sk_test_... for a test account)You only see the full key once. Store it in your backend's secrets now. If you lose it, revoke it and create a new one. Keep it server-side. Never ship it to a browser or mobile app.
Step 4: Make your first call#
From your backend, create a payment intent. You get back a deposit address and
a derivation_index to track it:
curl -X POST https://api.zuuppa.com/intents \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "amount_usd_cents": 2500, "accepted_tokens": [{ "kind": "sol" }], "reference": "order-1001" }'{
"derivation_index": 42,
"address": "9xQe...pump",
"client_secret": "cs_7pKf...9dQ2",
"price_usd_cents": 2500,
"expected_lamports": null,
"status": "pending",
"reference": "order-1001"
}The amount is priced in USD; the buyer picks a pay-in token at checkout (via an
SDK, or POST /intents/select-token), which locks
expected_lamports at spot.
Show address (and a QR of it) to your payer, then either wait for a
webhook or poll GET /status?index=42 until it's swept.
That's the whole loop. The Integration guide walks through a complete checkout with code; on iOS the Swift SDK draws the whole payment screen for you.
Watch it happen#
The Payments page in this dashboard lists your intents live (status,
expected vs. received amount, and the deposit address) so you can watch a
payment move from pending to swept as you test.
You can also try the whole flow with no code on the Demo page in this dashboard.
Next: Concepts →