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.

You can also edit these settings in the dashboard from Connect → Settings. See Settings.

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
marketplaceDepositFeeRatePer1000int (0–10000)0yes
marketplaceDepositFeeFixedInCentsint (≥ 0)0yes
marketplaceFeeBearer"SUB_MERCHANT" | "MARKETPLACE""SUB_MERCHANT"yes

These are your global fees, applied to all sub-merchants. To charge a specific sub-merchant different rates, use a per-sub-merchant fee override.

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? Tick Need higher than 10% for an enterprise deal when you request Connect access. See Request Connect Access.

marketplaceFeeFixedInCents

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

marketplaceDepositFeeRatePer1000 / marketplaceDepositFeeFixedInCents

Same semantics as the payin fees above, but applied to virtual-account deposits received by your sub-merchants (same /100 000 rate scale, same fixed-fee behavior).

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

Number of hours during which an incoming payment stays pending (not yet withdrawable), to absorb potential refunds and chargebacks. After the window elapses, the funds become available for payout. 0 disables the window (instant availability).

Maximum is 720 hours (30 days).

A sub-merchant's available balance is their total balance minus any payments still pending 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 balance account automatically on KYC approval, so they can receive funds immediately. When false, provisioning 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

Settlement currencies your sub-merchants can hold and withdraw (see How Connect Works). 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.com/api/connect/settings \
  -H "X-Inflow-Api-Key: $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.com/api/connect/settings \
  -H "X-Inflow-Api-Key: $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.

Did this page help you?