---
title: "A Self-Hosted Gumroad Alternative for Code Sellers: What You Can Own and What You Can't"
description: "Decision guide for code sellers weighing a self-hosted Gumroad alternative: what Gumroad costs on real numbers, which layers of a store can run on your own infrastructure (storefront, GitHub delivery) and which cannot (sales tax), and three paths that keep the delivery yours."
canonical: "https://edgekits.dev/en/blog/self-hosted-gumroad-alternative-code-sellers/"
published: "2026-09-25"
tags: ["Gumroad", "Self-Hosted", "Merchant of Record", "GitHub", "Payments", "RepoAccess"]
---

Twenty sales a month at $99 cost a US seller about $261 in Gumroad fees: 10% plus 50¢ on every sale, then card processing on top. The same twenty sales through Paddle cost $115, and that $261 is before anything Gumroad charges for foreign cards or disputes, which it does not publish as a single figure. That gap is usually the moment a code seller starts typing "Gumroad alternative".

## Self-hosted Gumroad alternatives for code sellers: three layers, and you can own two

A Gumroad sale does three jobs at once. It shows the buyer a product page and takes the card, it acts as the legal seller and files the sales tax, and it hands over the product. For a code seller the third job is where Gumroad stops short: it delivers files, and nothing on its side adds a buyer to a private GitHub repository.

"Self-hosted" can reach two of those layers. The storefront can run on your own server, and so can the delivery. The tax cannot: somebody has to be the seller of record in the buyer's country, and that is either a merchant of record or you.

> **TL;DR**
>
> - At $99 × 20 sales a month, Gumroad fees come to about $261; Paddle $115, Lemon Squeezy $124, Stripe $85
> - The storefront and the GitHub delivery can be self-hosted; sales tax stays with a merchant of record or becomes yours
> - Three ways out: keep Gumroad and own delivery, move to a 5% merchant of record, or sell on Stripe
> - Put GitHub delivery on your own infrastructure and the payment rail becomes a choice you can revisit

## What Gumroad costs a code seller on real numbers

[Gumroad's fee page](https://gumroad.com/help/article/66-gumroads-fees) sets out two layers: 10% plus 50¢ on every direct sale, and card processing of 2.9% plus 30¢ on top. At $99 that is $10.40 to Gumroad and $3.17 to processing per sale, so twenty sales make $208 plus $63.42. A refund returns Gumroad's own share of the fee but not the processing, which brings a month with one refund to $261.02.

Two rules change that picture for other sellers. Sales that arrive through Gumroad's Discover marketplace pay a flat 30% with processing included, and once your paid sales in a calendar month reach $20,000, new direct sales that month drop to 5% plus 50¢. A seller who brings their own buyers at twenty sales a month meets neither.

Here is the same month on the other rails, computed by the engine of my [repo access cost calculator](/en/tools/repo-access-cost-calculator/), which takes your own price and volume:

| $99 × 20 sales a month, US seller | Monthly fees | Who files the sales tax |
| --- | --- | --- |
| Gumroad | $261.02* | Gumroad |
| Paddle | $115.00 | Paddle |
| Lemon Squeezy | $123.90 | Lemon Squeezy |
| Stripe | $85.25 | You |

\* Before international cards and disputes, which Gumroad does not publish as single figures.

Stripe is the cheapest line because it is not a merchant of record. That trade, a lower fee against the tax becoming yours, is what the rest of this article is about.

## Three ways off Gumroad, or around it

Each path below changes the checkout and keeps the GitHub delivery as the same piece: RepoAccess, a worker I built that runs on your own Cloudflare account and is described further down. The paths differ in who files the tax and what the fee is.

### Stay on Gumroad and own the delivery

If Gumroad's audience, its Discover traffic or its payouts to your country are why you sell there, keep it as the checkout. A Gumroad product page can carry a custom field for the GitHub username, and RepoAccess Pro reads it, sends the team invitation, and revokes the access on a refund or a dispute. The fee stays Gumroad's and the delivery becomes yours; what the adapter does with partial refunds and Gumroad's unsigned webhooks is on [the Gumroad integration page](/en/tools/repoaccess/gumroad/).

### Move to a 5% merchant of record

Paddle and Lemon Squeezy keep the tax off your desk at 5% plus 50¢, which is where most of the gap in the table comes from. They are not interchangeable: one charges more per dispute, the other adds 1.5% on foreign cards, and they pay out on different rhythms. [The Paddle and Lemon Squeezy comparison](/en/blog/paddle-vs-lemon-squeezy-selling-code/) sets those differences out for a code seller, and RepoAccess Pro carries an adapter for each.

### Become the merchant yourself

With a Stripe account in your country and the tax work accepted as yours, a Stripe Payment Link with a GitHub username field is the cheapest of the three, about $85 a month in the same scenario before whatever tax compliance costs you. This path needs no Pro at all. The Stripe adapter ships in the free, open-source RepoAccess core, as [the Stripe integration page](/en/tools/repoaccess/stripe/) explains.

## The layer nobody can self-host: sales tax and the merchant of record

A merchant of record is the company whose name is on the buyer's invoice instead of yours. It holds the tax registrations, adds the right VAT, GST or US sales tax at checkout, and files the returns. Gumroad does this for [all sales](https://gumroad.com/help/article/121-sales-tax-on-gumroad), and so do Paddle and Lemon Squeezy.

A store on your own server cannot take that role, and this is the limit of every self-hosted storefront. Even Gumroad can be run that way: the code of its web app has been [on GitHub](https://github.com/antiwork/gumroad) since April 2025, [under the MIT licence](https://x.com/shl/status/1917257166349648135) since the end of that month, and projects such as [Open Payment Host](https://github.com/abishekmuthian/open-payment-host) cover the same ground. Running any of them gives you the storefront, makes you the seller on every invoice, and still adds nobody to a private GitHub repository.

Without a merchant of record, the tax work is yours. Stripe will calculate and collect the tax [at 0.5% per transaction](https://stripe.com/tax/pricing) in places where you are registered, but that plan does not file or remit, and automated filing starts at $90 a month on its higher plan. Registering in each place where you owe tax is a step of its own.

Where Stripe is not open to sellers at all, this path ends before tax comes into it, and [the guide to selling code when Stripe will not have you](/en/blog/stripe-not-available-in-my-country-sell-code/) covers the rails that will.

## Delivery is the part worth self-hosting

For code, delivery is not a download link. The buyer joins a GitHub team, gets every commit you push after that, and loses access when the money goes back. No storefront does any of that, and Gumroad itself stops at the receipt.

That layer is small, and it can live on your own account. RepoAccess, the delivery piece in all three paths above, is a single Cloudflare Worker that turns a payment webhook into a GitHub team invitation and a refund into a revoke, running on Cloudflare's free plan and taking no cut of any sale. The other self-hosted delivery tools, and how they differ on revokes and upkeep, are compared in [the full guide to selling private repo access](/en/blog/sell-access-private-github-repo-every-option-compared/).

Because the delivery sits on its own, it does not care which rail sent the payment. That is what lets you move between the three paths above without rebuilding anything.

## How the money reaches you on each path

On Gumroad the country decides the channel: a bank account in the local currency where Gumroad offers bank payouts, otherwise PayPal, in dollars and minus 2%. Money leaves on the weekly, monthly or quarterly rhythm you set, once a sale has spent seven days in your balance and the total has reached $100, and a bank transfer then needs two to seven business days, per [Gumroad's payout page](https://gumroad.com/help/article/13-getting-paid).

Stripe pays to your bank account on a schedule you choose, daily, weekly, monthly or manual, after a first payout that Stripe [typically schedules within 7 to 14 days](https://docs.stripe.com/payouts) of the first live payment. Paddle pays once a month and Lemon Squeezy twice, and the comparison linked above sets the two side by side.

## What self-hosting costs you

Every layer you take back is one you now run. A self-hosted storefront is a server to patch and a checkout to keep working. A worker is lighter, but the GitHub token behind it still has to be renewed before it expires, and the provider's webhooks still change on the provider's schedule.

Leaving Gumroad also means leaving its marketplace. Discover sales carry a 30% fee, but they are buyers you did not have to find, and a store on your own domain gets none of them. Before you move, check that the rail you move to pays out to your country, because Gumroad's payout reach is part of what its fee buys.

Becoming the merchant is the largest step. Registration, collection and filing are yours wherever you owe tax, and Stripe verifies your identity and business before the money flows. For many code sellers a 5% merchant of record is the middle ground: someone else files the tax, and the delivery is still yours.

## Keep the delivery, choose the rail

The question behind "self-hosted Gumroad alternative" is rarely the storefront. It is who holds the part a buyer cares about after paying: the access to your repository, and its removal when the money goes back.

[RepoAccess Pro](/en/tools/repoaccess/) keeps that part on your own Cloudflare account, with adapters for Gumroad, Paddle, Lemon Squeezy, Razorpay and Telegram Stars, while the free core covers Stripe. You pay for it once, no sale is ever shared with it, and moving between the rails above is a change of adapter rather than a new build.

## Frequently Asked Questions

**Q: How much does Gumroad take from a code seller on each sale?**

**A:** On a direct sale Gumroad charges 10% plus 50 cents, and card processing of 2.9% plus 30 cents comes on top. On a $99 product that is $10.40 to Gumroad and $3.17 to processing. For a US seller with 20 sales a month and one refund, fees come to about $261 a month, because a refund returns Gumroad's own share but not the processing. Sales through Gumroad's Discover marketplace pay a flat 30% instead, and once paid sales in a calendar month reach $20,000, new direct sales that month drop to 5% plus 50 cents.

---

**Q: Can I self-host Gumroad?**

**A:** Technically yes. Gumroad published the code of its web app on GitHub in April 2025 and moved it to the MIT licence on April 29, so you may run and modify it. The README lists Ruby, Node, Docker, MySQL 8, Redis and Elasticsearch, plus your own Stripe and PayPal credentials for real payments. What the code does not include is Gumroad the company: once it runs on your server, you are the seller of record, the sales tax is yours to file, and there is still no step that adds a buyer to a private GitHub repository.

---

**Q: Who pays the sales tax if I sell code from my own self-hosted store?**

**A:** You do. A store on your own server cannot be a merchant of record, so registering for VAT, GST or US sales tax where you owe it, collecting it and filing it are your job. Stripe Tax Basic calculates and collects tax at 0.5% per transaction where you are registered, but does not file or remit; automated filing starts at $90 a month on Stripe Tax Complete. The alternative is to keep a merchant of record such as Gumroad, Paddle or Lemon Squeezy, which files the tax in exchange for a higher fee.

---

**Q: Can Gumroad give buyers access to a private GitHub repository?**

**A:** Not by itself. A Gumroad sale ends with a receipt and a webhook, and Gumroad has no GitHub step. What it does have is a custom checkout field, so the buyer can type their GitHub username while paying. A delivery tool then reads that field from the sale and adds the buyer to the GitHub team that holds the repository. RepoAccess Pro does this with a Gumroad adapter on your own Cloudflare account, and revokes the access on a refund or a dispute, a partial refund included.

---

**Q: Is Lemon Squeezy a good Gumroad alternative for selling code?**

**A:** On fees, yes: Lemon Squeezy charges 5% plus 50 cents with processing included, against Gumroad's 10% plus 50 cents plus 2.9% and 30 cents of processing. In the same scenario of 20 sales a month at $99, Lemon Squeezy costs about $124 a month and Gumroad about $261. Both are merchants of record. Two differences matter for code: Lemon Squeezy adds 1.5% on non-US cards, and it documents no dispute event, so revoking GitHub access after a Lemon Squeezy chargeback is manual. Paddle is the other 5% option.

---

**Q: How does Gumroad pay out to sellers?**

**A:** Your country sets the channel. Where Gumroad offers bank payouts, the money goes to a local account in the local currency; everywhere else it goes to PayPal, in dollars, with 2% taken off. Payoneer, Wise and wire transfers are not offered. Payouts follow a weekly, monthly or quarterly rhythm you choose, each sale is held for a week first, nothing is sent below $100, and a bank transfer then takes two to seven business days. Instant payouts, at 3% and up to $10,000, are open only to US sellers with 60 days of history.

---

**Q: What is the cheapest way to sell code after leaving Gumroad?**

**A:** Stripe, if Stripe accepts sellers from your country and you are ready to handle sales tax yourself: about $85 a month for 20 sales at $99, against about $261 on Gumroad. The cheapest option that still files the tax for you is a 5% merchant of record: Paddle at about $115 or Lemon Squeezy at about $124 in the same scenario. On any of these, GitHub delivery is a separate piece; on Stripe the free RepoAccess core covers it, and on Paddle or Lemon Squeezy RepoAccess Pro does.

---

**Q: When is staying on Gumroad the right choice for a code seller?**

**A:** When something only Gumroad gives you outweighs the fee. Its Discover marketplace brings buyers you did not have to find, at a flat 30%. It is the merchant of record for every sale, and it pays out to local bank accounts in local currency across a long list of countries. If those matter to you, keep Gumroad as the checkout and move only the delivery: a Gumroad custom field collects the GitHub username, and a delivery layer on your own infrastructure grants and revokes the repository access.

```json
{"@context":"https://schema.org","@graph":[{"@type":"BlogPosting","headline":"A Self-Hosted Gumroad Alternative for Code Sellers: What You Can Own and What You Can't","description":"Decision guide for code sellers weighing a self-hosted Gumroad alternative: what Gumroad costs on real numbers, which layers of a store can run on your own infrastructure (storefront, GitHub delivery) and which cannot (sales tax), and three paths that keep the delivery yours.","image":"https://cdn.edgekits.dev/public/blog/2026/self-hosted-gumroad-alternative-code-sellers/self-hosted-gumroad-alternative-code-sellers-hero.jpg","author":{"@type":"Person","name":"Gary Stupak","url":"https://x.com/GaryEdgeKits"},"datePublished":"2026-09-25T16:01:00.000Z","dateModified":"2026-09-25T16:01:00.000Z","keywords":["Gumroad","Self-Hosted","Merchant of Record","GitHub","Payments","RepoAccess"],"mainEntityOfPage":{"@type":"WebPage","@id":"https://edgekits.dev/en/blog/self-hosted-gumroad-alternative-code-sellers/"},"publisher":{"@id":"https://edgekits.dev/#organization"}},{"@type":"Organization","@id":"https://edgekits.dev/#organization","name":"EdgeKits","url":"https://edgekits.dev","logo":"https://cdn.edgekits.dev/public/branding/edgekits-logo.png","sameAs":["https://x.com/GaryEdgeKits","https://github.com/EdgeKits","https://www.linkedin.com/in/gary-stupak/"]}]}
```