# POST /api/merchants/{merchantId}/processor-profiles

Adds a new processor profile to the merchant.

Example body:
```
{
  "isActive": true,
  "paymentTypes": [ { "name": "Credit" } ],
  "merchantProcessorConfiguration": {
    "processorId": "tsys",
    "processorFieldValues": [ { "key": "merchantId", "value": "888000001234" } ]
  }
}
```
An active profile must declare at least one payment type, otherwise the request is rejected with
a validation error. Optionally send `If-Match: "<concurrencyStamp>"` for optimistic
concurrency (409 on a stale stamp).

**Operation ID:** `POST_api_merchants_merchantId_processor-profiles`

## Authorization

Requires: Merchants.Merchants.Create, merchant scope.

Required permissions:
- `Merchants.Merchants.Create`

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| merchantId | path | yes | string(uuid) | The merchant id. |
| suppressNulls | query | no | boolean | If true, omit properties with null values. |

## Request Body

The profile to add. The `processorProfileId` is server-assigned; any value supplied on the
body is ignored. Discover the processor's required field keys via
`GET /api/processors/{processorId}/config-schema` (or fetch a ready-to-fill skeleton from
`.../config-schema/template`).

**Content type:** `application/json`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

**Content type:** `text/json`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

**Content type:** `application/*+json`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

## Responses

### 200

OK

**Content type:** `text/plain`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

**Content type:** `application/json`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

**Content type:** `text/json`

Schema: `PhoeniXGateMerchantsProcessorProfileDto`

### 403

Forbidden

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 401

Unauthorized

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 400

Bad Request

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 404

Not Found

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 501

Not Implemented

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 500

Internal Server Error

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### default

The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

## See also

- [All documentation](https://docs.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
