Build for Dunea

Pricing and payouts

Free, one-time and monthly listings, how owners pay, Dunea's fee, Stripe Connect payouts, earnings, subscriptions and refunds.

Plugins, themes, templates and skills can be free or paid. You set the price in the manifest's pricing; Dunea handles checkout and pays you through Stripe. Plugins can also charge per use, from the owner's Dunea credits: see Priced tools and metered usage. For every way to earn, see Ways to earn.

Pricing models

ModelManifestHow the owner pays
Free{ "model": "free" }Nothing. The install is active straight away.
One-time{ "model": "one_time", "amount": 1900, "currency": "USD" }Once, at install.
Monthly{ "model": "monthly", "amount": 900, "currency": "USD", "trialDays": 14 }Every month while installed, after an optional trial.
  • amount is in US cents, from 100 ($1) to 99,900 ($999).
  • currency is always "USD".
  • trialDays (monthly only) is 0 to 30 days.
  • Templates are free or one-time only: a remix is a copy the owner keeps, so there is nothing to bill monthly.

How owners pay

When an owner installs a paid listing (or remixes a paid template), Dunea sends them to Stripe Checkout. The install waits in pending_payment and becomes active once the payment goes through. Your service receives plugin.installed, with the access token, when the install becomes active.

For monthly listings, Dunea bills the owner every month. When an owner uninstalls a monthly listing, its billing is cancelled.

When a subscription lapses

If a renewal payment fails, Stripe keeps retrying and the install keeps working for 3 days after its paid period ends. A subscription the owner cancelled gets no grace period: it ends when the paid period does. Once the subscription lapses, Dunea suspends the install and:

  • emails the owner that the listing was suspended because its subscription lapsed, with a link to renew;
  • for plugins, sends your service plugin.uninstalled with { "reason": "payment" }. The install's token stops working until the owner pays; then you receive plugin.reactivated (see plugin.uninstalled).

A full refund of a one-time purchase suspends the install the same way, with { "reason": "refund" }, and emails the owner.

If the owner then pays the outstanding invoice, the install becomes active again.

Dunea's fee

Under the founding creator terms, you keep 100% of your first $25,000 of lifetime gross. After that, Dunea's fee is 15% on plugins and skills, 10% on themes and templates, and 15% on usage. The numbers are FEE_SCHEDULE in @dunea/plugin-sdk; see Ways to earn for how the allowance is counted.

Earnings are recorded per charge: one row for a one-time payment, one for each paid monthly invoice, and one for each usage charge. Each shows the gross amount, the platform fee and your net amount.

Getting paid: Stripe Connect

Payouts go to a Stripe Connect Express account in your name.

Start onboarding

In the developer portal, open payouts and start Stripe onboarding. (The API behind it is POST /api/marketplace/dev/payouts/connect with a returnUrl; it returns a Stripe onboarding URL.)

Complete Stripe's form

Stripe asks for your identity and bank details, and sends you back to Dunea when you are done.

Check your status

Your payouts status is one of:

StatusMeaning
noneYou have not started onboarding.
pendingOnboarding started, or Stripe is still checking your details.
activePayouts are on.
restrictedStripe needs more information before it can pay you. Reopen onboarding to see what.

Set up payouts before you submit anything paid: paid listings, paid tools and metered usage can't be submitted without it (DUN-B001).

Earnings

The developer portal shows your earnings for any date range (GET /api/marketplace/dev/earnings?from=&to=):

  • Totals: gross, platform fee and net, in USD
  • By stream: net from sales, subscriptions, usage, referrals and services (byStream)
  • By listing: gross, net and the number of charges for each listing
  • Recent activity: each charge, marked earned or refunded, with its stream, and for usage and referral rows when it becomes payable (payableAt) and whether it's been paid
  • Holds: usage and referral net still inside the 30-day hold (onHold), and what's payable at the next transfer (payable)
  • Founding creator allowance: lifetime gross still fee-free (founderAllowanceRemaining)

Refunds

When a charge is refunded, the matching earnings are reversed: a refunded entry appears in your recent activity and your net is reduced accordingly. If you take payments for your own service separately (for example, your own subscription outside Dunea), refunds for those are between you and the owner.

For now, Dunea admins issue refunds for marketplace sales and subscription invoices. An owner who wants a refund contacts Dunea support. A refund can be partial, and it comes out of each side in proportion: Stripe takes your share back from your connected account, and Dunea gives back its share of the fee. For example, refunding half of a $20 sale with a $3 fee takes $8.50 from you, and Dunea returns $1.50. A full refund of a one-time purchase also suspends that install. Usage charges are refunded in credits, by you or an admin.

Changing your price

pricing is part of the manifest, so a price change ships as a new version and goes through review like any other change. See Versioning and permission changes.

On this page