Skip to content
Select themeSelect language

`PUT /api/admin/marketplace/fee-settings` — update the platform fee settings.

PUT
/api/admin/marketplace/fee-settings
curl --request PUT \
--url https://example.com/api/admin/marketplace/fee-settings \
--header 'Content-Type: application/json' \
--data '{ "currency": "example", "kind_fee_overrides": "example", "min_payout_cents": 1, "package_fee_percent": 1, "runner_fee_percent": 1, "subscription_grace_days": 1 }'
Media typeapplication/json
object
currency
string | null
kind_fee_overrides

ADR 0034 P4 — per-kind platform fee overrides ({kind: percent}). Absent kinds fall back to package_fee_percent.

min_payout_cents
required
integer format: int32
package_fee_percent
required
number format: double
runner_fee_percent
required
number format: double
subscription_grace_days

#1111 — the marketplace subscription dunning window, in days (0-90). Omitted leaves the stored value untouched, so an admin editing only the fee percentages never silently resets a window they never saw.

integer | null format: int32
Examplegenerated
{
"currency": "example",
"kind_fee_overrides": "example",
"min_payout_cents": 1,
"package_fee_percent": 1,
"runner_fee_percent": 1,
"subscription_grace_days": 1
}
Media typeapplication/json

Singleton platform fee configuration (id = ‘active’). Fee percentages are stored as NUMERIC(5,2) in Postgres and cast to float8 in queries so the Rust side receives f64 without requiring a decimal crate.

object
created_at
required
string format: date-time
currency
required
string
effective_from
required
string format: date-time
id
required
string
kind_fee_overrides
required

ADR 0034 P4 — per-kind platform fee overrides ({kind: percent}); a kind absent here falls back to package_fee_percent.

min_payout_cents
required
integer format: int32
package_fee_percent
required
number format: double
runner_fee_percent
required
number format: double
subscription_grace_days
required

#1111 (ADR 0027 subscription slice) — the dunning window, in days, between a subscription period ending and its license actually lapsing. It absorbs BOTH the renewal-webhook flight time and Stripe’s payment retries, so a paying buyer is never locked out mid-retry. Operator-owned because ADR 0027 puts the Marketplace commercial policy in the Admin Pricing section; 0 means “lapse the instant the period ends”.

integer format: int32
updated_at
required
string format: date-time
updated_by
string | null format: uuid
Examplegenerated
{
"created_at": "2026-04-15T12:00:00Z",
"currency": "example",
"effective_from": "2026-04-15T12:00:00Z",
"id": "example",
"kind_fee_overrides": "example",
"min_payout_cents": 1,
"package_fee_percent": 1,
"runner_fee_percent": 1,
"subscription_grace_days": 1,
"updated_at": "2026-04-15T12:00:00Z",
"updated_by": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}