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
| Method | Path | Description |
|---|---|---|
GET | /api/connect/settings | Returns your marketplace's current settings. |
PATCH | /api/connect/settings | Updates 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
| Field | Type | Default | Self-service |
|---|---|---|---|
marketplaceFeeRatePer1000 | int (0–10000) | 0 | yes |
marketplaceFeeFixedInCents | int (≥ 0) | 0 | yes |
marketplaceFeeBearer | "SUB_MERCHANT" | "MARKETPLACE" | "SUB_MERCHANT" | yes |
marketplaceFeeRatePer1000
marketplaceFeeRatePer1000This 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_000Important — easy to misread. Despite the name, the rate is not value/1000. The actual divisor is 100,000. Examples:
Value Effective 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
marketplaceFeeFixedInCentsFlat fee, in cents, added on top of the rate-based component. Charged on every payin.
marketplaceFeeBearer
marketplaceFeeBearerDecides 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
| Field | Type | Default | Self-service |
|---|---|---|---|
payoutWindowHours | int (0–720) | 24 | yes |
payoutWindowMaxReleaseRate | int (0–1000) | 1000 | yes |
payoutWindowHours
payoutWindowHoursCooldown, 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
payoutWindowMaxReleaseRateHow 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 topayoutWindowHours = 0).500— 50% of in-window payins are releasable now, the rest waits for the window.
Payout default fields
| Field | Type | Default | Self-service |
|---|---|---|---|
payoutFeeBearer | "MARKETPLACE" | "SUB_MERCHANT" | "MARKETPLACE" | yes |
autoCreateWallets | bool | true | yes |
payoutFeeBearer
payoutFeeBearerDefault bearer of network/payout fees when sub-merchants withdraw. Can be overridden per-payout on the payout request.
autoCreateWallets
autoCreateWalletsWhen 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
| Field | Type | Default | Self-service |
|---|---|---|---|
enabledCurrencies | ("USDC" | "EURC")[] | ["USDC", "EURC"] | yes |
defaultRedirectUrlKyc | string | null | null | yes |
enabledCurrencies
enabledCurrenciesStablecoins your sub-merchants can receive and withdraw. Cannot be empty.
defaultRedirectUrlKyc
defaultRedirectUrlKycDefault 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. Whenfalse, all Connect routes return403 CONNECT_DISABLEDand merchant routes called withX-On-Behalf-Ofreturn403 ON_BEHALF_CONNECT_DISABLED.paused— short-lived compliance hold. Whentrue, all Connect routes return403 MARKETPLACE_PAUSEDand on-behalf-of routes return403 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
| HTTP | When |
|---|---|
400 | marketplaceFeeRatePer1000 > 10000, negative fixed fee, payoutWindowHours > 720, enabledCurrencies empty, unknown enum, or connectEnabled / paused present in the body. |
401 | Missing 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. |
Updated about 19 hours ago