---
title: "POST /api/me/merchants/:id/config/confirm"
method: POST
path: "/api/me/merchants/{id}/config/confirm"
tags: ["merchant_config"]
---

# POST /api/me/merchants/:id/config/confirm

`POST /api/me/merchants/{id}/config/confirm`

## Request

- Base URL: `https://api.aifinpay.io`
- URL: `https://api.aifinpay.io/api/me/merchants/{id}/config/confirm`
- 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

## Request body

- MerchantConfigConfirmation
  - `preview_id` string, required
  - `digest` string, required
  - `revision` string, required
  - `context_revision` string, required
  - `idempotency_key` string, required

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