A store for one seller is a Stripe Checkout page per product, a webhook that records the order and an email with a signed, expiring download link, and an agent builds that in a weekend. The gaps are the ones around the code: sales tax and EU VAT stay your job (Stripe Tax calculates, you still register and file), the store needs a public HTTPS address and mail that reaches inboxes, and PayPal, upsells, abandoned-cart emails and affiliates each become code you keep alive. Sellfy also sells subscriptions, print-on-demand merch and physical goods, which the build below leaves out.
Before you buildSellfy has no free plan, only a 14-day trial. Payhip's free plan has no monthly fee but keeps 5% of each sale.
Build me a one-seller download store to replace Sellfy. Requirements: - Node.js 22 + TypeScript: a Fastify server rendering pages with Eta. `npm start` serves the storefront on http://localhost:4900 and the admin on /admin. - Storage: better-sqlite3 in ./data/store.db for products (title, slug, description, price in cents, currency, cover image), orders and download tokens. Product files live in ./data/files/. A product can instead hand out one license key per sale from a pasted list. - Checkout: Stripe Checkout in payment mode (`stripe`), with STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET in .env, promotion codes enabled, and automatic tax switched on when STRIPE_TAX=1 is set. - Fulfilment only from the webhook: verify the signature on `checkout.session.completed`, save the order once (unique on the Stripe session id), then email the buyer through nodemailer SMTP from .env. Never trust the success redirect. - Downloads: /d/<token> is an HMAC-signed link valid for 7 days and 5 downloads that streams the file with Range support. A buyer can ask for a fresh link by entering the email used to pay. - Admin: one password in .env (signed cookie) to add products, upload files, see orders, refund through the Stripe API, and `npm run export` a CSV of orders with a newsletter-consent column. - Single seller. No accounts, no telemetry, local-first: outbound calls go to Stripe and your SMTP server only. - Out of scope: PayPal, subscriptions, physical products and shipping, print-on-demand, upsells, abandoned-cart emails, affiliates. - Done when a payment with Stripe's 4242 test card sends the email, the link downloads the file, and replaying the same webhook creates no second order. - README: Stripe test-mode setup with the Stripe CLI, exposing the store through a tunnel or a VPS, and a plain warning that you stay responsible for registering and filing sales tax and VAT.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Sellfy.
Extend the download store in this folder. Requirements: - Create Checkout sessions with `after_expiration.recovery.enabled` and ask for promotional-email consent with `consent_collection.promotions: "auto"`. - Handle `checkout.session.expired`: if the buyer gave consent and left an email, send one reminder an hour later with the recovery URL. Never send a second one for the same session. - Add an unsubscribe link signed with an HMAC token; unsubscribed addresses are never emailed. - Show recovered sales as a count in the admin orders page. - Update the README with the consent wording you chose.
Add bundles and pay-what-you-want pricing to the download store in this folder. Requirements: - A bundle is a product that lists other products; one payment unlocks every file in it. - A pay-what-you-want product has a minimum and a suggested amount; create the Stripe Price with `custom_unit_amount` when the product is saved and reject any amount below the minimum. - Show both on the storefront and in the order email; the admin lists which bundle a sale came from. - Add tests for the minimum-amount check and for bundle download links. - Update the README.
Add a Sellfy importer to the download store in this folder. Requirements: - `npm run import-sellfy -- orders.csv` reads the file from Orders > Export in Sellfy. - Match each row's product name to a product here (a mapping file for names that differ), and list rows that can't be matched without writing anything. - Create an order per row with the original date and payer email, marked as imported. Send no email and skip rows already imported, so a second run changes nothing. - Imported buyers can request a fresh link on the store with the email they paid with. - Update the README with the export steps.
Sellfy turns the awkward parts of selling a file into settings: store design, VAT rules, delivery of large files and email to buyers. The plans take no cut of sales apart from Stripe or PayPal fees, which suits creators whose revenue is steady, and a broken download link costs more in refunds and goodwill than the subscription.
Estimate · Runs on a free tunnel or a $5 VPS with SMTP on a free tier; add a little for a domain. Stripe's card fees apply on Sellfy too. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $29 | $22 | Unlimited products, sales up to $10k a year, product files up to 10 GB, 0% transaction fees, own domain, store editor and themes, custom code, 2,000 free email credits. |
| Business | $79 | $59 | Sales up to $50k a year, product files up to 15 GB, removes Sellfy branding, custom fields, upselling, cart abandonment emails, affiliate program, store design migration, 10,000 free email credits. |
| Premium | $159 | $119 | Sales up to $200k a year, product files up to 20 GB, product migration, priority support, 50,000 free email credits. |
| High volume | custom | — | For stores selling more than $200k a year. |
No free plan: every plan starts with a 14-day free trial.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: PayPal checkout next to cards, Subscription products, print-on-demand merch and physical goods with shipping.
About $29 a month on the Starter plan, $348 a year (checked 2026-10-19).
PayPal checkout next to cards; Subscription products, print-on-demand merch and physical goods with shipping; Upselling, abandoned-cart emails and the affiliate program; Email marketing with sending credits built in; A store editor with themes and a screen for VAT and tax settings. If any of those matter to you, keep paying.
Yes: Easy Digital Downloads (open source), WooCommerce (open source), Gumroad (source) (open source).