---
title: "Update a Merchant Configuration"
method: POST
path: "/merchant-configs/{id}"
tags: ["Merchant Configuration"]
---

# Update a Merchant Configuration

`POST /merchant-configs/{id}`

Update an existing Merchant Configuration by its ID

## Path parameters

- `id` string, required

## Request body

- UpdateMerchantConfigRequestDTO
  - `defaultPaymentMethodOptions` CreatePaymentMethodOptionsDTO
    - `card` CreateCardPaymentMethodOptionsDTO
      - `mode` 'cascade' | 'direct' — The processing mode for card payments
      - `gatewayProfile` string — Specific gateway profile to use, bypassing cascade routing. Required for `direct` processing and ignored otherwise
      - `cascade` string — The cascade to use for gateway routing. Required for `cascade` processing and ignored otherwise
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method for card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number — Delay in days before capture occurs. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method to use for recurring card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number — Delay in days before capture occurs for recurring card charges. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `paypal` CreatePaypalPaymentMethodOptionsDTO
      - `gatewayProfile` string — Gateway profile ID for PayPal processing
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method for PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number — Delay in days before capture occurs for PayPal payments. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method to use for recurring PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number — Delay in days before capture occurs for recurring PayPal payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `applePay` CreateApplePayPaymentMethodOptionsDTO
      - `gatewayProfile` string — Gateway profile ID for Apple Pay processing
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method for Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number — Delay in days before capture occurs for Apple Pay payments. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method to use for recurring Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number — Delay in days before capture occurs for recurring Apple Pay payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Default capture method to use for this payment. If provided on a payment method level, it will override this value.
    - `captureDelay` number — Default capture delay to use for this payment. If provided on a payment method level, it will override this value.
    - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' — Capture method to use for recurring charges on this payment. If provided on a payment method level, it will override this value.
    - `recurringCaptureDelay` number — Capture delay to use for recurring charges on this payment. If provided on a payment method level, it will override this value.
  - `displayCurrency` 'usd' | 'eur' | 'gbp' | 'cad' | 'aud' | 'pln' | 'czk' | 'sek' | 'dkk' — Display currency to be used for the merchant. If not provided, will be set to USD.
  - `timezone` string — Timezone for the merchant, in IANA format. If not provided, will be set to UTC.
  - `enableRecurringPaymentBundling` boolean — Whether to bundle recurring payments for the same customer into a single charge.
  - `preferCaptureAtNight` boolean — Whether delayed captures should be scheduled at night in the shopper's local time, derived from the UTC offset their browser reported at authorization. Captures fall back to the standard schedule when no offset was reported.
  - `lineItemDescriptionSource` 'price' | 'product' — Which name a line item description defaults to when none is supplied on the request: the name of the price it references, or the name of the product behind that price. If not provided, will be set to price.
  - `relatedSubscriptionWindowMinutes` integer — How many minutes apart two of the same customer's subscriptions may be created and still be presented as related in the dashboard. 0 disables the time window; subscriptions sharing a setup payment are grouped regardless. If not provided, will be set to 0.

## Response `200`

OK

- MerchantConfigDTO
  - `createdAt` string, date-time, required — The date and time when the entity was created.
  - `updatedAt` string, date-time, nullable, required — The date and time when the entity was last updated.
  - `metadata` object, nullable — Metadata used by merchants to store additional information about the entity.
  - `id` string, required — The unique identifier of the merchant configuration
  - `defaultPaymentMethodOptions` object, required — Default payment method options for the merchant.
    - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual', required — Capture method for the payment. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
    - `captureDelay` number, nullable, required — Delay in days before capture occurs. Only applicable when captureMethod is 'automaticDelayed'.
    - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method to use for recurring charges. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
    - `recurringCaptureDelay` number, nullable, required — Delay in days before capture occurs for recurring charges. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `card` object, nullable — Card-specific processing options
      - `mode` 'cascade' | 'direct', required — The processing mode for card payments
      - `gatewayProfile` object, nullable, required — Specific gateway profile to use, bypassing cascade routing. Only present if `mode` is `direct`
        - `createdAt` string, date-time, required — The date and time when the entity was created.
        - `updatedAt` string, date-time, nullable, required — The date and time when the entity was last updated.
        - `metadata` object, nullable — Metadata used by merchants to store additional information about the entity.
        - `id` string, required — ID of the Gateway Profile
        - `active` boolean, required — Whether the gateway profile is active and available for processing
        - `title` string, required — Title of the Gateway Profile
        - `integration` 'stripe' | 'adyen' | 'checkout' | 'paypal', required — Associated Gateway Integration
        - `environment` 'live' | 'test' | 'null', nullable, required — The environment the gateway profile operates in
        - `supportedPaymentMethods` string[], required — Supported payment methods for the Gateway Profile
      - `cascade` object, nullable, required — The cascade to use for gateway routing. Only present if `mode` is `cascade`
        - `createdAt` string, date-time, required — The date and time when the entity was created.
        - `updatedAt` string, date-time, nullable, required — The date and time when the entity was last updated.
        - `metadata` object, nullable — Metadata used by merchants to store additional information about the entity.
        - `id` string, required — The unique identifier of the cascade
        - `name` string, required
        - `description` string, nullable, required
        - `active` boolean, required — Whether the cascade is active and available for routing
        - `algorithm` 'roundRobin' | 'weightedRoundRobin' | 'priorityQueue', required — The algorithm used for gateway selection. Available options: roundRobin, weightedRoundRobin, priorityQueue
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method for card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number, nullable, required — Delay in days before capture occurs. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method to use for recurring card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number, nullable, required — Delay in days before capture occurs for recurring charges. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `paypal` object, nullable — PayPal-specific processing options
      - `mode` 'cascade' | 'direct', required — Processing mode for PayPal payments, will always be `direct`
      - `gatewayProfile` object, required — Gateway profile ID for PayPal processing
        - `createdAt` string, date-time, required — The date and time when the entity was created.
        - `updatedAt` string, date-time, nullable, required — The date and time when the entity was last updated.
        - `metadata` object, nullable — Metadata used by merchants to store additional information about the entity.
        - `id` string, required — ID of the Gateway Profile
        - `active` boolean, required — Whether the gateway profile is active and available for processing
        - `title` string, required — Title of the Gateway Profile
        - `integration` 'stripe' | 'adyen' | 'checkout' | 'paypal', required — Associated Gateway Integration
        - `environment` 'live' | 'test' | 'null', nullable, required — The environment the gateway profile operates in
        - `supportedPaymentMethods` string[], required — Supported payment methods for the Gateway Profile
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method for PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number, nullable, required — Delay in days before capture occurs for PayPal payments. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method to use for recurring PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number, nullable, required — Delay in days before capture occurs for recurring PayPal payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
    - `applePay` object, nullable — Apple Pay-specific processing options
      - `mode` 'cascade' | 'direct', required — Processing mode for Apple Pay payments, will always be `direct`
      - `gatewayProfile` object, required — Gateway profile ID for Apple Pay processing
        - `createdAt` string, date-time, required — The date and time when the entity was created.
        - `updatedAt` string, date-time, nullable, required — The date and time when the entity was last updated.
        - `metadata` object, nullable — Metadata used by merchants to store additional information about the entity.
        - `id` string, required — ID of the Gateway Profile
        - `active` boolean, required — Whether the gateway profile is active and available for processing
        - `title` string, required — Title of the Gateway Profile
        - `integration` 'stripe' | 'adyen' | 'checkout' | 'paypal', required — Associated Gateway Integration
        - `environment` 'live' | 'test' | 'null', nullable, required — The environment the gateway profile operates in
        - `supportedPaymentMethods` string[], required — Supported payment methods for the Gateway Profile
      - `captureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method for Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request.
      - `captureDelay` number, nullable, required — Delay in days before capture occurs for Apple Pay payments. Only applicable when captureMethod is 'automaticDelayed'.
      - `recurringCaptureMethod` 'automatic' | 'automaticDelayed' | 'manual' | 'null', nullable, required — Capture method to use for recurring Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request.
      - `recurringCaptureDelay` number, nullable, required — Delay in days before capture occurs for recurring Apple Pay payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'.
  - `displayCurrency` 'usd' | 'eur' | 'gbp' | 'cad' | 'aud' | 'pln' | 'czk' | 'sek' | 'dkk', required — Display currency for the merchant. Used in statistics.
  - `timezone` string, required — Timezone for the merchant, in IANA format.
  - `enableRecurringPaymentBundling` boolean, required — Whether to bundle recurring payments for the same customer into a single charge.
  - `preferCaptureAtNight` boolean, required — Whether delayed captures should be scheduled at night in the shopper's local time, derived from the UTC offset their browser reported at authorization. Captures fall back to the standard schedule when no offset was reported.
  - `lineItemDescriptionSource` 'price' | 'product', required — Which name a line item description defaults to when none is supplied on the request: the name of the price it references, or the name of the product behind that price.
  - `relatedSubscriptionWindowMinutes` number, required — How many minutes apart two of the same customer's subscriptions may be created and still be presented as related in the dashboard. 0 disables the time window; subscriptions sharing a setup payment are grouped regardless.

## Other responses

- `202` — The merchant is entitled but its environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to a merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.
- `400` — The request was rejected. `type` is `invalid_request_error` when the request itself is at fault — `errors` then lists every problem found, with field-attributable entries prefixed by the field’s path; `invalid_state_error` when the request was well-formed but the resource is not in a state that allows it; or `payment_error` when the payment was refused by the issuer or processor.
- `401` — No API key was supplied, or the key is not valid. `type` is `authentication_error`.
- `403` — The API key is valid but lacks the permission this operation requires. `type` is `permission_error`.
- `404` — No resource exists with the requested identifier. `type` is `not_found_error`.
- `409` — `type` is `conflict_error`. The supplied `X-Idempotency-Key` was already used with a different request body (`code` is `idempotency_conflict`, and retrying will not help), or the resource is being modified by another in-flight request (`code` is `resource_locked`, and retrying with backoff will).
- `429` — Too many requests. The rate limit is applied per client across all operations. `type` is `rate_limit_error`.
- `500` — The request could not be completed because of an unexpected error. `type` is `api_error`.
- `504` — The request exceeded the processing time limit and was abandoned. `type` is `api_error` and `code` is `timeout` — unlike a plain 500 the request may still have taken effect, so retry with the same idempotency key rather than blindly.

---

[API](https://skmtc.dev/odus/apis/odus-orchestration-api.md) · [All operations](https://skmtc.dev/odus/apis/odus-orchestration-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/odus/odus-orchestration-api/revisions/d5fdcba31576/schema)
