Quickstart
Get from zero to your first test sale in about ten minutes. Everything below can be done from the dashboard; the API equivalents are shown for sellers who want to automate.
1. Create your seller account
Sign up with an email and a password of at least 12 characters. You land on your dashboard, logged in.
API equivalent
curl -c cookies.txt -X POST https://YOUR_HOST/api/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com","password":"a-strong-password-here"}'
# -> 201 { "seller": { "id": "...", "email": "you@example.com", ... } }
Registration logs you in immediately: the session cookie is stored in
cookies.txt above. Sign in later with
POST /api/auth/login (same body), sign out with
POST /api/auth/logout.
2. Connect your Stripe account
Payments run on your Stripe account. On your dashboard, click Connect with Stripe and complete Stripe’s sign-up; you come back to your dashboard when it’s done. There are no keys to copy and no webhooks to register. Details in Stripe setup.
3. Create a product
In Sell something new, give the product a name and a price, attach the file (up to 500 MB), choose a download limit (1–25) and link expiry (1–30 days), and optionally turn on license keys. On the Pro plan you can also pick Unlimited downloads and Never expires.
API equivalent
curl -b cookies.txt -X POST https://YOUR_HOST/api/products \
-H 'Content-Type: application/json' \
-d '{
"name": "My Ebook",
"description": "A great read.",
"price_cents": 1900,
"license_enabled": false,
"download_limit": 5,
"expiry_days": 7
}'
# -> 201 { "product": { "id": "...", "slug": "3f9a1c2e7b8d4e01", ... } }
curl -b cookies.txt -X POST https://YOUR_HOST/api/products/PRODUCT_ID/file \
-F 'file=@/path/to/ebook.pdf'
# -> 200 { "product": { "has_file": true, "file_name": "ebook.pdf", ... } }
price_cents is an integer in cents. download_limit
is 1–25 (default 5); expiry_days is 1–30 (default 7).
On Pro you may pass null for either field (unlimited / never
expires); null on Free is rejected. Replacing a file deletes the
previous version from storage.
4. Share your buy link
Every product gets a public page at https://YOUR_HOST/buy/<slug>.
The slug is a random 16-character id, so product names never have to be
unique. Use Copy link in your products table and put it
anywhere — your site, a newsletter, a social bio. Buyers enter their
email, pay via Stripe Checkout, and get their download link by email.
5. Run a test purchase
Open your buy link, pay with one of Stripe’s test cards if this deployment runs in Stripe test mode, and check that the download email arrives. Then refund the payment from your Stripe Dashboard: the download link stops working.
Useful endpoints
GET /api/products— list your productsGET /api/stats— sales, revenue, and download counts per productGET /api/analytics/orders— per-order drill-down (?from=&to=&page=&limit=)GET /api/analytics/orders.csv— the same as a CSV downloadGET /api/licenses— list issued license keys