---
title: "PATCH /api/me/merchants/:id/gateways/:gateway"
method: PATCH
path: "/api/me/merchants/{id}/gateways/{gateway}"
tags: ["merchant_config"]
---

# PATCH /api/me/merchants/:id/gateways/:gateway

`PATCH /api/me/merchants/{id}/gateways/{gateway}`

## Request

- Base URL: `https://api.aifinpay.io`
- URL: `https://api.aifinpay.io/api/me/merchants/{id}/gateways/{gateway}`
- Auth: API key in cookie `aifinpay_session`

Owned configuration control-plane. Fresh ownership, Cache-Control no-store. Strict raw UTF8 JSON <=1MiB/depth12/duplicate and unknown keys rejected. Preview does not probe DNS/HTTP. Atomic marker publication; ambiguous completion resolves by idempotency/owned operation lookup. No settlement/network activation.

## Path parameters

- `id` string, required: Server-issued identifier
- `gateway` string, required

## Request body

- object
  - `id` string
  - `name` string
  - `slug` string
  - `type` 'hosted_x402'
  - `enabled_intent` boolean
  - `priority` integer
  - `upstream_base_url` string, uri
  - `description` string
  - `metadata` object
  - `chains` string[]
  - `payment_assets` string[]
  - `resources` object[]
    - `id` string, required
    - `route_pattern` string, required
    - `type` 'page' | 'api' | 'dataset' | 'mcp_tool' | 'product', required
    - `name` string, nullable
    - `description` string
    - `active` boolean
    - `paywall_enabled` boolean
    - `currency` 'USD'
    - `billing_unit` 'request'
    - `unit_weight` integer
    - `price_usd` string
    - `tier` 'standard' | 'complex' | 'premium' | 'null', nullable
    - `chains` string[]
    - `payment_assets` string[]
    - `daily_unit_limit` integer, nullable
    - `fallback_gateway_id` string, nullable
  - `revision` string, required
  - `context_revision` string, required
  - `default_gateway_id` string, nullable
  - `legacy_gateway_id` string, nullable

## Response `200`

Owned authoritative sanitized result.

- MerchantConfigCommitted
  - `operation_id` string, required
  - `revision` string, required
  - `config` object, required
    - `format` 'aifinpay-merchant-config', required
    - `version` 1, required
    - `revision` string, required
    - `router_slug` string, nullable, required
    - `default_gateway_id` string, nullable, required
    - `legacy_gateway_id` string, nullable, required
    - `gateways` object[], required
      - `id` string, required
      - `name` string, required
      - `slug` string, required
      - `type` 'hosted_x402', required
      - `enabled_intent` boolean, required
      - `priority` integer, required
      - `upstream_base_url` string, uri, required
      - `description` string, required
      - `metadata` object, required
      - `chains` string[], required
      - `payment_assets` string[], required
      - `resources` object[], required
        - `id` string, required
        - `route_pattern` string, required
        - `type` 'page' | 'api' | 'dataset' | 'mcp_tool' | 'product', required
        - `name` string, nullable
        - `description` string
        - `active` boolean
        - `paywall_enabled` boolean
        - `currency` 'USD'
        - `billing_unit` 'request'
        - `unit_weight` integer
        - `price_usd` string
        - `tier` 'standard' | 'complex' | 'premium' | 'null', nullable
        - `chains` string[]
        - `payment_assets` string[]
        - `daily_unit_limit` integer, nullable
        - `fallback_gateway_id` string, nullable
      - `origin_secret_set` boolean, required
      - `readiness` object, required
        - `ready` boolean, required
        - `reason` string
        - `state` 'PENDING_DNS' | 'DNS_VALID' | 'DNS_INVALID' | 'REMOVED', required
    - `context_revision` string, required
    - `capabilities` object, required
      - `chains` string[], required
      - `payment_assets` string[], required

## Other responses

- `400`: Safe failure without partial active configuration.
- `401`: Safe failure without partial active configuration.
- `403`: AIFP-* error envelope. See backend/server.js safe error handler.
- `404`: Absent or not currently owned; generic existence-safe response.
- `409`: Safe failure without partial active configuration.
- `413`: Safe failure without partial active configuration.
- `429`: Safe failure without partial active configuration.
- `503`: Safe failure without partial active configuration.
- `5XX`: AIFP-* error envelope. See backend/server.js safe error handler.

---

[API](https://skmtc.dev/aifinpay/apis/aifinpay-api.md) · [All operations](https://skmtc.dev/aifinpay/apis/aifinpay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aifinpay/apis/aifinpay-api/revisions/a9a644bb441d?raw)
