---
title: "Modify Merchant Specific Pricing"
method: PUT
path: "/transaction-and-account-fees"
tags: ["Transaction and Account Fees"]
---

# Modify Merchant Specific Pricing

`PUT /transaction-and-account-fees`

This operation enables the consumer to update their merchant-specific pricing setup, including transaction charges, account fees, or both. This endpoint can be utilized for the following purposes,
1. To expire all existing active and future effective dated merchant-specific charges and create new future effective dated merchant-specific charges. In this scenario, the user must provide a list of default recordIdNumbers from the current tariff assigned to the merchant along with the fee values that need to be overridden.
2. To expire all existing active and future effective dated merchant-specific charges and change the tariff assignment for the merchant, creating new future effective dated merchant-specific charges for the new tariff. In this case, the user must provide a list of default recordIdNumbers from the new tariff to be assigned to the merchant along with the fee values to be overridden. Note that if a merchant already has any future effective dated tariff change in place, adding another future effective tariff change is not permitted.

## Headers

- `Content-Type` 'application/json' | 'application/json;charset=UTF-8', required
- `FSV-Interaction-Id` string, required
- `Environment` string, required
- `Institution-Number` string, required
- `Internal-Merchant-Id` string, required

## Request body

- TransactionAccountFeesUpdate — Modify merchant specific transaction charges and account fees.
  - `accountFees` TransactionAccountFeesUpdateAccountFees
    - `serviceContractIndex` string, required — The service contract defines the processing rules for a merchant. The service contract for a new member of an existing group has to be the same as the service contract for a parent client. For a list of valid Service Contracts use Acquirer Profile API GET service-contracts endpoint when creating or editing an existing merchant profile.
    - `clientTariffIndex` string, required — The client tariff specifies the set of account fees applicable to the merchant. To obtain a list of valid codes, use the Acquirer Profile API's get "reference-data" endpoint with the query parameter "classification" set to "clientTariffIndex." If the user wants to update the currently assigned fees, the existing client tariff assigned to the merchant must be provided. Should the user provide a different client tariff that is not currently assigned to the merchant, the system will assign this new client tariff to the merchant, provided that it is one of the valid client tariffs defined for the institution.
    - `existingMsfFeeExpiryDate` string — The expiry date to be assigned to existing active and future effective dated merchant specific fees if any exists, formatted as YYYYMMDD. This date must be equal to or greater than the current institution posting date. If this field is not provided, it will default to the current institution posting date.
    - `individualFees` AccountFeesOverride[] — Provide list of record id numbers to override account fees.
      - `recordIdNumber` string, required — Default record id number of the client account fee to be overwritten. The corresponding id should belong to the client tariff (provided in the field 'clientTariffIndex' in 'acountFees' object) selected on the merchant contract details and the merchant accounts with account currency assigned to the merchant. For a list of valid codes use 'service-contracts/{serviceContractIndex}/account-fees' GET endpoint in Acquirer Profile API.
      - `effectiveDate` string — The date on which the fee becomes effective. Format YYYYMMD. This date must be greater than the 'existingMsfFeeExpiryDate' within the 'accountFees' object. If this field is not provided, it will default to the current institution posting date plus one day.
      - `expiryDate` string — The expiry date for the fee. Format YYYYMMDD. This date must be equal to or greater than the 'effectiveDate'. If this field is not provided, it will default to 99991231.
      - `feeMode` boolean — Indicates if the fee is being generated (true) or suppressed (false). Suppressing a fee in effect is the same as setting the fee's pricing to zero, i.e. no fee will be charged. If this field is not provided, it will default to true.
      - `feePercentage` string — Fee percentage to be applied. Valid value as per the Format NNNNNN.NNNN
      - `feeBase` string — Fee base to be applied. Valid value as per the Format NNNNNN.NNNN
      - `feeMinimum` string — Fee minimum to be applied. Valid value as per the Format NNNNNN.NNNN
      - `feeMaximum` string — Fee minimum to be applied. Valid value as per the Format NNNNNN.NNNN
      - `triggerHighValue` string — Indicates the upper threshold limit set in terms of value of transaction that is used as a trigger for fee calculation. If populated, it will override current active value to the merchant specific value submitted on payload. This field is allowed to be overridden as merchant specific only for certain account fees.
      - `triggerVolumeHigh` string — Indicates the upper threshold limit set in terms of volume of transactions that is used as a trigger for fee calculation. If populated, it will override current active volume to the merchant specific volume submitted on payload. This field is allowed to be overridden as merchant specific only for certain account fees.
  - `transactionCharges` TransactionAccountFeesUpdateTransactionCharges
    - `serviceContractIndex` string, required — The service contract defines the processing rules for a merchant. The service contract for a new member of an existing group has to be the same as the service contract for a parent client. For a list of valid Service Contracts use Acquirer Profile API GET service-contracts endpoint when creating or editing an existing merchant profile.
    - `existingMsfFeeExpiryDate` string — The expiry date to be assigned to existing active and future effective dated merchant specific fees if any exists, formatted as YYYYMMDD. This date must be equal to or greater than the current institution posting date. If this field is not provided, it will default to the current institution posting date.
    - `tierStructureIndex` string — If tier pricing is active on the institutions this field indicates which is the Tier Structure assigned to the merchant, if not in use for the institution use 000=N/A for this field. For a list of valid codes use Acquirer Profile API get reference-data endpoint with query parameter classification equal tierStructureIndex when creating or editing an existing merchant profile.
    - `individualFees` TransactionChargesOverride[] — Provide list of record id numbers to override transaction charges.
      - `serviceIndex` string, required — Code id for the acquiring service. Valid values depends on the institution configuration. For a list of valid codes use Acquirer Profile API get /service-contracts/{serviceContractIndex}/services-tariff.
      - `merchantTariffIndex` string, required — The merchant tariff specifies the set of transaction charges applicable to the merchant for each acquiring service. To access a list of valid codes, use the Acquirer Profile API's GET 'service-contracts/{serviceContractIndex}/services-tariff' endpoint. If the user intends to update the currently assigned fees, they must provide the existing merchant tariff for the specific acquiring service (i.e., serviceIndex) assigned to the merchant. If the user submits a different merchant tariff that is not currently assigned to the merchant for that specific acquiring service, the system will assign this new merchant tariff to the merchant, as long as it is one of the valid merchant tariffs defined for the institution.
      - `recordIdNumber` string, required — Default record id number of the transaction fee to be overwritten. The corresponding id should belong to the merchant tariff (provided in the field 'merchantTariffIndex') selected on the merchant acquiring service assigned to the merchant. For a list of valid record ids use 'service-contracts/{serviceContractIndex}/service-transaction-charges' GET endpoint in Acquirer Profile API.
      - `effectiveDate` string — The date on which the fee becomes effective. Format YYYYMMD. This date must be greater than the 'existingMsfFeeExpiryDate' within the 'transactionCharges' object. If this field is not provided, it will default to the current institution posting date plus one day.
      - `expiryDate` string — The expiry date for the fee. Format YYYYMMDD. This date must be equal to or greater than the 'effectiveDate'. If this field is not provided, it will default to 99991231.
      - `feeMode` boolean — Indicates if the fee is being generated (true) or suppressed (false). Suppressing a fee in effect is the same as setting the fee's pricing to zero, i.e. no fee will be charged. If this field is not provided, it will default to true.
      - `feePercentage` string — Fee percentage to be applied. Valid value as per the Format NNNNNN.NNNN
      - `feeBase` string — Charge base amount to be applied.
      - `feeMinimum` string — Minimum charge amount.
      - `feeMaximum` string — Maximum charge amount.
      - `chargeCurrencyCode` string — The ISO 4217 currency code for the charge base, minimum and maximun amounts. Values are restricted by institution configuration. For a list of valid codes refer accountCurrency classification in reference-data endpoint in Acquirer Profile API.

## Response `200`

OK

- InlineResponse400 — An API response. The API response will be either a `SUCCESS` or an `ERROR`. A partial success or warning scenario will be treated as a Success with embedded messages in the meta data. A full success may not have messages. The API response will contain at least one of the following top level members."
  - `meta` MetaType — Supplementary information about the data.
    - `paging` PagingMetaType — Map containing pagination related information about data.
      - `count` integer — Total number of records present in system which can be retrieved.
      - `totalPages` integer — Total number of pages with maximum limit taken into account.
      - `currentOffset` integer — Current offset used in request.
      - `currentNumberOfRetrievedRecords` integer — Current number of retrieved records.
      - `maxLimit` integer — Maximum limit of records that can be retrieved.
      - `hasMoreRecords` boolean — Indicates if there are more records available.
      - `pageNumber` integer — Current page number.
    - `sorting` SortingMetaType — Map containing sorting related information about data.
      - `sort` string — Indicates the elements the current data is sorted with and the direction of sorting.
    - `messages` ErrorType[] — Messages related to request processing or response data - any additional information or warnings to be returned in the case of a successful API call.
      - `id` string — Generated message identifier for particular request, helping to locate server logs.
      - `code` string, required — Machine readable, unique code of the message related to particular case within operation execution. For complete list of codes please refer to API portal, messages page.
      - `title` string, required — Short description of the error. Not for displaying purposes.
      - `detail` string — Provides additional low-level details about the error to assist with troubleshooting. Not for displaying purposes.
      - `source` SourceType — Object containing references to the source of the message.
        - `pointer` string — Indicates the element in the request document which caused the error.
        - `parameter` string — Indicates which query parameter caused the error.
        - `header` string — Indicates which header caused the error.
  - `data` object[] — "Contains the primary data to be returned as the API response. Use this object only when respnse type is an array. It will not be returned in case of error."
  - `errors` ErrorType[] — "Contains one or more error messages and is mutually exclusive with the data item. This will not be returned in success scenarios."
    - `id` string — Generated message identifier for particular request, helping to locate server logs.
    - `code` string, required — Machine readable, unique code of the message related to particular case within operation execution. For complete list of codes please refer to API portal, messages page.
    - `title` string, required — Short description of the error. Not for displaying purposes.
    - `detail` string — Provides additional low-level details about the error to assist with troubleshooting. Not for displaying purposes.
    - `source` SourceType — Object containing references to the source of the message.
      - `pointer` string — Indicates the element in the request document which caused the error.
      - `parameter` string — Indicates which query parameter caused the error.
      - `header` string — Indicates which header caused the error.
  - `links` LinksType — Contains the links to retrieve the resources exposed as part of this API.
    - `self` string — The link to the primary resource being retrieved in the request.
    - `first` string — This is to provide the link to retrieve the first record/page. This SHOULD be used in case server provides pagination of the resource.
    - `last` string — This is to provide the link to retrieve the last record/page. This SHOULD be used in case server provides pagination of the resource.
    - `prev` string — This is to provide the link to retrieve the previous record/page. This SHOULD be used in case server provides pagination of the resource.
    - `next` string — This is to provide the link to retrieve the last record. This SHOULD be used in case server provides pagination of the resource

## Other responses

- `400` — Invalid request
- `401` — Authorization error
- `403` — Forbidden error i.e. Consumer token credentials are valid but lack of permissions to do this action.
- `404` — Record does not exist
- `500` — Internal Server Error

---

[API](https://skmtc.net/fiserv/apis/acquirer-profile-in-design.md) · [All operations](https://skmtc.net/fiserv/apis/acquirer-profile-in-design/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fiserv/acquirer-profile-in-design/revisions/dd7ef6ce81a1/schema)
