Marketplace Settings

This is the per-marketplace configuration that controls how Connect behaves for your sub-merchants — your fees, your payout window, the currencies you accept, and the redirect URL you send users to after KYC.

Endpoints

MethodPathDescription
GET/api/connect/settingsReturns your marketplace's current settings.
PATCH/api/connect/settingsUpdates the editable fields.

Both routes are authenticated with your standard marketplace API key. They always act on your own settings — X-On-Behalf-Of is not used here.

Fields

Fee fields

FieldTypeDefaultSelf-service
marketplaceFeeRatePer1000int (0–10000)0yes
marketplaceFeeFixedInCentsint (≥ 0)0yes
marketplaceFeeBearer"SUB_MERCHANT" | "MARKETPLACE""SUB_MERCHANT"yes

marketplaceFeeRatePer1000

This is your marketplace's take-rate, applied to the gross payin amount (before Inflow's own fees), in line with Stripe Connect's application_fee_amount semantics.

The calculation is:

effective_rate = value / 100_000

Important — easy to misread. Despite the name, the rate is not value/1000. The actual divisor is 100,000. Examples:

ValueEffective rate
100.01%
2500.25%
10001%
25002.5%
1000010% (current cap)

The rate is capped at 10000 (10%). Need a higher rate for an enterprise deal? Contact your Inflow account manager.

marketplaceFeeFixedInCents

Flat fee, in cents, added on top of the rate-based component. Charged on every payin.

marketplaceFeeBearer

Decides who actually pays the marketplace fee:

  • "SUB_MERCHANT" (default) — the fee is deducted from the sub-merchant's payin and routed to your marketplace balance.
  • "MARKETPLACE" — the marketplace absorbs the fee on its own margin: the sub-merchant receives the full payin minus only Inflow's own fees, and your balance is not credited a marketplace fee for that payin.

See Fees and Payouts for the full collection flow.

Payout window fields

FieldTypeDefaultSelf-service
payoutWindowHoursint (0–720)24yes
payoutWindowMaxReleaseRateint (0–1000)1000yes

payoutWindowHours

Cooldown, in hours, during which an incoming payin is locked against withdrawal to absorb potential refunds and chargebacks. 0 disables the window (instant availability).

Maximum is 720 hours (30 days).

A sub-merchant's available-for-withdrawal balance is their on-platform balance minus any payins still inside the window.

payoutWindowMaxReleaseRate

How much of the in-window payin amount can be released early, in per-1000 units. Inverted vs. the marketplace fee rate:

  • 1000 (default) — 100% locked: nothing released until the window elapses.
  • 0 — 0% locked: payouts are never gated by the window (equivalent to payoutWindowHours = 0).
  • 500 — 50% of in-window payins are releasable now, the rest waits for the window.

Payout default fields

FieldTypeDefaultSelf-service
payoutFeeBearer"MARKETPLACE" | "SUB_MERCHANT""MARKETPLACE"yes
autoCreateWalletsbooltrueyes

payoutFeeBearer

Default bearer of network/payout fees when sub-merchants withdraw. Can be overridden per-payout on the payout request.

autoCreateWallets

When true (recommended), Inflow provisions the sub-merchant's wallet automatically on KYC approval, so they can receive funds immediately. When false, wallet creation is deferred until the first incoming payment, which can race a sub-merchant's first checkout. Leave at true unless you have a specific reason not to.

Currency and onboarding

FieldTypeDefaultSelf-service
enabledCurrencies("USDC" | "EURC")[]["USDC", "EURC"]yes
defaultRedirectUrlKycstring | nullnullyes

enabledCurrencies

Stablecoins your sub-merchants can receive and withdraw. Cannot be empty.

defaultRedirectUrlKyc

Default URL that sub-merchants are sent back to after they finish KYC. Can still be overridden per POST /api/connect/accounts call (redirectUrlKyc) and per GET /api/connect/accounts/:id/kyc/status call (redirectUri).

Inflow-controlled fields

GET /api/connect/settings also returns two read-only flags so you always know your live Connect status:

  • connectEnabled — master switch for your marketplace's Connect access. When false, all Connect routes return 403 CONNECT_DISABLED and merchant routes called with X-On-Behalf-Of return 403 ON_BEHALF_CONNECT_DISABLED.
  • paused — short-lived compliance hold. When true, all Connect routes return 403 MARKETPLACE_PAUSED and on-behalf-of routes return 403 ON_BEHALF_MARKETPLACE_PAUSED. Sub-merchant balances and KYC are preserved — only new transactional activity is blocked.

Both are managed by Inflow and cannot be set via PATCH — sending them in the body returns 400. See Suspension and Lifecycle for what each one means and when it's used.

Example: read settings

curl https://api.inflowpay.xyz/api/connect/settings \
  -H "Authorization: Bearer $INFLOW_API_KEY"
{
  "id": "cms_…",
  "marketplaceUserId": "usr_…",
  "marketplaceFeeRatePer1000": 2500,
  "marketplaceFeeFixedInCents": 0,
  "marketplaceFeeBearer": "SUB_MERCHANT",
  "payoutWindowHours": 24,
  "payoutWindowMaxReleaseRate": 1000,
  "payoutFeeBearer": "MARKETPLACE",
  "autoCreateWallets": true,
  "enabledCurrencies": ["USDC", "EURC"],
  "defaultRedirectUrlKyc": "https://marketplace.example.com/connect/kyc-complete",
  "connectEnabled": true,
  "paused": false,
  "createdAt": "2026-04-15T10:23:00.000Z",
  "updatedAt": "2026-04-22T14:01:11.000Z"
}

Example: lower the take rate to 1.5%

curl -X PATCH https://api.inflowpay.xyz/api/connect/settings \
  -H "Authorization: Bearer $INFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "marketplaceFeeRatePer1000": 1500 }'

The response is the full updated settings object.

Validation errors you should expect

HTTPWhen
400marketplaceFeeRatePer1000 > 10000, negative fixed fee, payoutWindowHours > 720, enabledCurrencies empty, unknown enum, or connectEnabled / paused present in the body.
401Missing or invalid API key.
403 (CONNECT_DISABLED / MARKETPLACE_PAUSED)Connect access is currently frozen for your marketplace.
403 (no error code)Caller is not a marketplace account.