---
title: "Update a Gateway Profile"
method: POST
path: "/gateway-profiles/{id}"
tags: ["Gateway Profiles"]
---

# Update a Gateway Profile

`POST /gateway-profiles/{id}`

Update an existing Gateway Profile with the provided details

## Path parameters

- `id` string, required

## Request body

- UpdateGatewayProfileRequestDTO
  - `title` string — Display name for the gateway profile
  - `active` boolean — Whether the gateway profile is active
  - `configuration` union — Gateway integration configuration (integrationMode cannot be changed for PayPal)
    - GatewayIntegrationStripeConfigurationDTO
      - `type` 'stripe', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `secretKey` string, required — Stripe secret key
      - `webhookSecret` string — The secret for validating webhooks (Stripe -> Developer -> Webhooks)
    - GatewayIntegrationAdyenConfigurationDTO
      - `type` 'adyen', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `merchantAccount` string, required — Adyen merchant account name
      - `apiKey` string, required — Adyen API key
      - `liveUrlPrefix` string — The prefix of the live endpoint URL (Adyen Dashboard -> Developers -> API URLs -> Prefix)
      - `webhookSecret` string — The webhook hmac for validating webhooks (Adyen Dashboard -> Developers -> Webhooks -> Edit -> HMAC Key)
    - GatewayIntegrationCheckoutConfigurationDTO
      - `type` 'checkout', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `secretKey` string, required — Checkout secret key
      - `processingChannel` string, required — Checkout.com processing channel ID
      - `webhookSecret` string — The secret for validating webhooks
      - `merchantCity` string — Merchant city for billing descriptor
    - UpdateGatewayIntegrationPaypalConfigurationDTO
      - `type` 'paypal', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `clientId` string, required — PayPal application client ID
      - `secretKey` string, required — PayPal application secret key
      - `webhookId` string — The Webhook ID from PayPal Dashboard (used for signature verification)
      - `collectShippingAddress` boolean — Whether to collect shipping address from PayPal. Only available for Vault integration mode.

## Response `200`

OK

- GatewayProfileDTO
  - `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
  - `configuration` union, required — Gateway-specific configuration. The schema depends on the `integration` field: use StripeConfigDTO for Stripe, AdyenConfigDTO for Adyen, CheckoutConfigDTO for Checkout, and PaypalConfigDTO for PayPal.
    - object
      - `type` 'stripe', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `secretKey` string, required — Stripe secret key
      - `webhookSecret` string, nullable — Webhook signing secret for signature verification
    - object
      - `type` 'adyen', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `apiKey` string, required — Adyen API key
      - `merchantAccount` string, required — Adyen merchant account name
      - `liveUrlPrefix` string, nullable — Live endpoint URL prefix
      - `webhookSecret` string, nullable — Webhook HMAC key for signature verification
    - object
      - `type` 'checkout', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `secretKey` string, required — Checkout.com secret key
      - `processingChannel` string, required — Checkout.com processing channel ID
      - `webhookSecret` string, nullable — Webhook signing secret for signature verification
      - `merchantCity` string, nullable — Merchant city for billing descriptor
    - object
      - `type` 'paypal', required — Gateway integration type
      - `environment` 'live' | 'test', required — Gateway environment
      - `clientId` string, required — PayPal application client ID
      - `secretKey` string, required — PayPal application secret key
      - `integrationMode` 'vault' | 'billingAgreement', required — Integration mode: "vault" uses PayPal Vaulting, "billingAgreement" uses Billing Agreements API
      - `collectShippingAddress` boolean, required — Whether to collect shipping address from PayPal. Only available for Vault integration mode.
      - `webhookId` string, nullable — PayPal webhook ID for signature verification

## 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)
